Bonjour
Je souhaite mettre en place routeur à base d'iptables entre 2 connexion ADSL mais je débute sur le routage
Enfaite, je suis perdu au moment de rediriger le traffic vers le net, j'arrive bien à faire mon filtrage via la table MANGLE
Le marquage des paquets ce passe bien
Mais je t'arrive pas établir a la connexion dans l'autre sens,
Donc déjà le routage :
ETH0 : réseau local (en 2.0/24)
ETH1: ADSL 1, IP : 213.XXX.X7.62, passerelle : 213.XXX.X7.61 (relais pour le traffic SSH, icmp à venir pop3s et imaps)
ETH2 : ADSL 2, IP 192.168.10.2, passrelle : 192.168.10.1 (relais pour le reste du traffic, mais pour les test, HTTP et HTTPS
j'ai crée différente table de routage (N°11 pour ETH1, et N°12 pour ETH2) :
ADSL1
Code :
1 2 3 4 5 6
|
ip route add table 11 default via 213.XXX.X7.61
ip route add table 11 192.168.2.0/24 dev eth0
ip route add table 11 213.XXX.X7.0/24 dev eth1
ip route add table 11 192.168.10.0/24 dev eth2
ip rule add fwmark 11 table 11 |
ADSL 2
Code :
1 2 3 4 5 6
|
ip route add table 12 default via 192.168.10.1
ip route add table 12 192.168.2.0/24 dev eth0
ip route add table 12 213.XXX.X7.0/24 dev eth1
ip route add table 12 192.168.10.0/24 dev eth2
ip rule add fwmark 12 table 12 |
ma table de routage par défaut
Code :
1 2 3 4 5 6
|
default via 192.168.10.1 dev eth2
192.168.2.0/24 dev eth0 src 192.168.2.4
192.168.10.0/24 dev eth2 src 192.168.10.2
192.168.20.0/24 dev eth4 src 192.168.20.1
213.XXX.X7.0/24 dev eth1 src 213.XXX.X7.62 |
un petit
ip rule show
Code :
1 2 3 4 5 6 7
|
0: from all lookup local
32763: from all fwmark 0xd lookup 13
32764: from all fwmark 0xc lookup 12
32765: from all fwmark 0xb lookup 11
32766: from all lookup main
32767: from all lookup default |
Maintenant mon fichier IPTABLE
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
# FLUSH ALL
iptables-X
iptables-F
iptables-Z
# SET DEFAULT POLICY
iptables-P INPUT DROP
iptables-P FORWARD DROP
iptables-P OUTPUT ACCEPT
# FLUSH ALL CHAINS
iptables-F FORWARD
iptables-F INPUT
iptables-F OUTPUT
iptables-F -t nat
iptables-F -t mangle
iptables-X -t nat
iptables-X -t mangle
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT |
Les régles Mangle et le marquage des paquets
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
## SELECTIVE ROUTING
# PREROUTING
iptables -t mangle -A PREROUTING -m state --state ESTABLISHED,RELATED -j CONNMARK --restore-mark
iptables -t mangle -A OUTPUT -m state --state ESTABLISHED,RELATED -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -i eth1 -m state --state NEW -j CONNMARK --set-mark 11
iptables -t mangle -A PREROUTING -i eth2 -m state --state NEW -j CONNMARK --set-mark 12
iptables -t mangle -A PREROUTING -m connmark --mark 11 -j MARK --set-mark 11
iptables -t mangle -A PREROUTING -m connmark --mark 12 -j MARK --set-mark 12
iptables -t mangle -A PREROUTING -m state --state NEW -m connmark ! --mark 0 -j CONNMARK --save-mark
# ETH1
#iptables -t mangle -A PREROUTING -i eth0 -m state --state NEW -p tcp --dport 80 -j CONNMARK --set-mark 11
iptables -t mangle -A PREROUTING -i eth0 -m state --state NEW -p tcp --dport 22 -j CONNMARK --set-mark 11
iptables -t mangle -A PREROUTING -i eth0 -m state --state NEW -p icmp -j CONNMARK --set-mark 11
#ETH2
iptables -t mangle -A PREROUTING -i eth0 -m state --state NEW -p tcp --dport 54 -j CONNMARK --set-mark 12
iptables -t mangle -A PREROUTING -i eth0 -m state --state NEW -p tcp --dport 80 -j CONNMARK --set-mark 12
iptables -t mangle -A PREROUTING -i eth0 -m state --state NEW -p tcp --dport 445 -j CONNMARK --set-mark 12 |
Voila ou j'en suis, j'ai essayer divers truc pour le forward, mais je pense que je me trompe
Code :
1 2 3 4 5 6 7 8
|
# FORWARD
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth2 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -s $R_LAN -j ACCEPT
iptables -A FORWARD -i eth0 -o eth2 -s $R_LAN -j ACCEPT |
Code :
1 2 3 4 5 6 7
|
# POSTROUTING
#iptables -t mangle -A POSTROUTING -o eth1 -j SNAT --to-source 213.XXX.X7.62
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
#iptables -t mangle -A POSTROUTING -o eth2 -j SNAT --to-source 192.168.10.2
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE |
Quand je regarde ou passe les paquets :
Code :
1 2 3 4 5 6 7
|
Chain FORWARD (policy DROP 207 packets, 16162 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- eth1 eth0 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
163 152K ACCEPT all -- eth2 eth0 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- eth0 eth1 192.168.2.0/24 0.0.0.0/0 connmark match 0xb
119 11017 ACCEPT all -- eth0 eth2 192.168.2.0/24 0.0.0.0/0 connmark match 0xc |
Pour mes régles Mangles (la mise en page est top dsl)
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
*** MANGLE ***
Chain PREROUTING (policy ACCEPT 1468 packets, 343K bytes)
pkts bytes target prot opt in out source destination
774 232K CONNMARK all -- * * 0.0.0.0/0 .0.0.0/0 state RELATED,ESTABLISHED CONNMARK restore
12 1080 CONNMARK all -- eth1 * 0.0.0.0/0 0.0.0.0/0 state NEW CONNMARK set 0xb
0 0 CONNMARK all -- eth2 * 0.0.0.0/0 0.0.0.0/0 state NEW CONNMARK set 0xc
48 3710 MARK all -- * * 0.0.0.0/0 0.0.0.0/0 connmark match 0xb MARK set 0xb
262 162K MARK all -- * * 0.0.0.0/0 0.0.0.0/0 connmark match 0xc MARK set 0xc
12 1080 CONNMARK all -- * * 0.0.0.0/0 0.0.0.0/0 state NEW connmark match !0x0 CONNMARK save
3 132 CONNMARK tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 CONNMARK set 0xb
165 13860 CONNMARK icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 state NEW CONNMARK set 0xb
0 0 CONNMARK tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:54 CONNMARK set 0xc
3 132 CONNMARK tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 CONNMARK set 0xc
0 0 CONNMARK tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:445 CONNMARK set 0xc
Chain OUTPUT (policy ACCEPT 560 packets, 138K bytes)
pkts bytes target prot opt in out source destination
560 138K CONNMARK all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED CONNMARK restore |
et enfin le NAT
Code :
1 2 3 4 5 6
|
*** NAT ***
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * eth1 0.0.0.0/0 0.0.0.0/0
3 132 MASQUERADE all -- * eth2 0.0.0.0/0 0.0.0.0/0 |
Voila,
Donc on vois bien que le http passe bien dans mes régles et sort par eth2 (qui est aussi mon interface par defaut)
Parcontre, lorsque je fais des ping sur 8.8.8.8 par exemple ou que je test une connexion ssh sur un de nos serveur externe
Les paquets sont bien marquer
Code :
1 2
|
3 132 CONNMARK tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 CONNMARK set 0xb |
Mais il ne sont pas router vers ETH1,
Fin je suis perdu, je ne vois pas trop ou je me suis tromper et je pense que mes régles sont trop géneral pour la partie forward et postrouting