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