1 votes

Transfert de port simple

J'ai cherché, cherché et essayé plusieurs choses différentes, mais je n'ai pas réussi à trouver une solution.

Voici ma situation :

nœud1 a 2 interfaces : eth0 (IP publique : 56.X.X.X), et eth1 (IP privé : 10.X.X.X)

nœud2 a 2 interfaces : eth0 (IP publique : 56.X.X.X), et eth1 (IP privé : 10.X.X.X)

Chaque nœud fonctionne sous Ubuntu 10.04 LTS.

A partir de cette configuration nœud1 et nœud2 ont tous accès à l'internet mais se connectent également les uns aux autres en privé par le biais d'un réseau local.

Ce que je veux accomplir, c'est avoir nœud1 être un pare-feu et serveur proxy para nœud2 et de nombreux autres nœuds que je déploierai plus tard. nœud1 aura le seul accès à l'internet car je vais désactiver eth0 sur nœud2 de sorte que nœud2 n'a accès qu'à ce qui se trouve sur son réseau privé.

En clair, comment puis-je faire suivre un www demande qui arrive dans nœud1 et sur eth0 et le transmettre à nœud2 en utilisant eth1 tandis que nœud2 fera office de serveur web pour cette requête ?

Après avoir suivi l'exemple ci-dessous, voici mon iptables -L :

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             10.182.43.193       state NEW tcp dpt:www 
ACCEPT     tcp  --  anywhere             10.182.43.193       state NEW tcp dpt:https 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Voici mon iptables -t nat -L

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       all  --  anywhere             firewall            to:10.182.43.193 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

1voto

dmourati Points 24230

Je vais attribuer des adresses IP arbitraires pour que ce soit clair. Remplacez-les par vos adresses réelles.

node1 eth0 : 56.0.0.1 node1 eth1 : 10.0.0.1 node2 eth0 : 56.0.0.2 node2 eth1 : 10.0.0.2

Si le nœud 1 doit être votre machine de passerelle/pare-feu, vous devrez lancer l'opération suivante iptables pour gérer le NAT/forwarding.

# iptables config on node1
# set up a destination nat from 56.0.0.2 to 10.0.0.2
iptables -t nat -A PREROUTING -d 56.0.0.2 -j DNAT --to-destination 10.0.0.2
# open port 80/443
iptables -A INPUT -d 10.0.0.2 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 
iptables -A INPUT -d 10.0.0.2 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
# related/established traffic
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 

Vous n'avez pas besoin que eth0 sur le noeud2 soit configuré. Vous devez plutôt configurer l'adresse IP 56.0.0.2 sur le noeud 1 pour l'utiliser de manière unique pour mapper le noeud 2.

0 votes

Quand je cours iptables -A PREROUTING -d 56.0.0.2 -j DNAT --to-destination 10.0.0.2 Je reçois une erreur : "iptables : No chain/target/match by that name". Des idées ?

0 votes

Désolé, je me suis trompé. Je copie de ma configuration en direct qui a le nom de la table sur une ligne différente pour toute la section. Vous devez ajouter -t nat à cette ligne. Je vais mettre à jour ci-dessus.

0 votes

J'ai essayé exactement ce que vous avez suggéré, et j'ai appliqué les iptables et confirmé l'application, et maintenant j'essaie de http://{firewall-ip} et ça se bloque. Avez-vous des idées à ce sujet ? Cela semble toujours être le problème, peu importe ce que j'ai essayé.

0voto

Jacek Konieczny Points 3507

Si le nœud 2 est censé avoir sa propre adresse IP, alors vous n'avez pas besoin de la redirection de port, vous avez besoin du proxy ARP et du routage.

Sur le nœud 2, désactivez eth0 et ajoutez l'IP publique à toute autre interface, par exemple :

ip addr add 56.0.0.2/32 dev eth1

Sur le noeud1, configurez la route vers le noeud2 via eth1 :

ip route add 56.0.0.2 dev eth1

et activez les réponses proxy ARP sur eth0 (ainsi node1 répondra aux requêtes ARP pour node2) :

echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp

Ainsi, tout le trafic vers le nœud 2 passera par le nœud 1. Vous pouvez ensuite configurer des règles iptables pour le limiter comme tout autre trafic transféré. Cela n'effectue pas de proxy au niveau de l'application, mais vous pouvez toujours le faire avec les règles iptables.

La définition de ces paramètres dépend généralement de la distribution, je ne connais pas assez Ubuntu, mais le paramètre 'proxy_arp' peut probablement être défini dans /etc/sysctl.conf :

net.ipv4.conf.eth0.proxy_arp = 1

L'adresse IP sur eth1 de node2 doit être ajoutée à la configuration de l'interface (mais sans masque de réseau ! ou avec une longueur de préfixe '/32'), il doit aussi y avoir un endroit pour mettre les routes statiques (/etc/sysconfig/static-routes sur mon système).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X