iptables
Grzegorz Sójka
wujek w yen.ipipan.waw.pl
Śro, 7 Gru 2005, 11:41:50 CET
Sytuacja wygląda tak:
Jest sobie getway do internetu gdzie
ppp0 x.x.x.x p-t-p y.y.y.y - interface zewnętrzny
eth0 192.168.1.1/24 - sieć wewnetrzna
ppp1 192.168.1.1 p-t-p 192.168.2.1 tunel PPP-over-SSH do "lepszego
świata" (lepsze łącza)
Oczywiście na ppp0 jest MASQUERADA a default gw to y.y.y.y.
Cel który chcę osiągnąc to sytuacja w której trafic pochcodzący z sieci
wewnętrznej zamiast być maskowany i wysyłany w świat przez y.y.y.y był
najpierw routowany na drugi koniec tunelu a dopiero tam maskowany i
wysyłany na zewnątrz. W tym celu napisałem:
iptables -t mangle -A FORWARD -s 192.168.1.0/24 -d '!' 192.168.0.0/16 -j
ROUTE --gw 192.168.1.1 --oif ppp1
Efekt jest taki, ze pakiet icmp wysłany z sieci wew. adres 192.168.1.2
do kompa na zewnątrz rzeczywiście routowany jest przez 192.168.2.1.
Niestey, odpowiedź wchodząca przez ppp1 (tcpdump -i ppp1) ginie gdzieś w
kernelu i nie wychodzi przez eth0 (tcpdump -i eth0). Przy tym wszystkim
ping 192.168.2.1 wysłany z 192.168.1.2 działa jak trzeba.
Z początku myślałem, że to może firewall ale wywalenie wszystkich tabel
oprócz mangle tak aby powyższa regółka była jedyną w iptables nic nie
dało. Co ciekawsze zrobiłem ekspoeryment. Zamiast powyższej regułki
dodałem do tabeli routingu wpis mówiący, że droga do wspomianego hosta
zewnętrznego wiedzie przez tunel i wtedy było wszystko ok.
Pomocy! Siedze nad tym i kombinuje i nic mądrego nie moge wymyślić a
czacha dymi!
Pozdrówka
Grzesiek
Więcej informacji o liście dyskusyjnej pld-users-pl