[Linux] Deux accès WAN

Le
JKB
Bonjour à tous,

La suite de mes problèmes de routage ;-)

Concidérons l'architecture suivante :



LAN
|
|
|
192.168.1.254
Serveur 1 (192.168.0.1)-(192.168.0.2) Serveur 2
| |
| 213.215.42.70
|
213.215.42.69

eth0: 213.215.42.70
eth0:1: 213.215.42.71

eth0:8: 213.215.42.78
eth1: 192.168.0.1
eth2: 192.168.1.254
eth3: 213.215.42.69

J'aimerais que les machines du LAN soient accessibles par eth0:x.
Le trafic en provenance du serveur 2 doit être routé par eth3.
ssh répond sur eth0 et eth3. Tout le trafic généré localement par
Serveur 1 routé par défaut par eth3.

J'ai presque réussi Il me manque le routage par défaut du trafic
généré localement par eth3. Mon script de configuration est le
suivant :

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# liens entre Serveur 1 et Serveur 2
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT

# eth3
iptables -A OUTPUT -o eth3 -p tcp -m tcp --dport domain -j ACCEPT
iptables -A OUTPUT -o eth3 -p udp -m udp --dport domain -j ACCEPT

# eth2
iptables -A OUTPUT -o eth2 -p tcp -m tcp --dport ssh -j ACCEPT

# Passerelle pour Serveur2
iptables -A FORWARD -i eth1 -o eth3 -p tcp -m tcp --dport domain -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth3 -j MASQUERADE

route add default gw 213.215.42.65 dev eth0
ip rule add from 213.215.42.69 lookup local_traffic priority 101
ip rule add fwmark 1 table local_traffic priority 102
ip route add default via 213.215.42.65 dev eth3 table local_traffic
ip route flush cache

echo 0 > /proc/sys/net/ipv4/conf/eth3/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/eth3/arp_ignore

# Tentative pour router le trafic local par eth3 (route par défaut sur
# eth0)
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -jMARK --set-mark 1
iptables -t mangle -A OUTPUT -s 213.215.42.70 -jRETURN
iptables -t mangle -A OUTPUT -jMARK --set-mark 1

J'ai l'impression que mon problème se situe au niveau des deux
dernières lignes, mais je ne trouve pas Des idées ?

Cordialement,

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JKB
Le #873108
Le 08-10-2007, à propos de
[Linux] Deux accès WAN,
JKB écrivait dans fr.comp.reseaux.ip :
Bonjour à tous,

La suite de mes problèmes de routage ;-)

Concidérons l'architecture suivante :



LAN
|
|
|
192.168.1.254
Serveur 1 (192.168.0.1)-------------------------(192.168.0.2) Serveur 2
| |
| 213.215.42.70
|
213.215.42.69

eth0: 213.215.42.70
eth0:1: 213.215.42.71
...
eth0:8: 213.215.42.78
eth1: 192.168.0.1
eth2: 192.168.1.254
eth3: 213.215.42.69

J'aimerais que les machines du LAN soient accessibles par eth0:x.
Le trafic en provenance du serveur 2 doit être routé par eth3.
ssh répond sur eth0 et eth3. Tout le trafic généré localement par
Serveur 1 routé par défaut par eth3.

J'ai presque réussi... Il me manque le routage par défaut du trafic
généré localement par eth3. Mon script de configuration est le
suivant :

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# liens entre Serveur 1 et Serveur 2
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT

# eth3
iptables -A OUTPUT -o eth3 -p tcp -m tcp --dport domain -j ACCEPT
iptables -A OUTPUT -o eth3 -p udp -m udp --dport domain -j ACCEPT

# eth2
iptables -A OUTPUT -o eth2 -p tcp -m tcp --dport ssh -j ACCEPT

# Passerelle pour Serveur2
iptables -A FORWARD -i eth1 -o eth3 -p tcp -m tcp --dport domain -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth3 -j MASQUERADE

route add default gw 213.215.42.65 dev eth0
ip rule add from 213.215.42.69 lookup local_traffic priority 101
ip rule add fwmark 1 table local_traffic priority 102
ip route add default via 213.215.42.65 dev eth3 table local_traffic
ip route flush cache

echo 0 > /proc/sys/net/ipv4/conf/eth3/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/eth3/arp_ignore

# Tentative pour router le trafic local par eth3 (route par défaut sur
# eth0)
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -jMARK --set-mark 1
iptables -t mangle -A OUTPUT -s 213.215.42.70 -jRETURN
iptables -t mangle -A OUTPUT -jMARK --set-mark 1

J'ai l'impression que mon problème se situe au niveau des deux
dernières lignes, mais je ne trouve pas... Des idées ?


On avance, on avance... J'ai remplacé les trois dernières lignes par :

iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -d 192.168.0.0/24 -j RETURN
iptables -t mangle -A OUTPUT -d 192.168.1.0/24 -j RETURN
iptables -t mangle -A OUTPUT -s 213.215.42.70 -j RETURN
iptables -t mangle -A OUTPUT -j MARK --set-mark 1

Lorsque je lance une résolution de nom (par exemple), je vois bien
que les chaînes me marquent les paquets générés localement.
J'aimerais savoir où ces paquets passent, parce qu'un tcpdump sur
eth3 ne montre rien ! Si j'ouvre les ports sur eth0, je m'aperçois
que tout passe par eth0 ! Ce que je ne comprends pas bien, c'est que
si je vire les cibles RETURN, les paquets à destination du réseau
local n'arrivent plus à destination, preuve que la dernière règle
fait bien quelque chose...

En un mot comme en cent... AU SECOURS ! ;-)

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.

Publicité
Poster une réponse
Anonyme