Mam problem z kierowaniem ruchu na dwa łącza z wykorzystaniem markowania pakietów, będę wdzięczny za pomoc lub wskazówki.
Ale do początku. Tak wygląda konfiguracja sieci PRZED całą operacją.
Kod: Zaznacz cały
interfejsy sieciowe:
root@brama:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:30:4f:24:ed:e1
inet addr:62.xxx.xxx.126 Bcast:62.xxx.xxx.127 Mask:255.255.255.240
eth1 Link encap:Ethernet HWaddr 00:08:02:f7:d5:cb
inet addr:10.211.1.44 Bcast:10.211.1.255 Mask:255.255.255.0
eth2 Link encap:Ethernet HWaddr 00:11:95:d8:61:b3
inet addr:95.yyy.yyy.30 Bcast:95.yyy.yyy.31 Mask:255.255.255.248
bramy dla łącz:
eth1 62.xxx.xxx.126 -> GW 62.xxx.xxx.113
eth2 95.yyy.yyy.30 -> GW 95.yyy.yyy.24
routing:
root@brama:~# ip ro
95.yyy.yyy.24/29 dev eth2 proto kernel scope link src 95.yyy.yyy.30
62.xxx.xxx.112/28 dev eth0 proto kernel scope link src 62.xxx.xxx.126
10.211.1.0/24 dev eth1 proto kernel scope link src 10.211.1.44
127.0.0.0/8 dev lo scope link
default via 62.xxx.xxx.113 dev eth0 metric 1
root@brama:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
95.yyy.yyy.24 0.0.0.0 255.255.255.248 U 0 0 0 eth2
62.xxx.xxx.112 0.0.0.0 255.255.255.240 U 0 0 0 eth0
10.211.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 62.xxx.xxx.113 0.0.0.0 UG 1 0 0 eth0
ip rule:
root@brama:~# ip ru ls
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
natowanie:
root@brama:~# cat /etc/rc.d/rc.firewall | grep SNAT
$IPT -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 62.xxx.xxx.126
$IPT -t nat -A POSTROUTING -o eth2 -j SNAT --to-source 95.yyy.yyy.30
Kod: Zaznacz cały
dodane tablice routingu T1 T2:
root@brama:~# cat /etc/iproute2/rt_tables
255 local
254 main
253 default
0 unspec
1 T1
2 T2
tablica T1 dla eth0 62.xxx.xxx.126:
root@brama:~# ip ro ls t T1
95.yyy.yyy.24/29 dev eth2 scope link
62.xxx.xxx.112/28 dev eth0 scope link src 62.xxx.xxx.126
10.211.1.0/24 dev eth1 scope link
127.0.0.0/8 dev lo scope link
default via 62.xxx.xxx.113 dev eth0
tablica T2 dla eth2 95.yyy.yyy.30:
root@brama:~# ip ro ls t T2
95.yyy.yyy.24/29 dev eth2 scope link src 95.yyy.yyy.30
62.xxx.xxx.112/28 dev eth0 scope link
10.211.1.0/24 dev eth1 scope link
127.0.0.0/8 dev lo scope link
default via 95.yyy.yyy.25 dev eth2
ip rule, m.in. mrakowanie 0x2 skierowane do tablicy T2
[ ip rule add fwmark 2 table T2 ]
root@brama:~# ip ru
0: from all lookup local
32763: from all fwmark 0x2 lookup T2
32764: from 95.yyy.yyy.30 lookup T2
32765: from 62.xxx.xxx.126 lookup T1
32766: from all lookup main
32767: from all lookup default
tablica main:
root@brama:~# ip ro ls t main
95.yyy.yyy.24/29 dev eth2 proto kernel scope link src 95.yyy.yyy.30
62.xxx.xxx.112/28 dev eth0 proto kernel scope link src 62.xxx.xxx.126
10.211.1.0/24 dev eth1 proto kernel scope link src 10.211.1.44
127.0.0.0/8 dev lo scope link
default via 62.xxx.xxx.113 dev eth0
markowanie pakietów:
root@brama:~# cat /etc/rc.d/rc.firewall | grep CONNMARK
iptables -t mangle -A PREROUTING -m connmark --mark 2 -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -s 10.211.1.216 -j CONNMARK --set-mark 2
Mogę skierować hosta 10.211.1.216 na łącze eth2 podając w nacie adres źródłowy
Kod: Zaznacz cały
iptables -t nat -A POSTROUTING -s 10.211.1.216 -j SNAT --to-source 95.yyy.yyy.30
Kod: Zaznacz cały
iptables -t nat -A POSTROUTING -s 10.211.1.216 -o eth2 -j SNAT --to-source 95.yyy.yyy.30
Samo Markowanie pakietów działa poprawnie widać przyrost markowanych pakietów
Kod: Zaznacz cały
root@brama:~# iptables -t mangle -L PREROUTING -n -v
Chain PREROUTING (policy ACCEPT 253K packets, 120M bytes)
pkts bytes target prot opt in out source destination
896 189K CONNMARK all -- * * 0.0.0.0/0 0.0.0.0/0 connmark match 0x2 CONNMARK restore
762 181K CONNMARK all -- * * 10.211.1.216 0.0.0.0/0 CONNMARK xset 0x2/0xffffffff
Kod: Zaznacz cały
root@brama:~# iptables -t nat -L POSTROUTING -n -v
Chain POSTROUTING (policy ACCEPT 195 packets, 10182 bytes)
pkts bytes target prot opt in out source destination
1669 108K SNAT all -- * eth0 0.0.0.0/0 0.0.0.0/0 to:62.233.175.126
0 0 SNAT all -- * eth2 0.0.0.0/0 0.0.0.0/0 to:95.50.201.30
Podejrzewam że pakiety z hosta 10.211.1.216 nie są kierowane na wyjście interfejsem eth2 z powodu złych tras lub zasad routingu. Dlaczego? ... albo jak to dalej diagnozować?