Sdílené připojení k internetu na síti - problém se SNAT, DNAT a MASQUARADE - částečně vyřešeno - že by chyba v kernelu nebo iptables ?
n_petr na seznam.cz
n_petr na seznam.cz
Čtvrtek Leden 26 16:43:23 CET 2006
Podařilo se mi částečně vyřešet diskutovaný problém.
Postup:
---odstranění předešlých zběsilostí---
echo "0" > /proc/sys/net/ipv4/ip_forward
iptables -t mangle -F
iptables -t nat -F
iptables -F
reboot
---uvedení do provozu - použijeme buď a) nebo b)---
a) iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.4 -j SNAT
--to-source 10.10.2.6
b) iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE -s 192.168.2.4
echo "1" > /proc/sys/net/ipv4/ip_forward
A teď to hlavní. Pokud chceme provádět s iptable_nat další věci musíme
ji vždy vypnout a zapnout, sama se nechytne! Myslíte, že by to mohla být
chyba v iptables nebo kernelu?
Pokud jsme zavedli SNAT:
---zastavení iptables---
iptables -t nat -D POSTROUTING -o eth0 -s 192.168.2.4 -j SNAT
--to-source 10.10.2.6
modprobe -r iptable_nat iptable_filter
---spuštění iptables---
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.4 -j SNAT
--to-source 10.10.2.6
Pokud jsme zavedli MASQUERADE:
---zastavení iptables---
iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE -s 192.168.2.4
modprobe -r ipt_MASQUERADE iptable_nat iptable_filter
---spuštění iptables---
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE -s 192.168.2.4
Pokud jsme zavedli SNAT a chceme použít "iptables -t nat -F":
---zastavení iptables---
echo "0" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
modprobe -r iptable_nat iptable_filter
---spuštění iptables---
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.4 -j SNAT
--to-source 10.10.2.6
echo "1" > /proc/sys/net/ipv4/ip_forward
Pokud jsme zavedli MASQUERADE a chceme použít "iptables -t nat -F":
---zastavení iptables---
echo "0" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
modprobe -r ipt_MASQUERADE iptable_nat iptable_filter
---spuštění iptables---
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE -s 192.168.2.4
echo "1" > /proc/sys/net/ipv4/ip_forward
Jde o to, že při použití "iptables -t nat -F", je potřeba ještě provézt
"echo "0" > /proc/sys/net/ipv4/ip_forward". Při vynechání některého
kroku nebo porušení sledu kroků může nastat nefunkčnost forwardování.
Děkuji za komentáře, Petr Novák
PS: Nezdá se mi, že by toto chování bylo standardní. Pokud ano, bylo by
dobré to zařadit do man stránek (zkoušeno na Ubuntu/Kubuntu 5.10 a
Debian Etch a Sid).
Další informace o konferenci Linux