DD-WRT: Comment autoriser la redirection de port à s'appliquer aux demandes provenant de l'intérieur du LAN?

26

Avec le firmware d'origine de mon routeur, la redirection de port a été définie du port 80 vers le serveur du LAN, que j'ai utilisé en conjonction avec un service DNS dynamique externe.

J'ai maintenant mis à niveau vers DD-WRT et hélas, la redirection de port ne fonctionne que pour les demandes à l'adresse IP externe de l' extérieur du LAN. De l'intérieur du LAN, je ne peux accéder au serveur que par son IP interne.

Comment puis-je obtenir l'IP externe (et donc le nom de domaine connecté à l'IP externe dynamique) pour être correctement accessible également depuis l' intérieur du LAN?

Je préfère découvrir comment y parvenir avec les définitions DD-WRT standard, mais utiliser par exemple iptables n'est pas hors de question.

UrEl
la source

Réponses:

25

Il semble que ce soit un bogue dans les versions récentes de DD-WRT.

Utilisez iptables:

iptables -t nat -I POSTROUTING -o br0 -s 192.168.1.0/24 -d 192.168.1.0/24 -j MASQUERADE

(changez votre sous-réseau en fonction de votre LAN spécifique)

Depuis http://hax.at/text/41

UrEl
la source
Ce n'était PAS évident! a fonctionné comme un charme :)
Jay
J'ai défini cela comme une commande de démarrage et redémarré le routeur, mais aucun changement - ne fonctionne toujours pas.
Timwi
A travaillé pour moi. Merci beaucoup. Maintenant, je peux accéder à mes IP attribuées aux ddns depuis mon réseau interne sur mes routeurs DD-WRT.
nusi
3
Cela a fonctionné pour moi, mais seulement si je l'ai enregistré comme script de pare-feu et non comme script de démarrage.
Jarett Millard
@Timwi - Comme Jarett l'a mentionné, moi aussi j'ai dû mettre cela dans la section "Pare-feu", pas dans la section "Démarrage".
dan_linder
4

Dans l'esprit de la réponse d'UrEl: Un iptablesscript auto-configurable qui peut simplement être copié-collé sans autre adaptation peut être trouvé sur le forum DD-WRT :

insmod ipt_mark 
insmod xt_mark 
iptables -t mangle -A PREROUTING -i ! `get_wanface` -d `nvram get wan_ipaddr` -j MARK --set-mark 0xd001 
iptables -t mangle -A PREROUTING -j CONNMARK --save-mark 
iptables -t nat -A POSTROUTING -m mark --mark 0xd001 -j MASQUERADE 

Comme indiqué par Jarett, cela doit être utilisé comme script de pare-feu et non comme script de démarrage.

krlmlr
la source
Cette solution a mieux fonctionné pour moi que celle d'UrEI car cette dernière a rendu mon téléphone SIP incapable de se connecter.
jamix
Quelle est la différence entre cela et la règle de @ UrlEl (en plus d'obtenir dynamiquement l'interface wan et l'adresse IP)?
Piotr Dobrogost
1

Essayez de désactiver "Filtrer la redirection NAT WAN" dans l'onglet Sécurité-> Pare-feu. De la description de l'aide:

Filtrer la redirection NAT WAN Empêche les hôtes du LAN d'utiliser l'adresse WAN du routeur pour contacter les serveurs du LAN (qui ont été configurés à l'aide de la redirection de port).

Tobias Plutat
la source
Il était déjà désactivé (par défaut). D'autres idées?
UrEl
C'est bizarre - sur mon réseau local, ce paramètre fait exactement la différence. Quelle version utilisez-vous? Peut-être devriez-vous revérifier votre redirection de port - peut-être y a-t-il un problème que vous avez manqué (peut-être que les adresses IP ont changé entre votre accès externe et interne, interrompant ainsi les redirection de port?)
Tobias Plutat
J'utilise 16994. En attendant, j'ai trouvé ceci: hax.at/text/41
UrEl
Oh, comme j'aime les versions buggy DD-WRT! (L'établissement d'une connexion à partir de clients prenait un certain temps ... jusqu'à ce que je découvre que les noms d'hôte dans les baux statiques ne devraient contenir que des caractères alphabétiques. Arrgh!)
Tobias Plutat
1

Il semble que votre vrai problème soit que vous ayez besoin de deux vues de l'enregistrement DNS A. En externe, votre DNS dynamique pointe vers votre IP publique de réseau qui transfère le port 80 à l'hôte local. Tout ce que vous devez faire est d'ajouter une entrée dans dnsmasq avec un enregistrement A pointant le même nom de domaine complet vers l'adresse IP de l'hôte local pour vos hôtes locaux. Vous pouvez le faire en ajoutant ce qui suit sur la page Services / Options dnsmasq supplémentaires:

 address=/www.mydomain.com./xx.xx.xx.xx

remplacez simplement les xx par l'ip local et le nom de domaine par votre nom de domaine. N'oubliez pas le point de fin ou il y ajoutera votre nom de domaine local.

concierge système
la source
C'est ce que j'ai fait et ça marche! Mais est-il possible de le faire pour certains ports? Cela ne fonctionnera que si vous transférez des ports vers un seul ordinateur. Si vous transférez des ports vers plusieurs ordinateurs, cela ne fonctionnera pas ...
rinogo