Portál AbcLinuxu, 11. května 2025 10:33

Dotaz: IPTABLES: Paketům se nechce do tunelu

22.2.2009 20:50 Hrabosh | skóre: 26 | blog: HBlog | Brno
IPTABLES: Paketům se nechce do tunelu
Přečteno: 458×
Odpovědět | Admin
Zdravím vás ...

... potřeboval bych pomoct s jednou iptablovinou. Situace je následující:

SERVER: V něm je síťovka eth0 s IP: 192.168.1.254 a nainstalovaný OpenVPN server, který vytváří tap0 zařízení na 192.168.4.1.

KLIENT: V něm je síťovka eth0 s IP: 192.168.1.5, spojená metalickou sítí s eth0 v serveru. Když na klientovi spustím OpenVPN klienta, vytvoří se tunel a na klientovi vznikne zařízení tap0 s IP 192.168.4.2, přes které jdou pakety na defaultní gw 192.168.4.1 ( a odtud do Internetu ).

PROBLÉM: Veškerý provoz do Internetu i se serverem na adrese 192.168.4.1 funguje. Já samozřejmě nechci, aby pakety chodily mezi klientem a serverem mimo tunel. Proto klient zahazuje všechny odchozí i příchozí pakety na své eth0 krom těch, které jdou na portu 1924 (openvpn). Problém je, že v té metalické síti jsou i jiné počítače ( 192.168.1.1 a 192.168.1.10 ), které z KLIENTA nevidím, protože pakety k nim jsou směrovány přímo na jeho eth0 (tzn. jdou mimo tunel) a tímpádem zahozeny. Potřeboval bych je tedy nějak nasměrovat do toho tunelu a nějak zajistit to, aby pakety pro 192.168.1.5, které přijdou z metalické sítě, byly také na straně serveru nasměrovány do tunelu.

Nevítě nekdo, jak na to ? Zkoušel jsem na KLIENTOVI něco jako:

iptables -A FORWARD -o eth0 -d 192.168.1.0/24 -i tap0 -j ACCEPT

ale bez úspěchu. Ani iptraf na zařízení tap0 žádné takto přesměrované pakety neviděl.
To jsem psal já ... to není bordel, to je modulární!
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.2.2009 21:34 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Sice je to hodně absurdní, ale budiž... V každém případě budeš muset na SERVERu provoz s KLIENTa natovat. Jinak ti z počítačů 192.168.1.1 a 192.168.1.10 budou pakety chodit na KLIENTa přímo. No a na klientovi můžeš buď úplně vyhodit routu na síť 192.168.1.0/24 a nechat jen routu na hosta 192.168.1.254 (SERVER), nebo ponechat routu na celou síť a přidat specifické routy na hosty 192.168.1.1 a 192.168.1.10 (routy na hosta se vyhodnocují před méně specifickou routou na síť).
22.2.2009 23:30 Hrabosh | skóre: 26 | blog: HBlog | Brno
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu
OK, dík. Jak se to přesně dělá si už snad někde najdu.

Jinak mám v záloze ještě jedno řešení: Rozjet OpenVPN i na počítačich 192.168.1.1 a 192.168.1.10. Komunikace mezi všemi se pak bude realizovat v siti 192.168.4.0/24 a routování bude jednodušší ... doufám.
To jsem psal já ... to není bordel, to je modulární!
23.2.2009 07:06 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu
Jen takový dotaz: k čemu vlastně tohle vůbec potřebuješ? Pokud ti to za to opravdu stojí, vyplatí se spíš koupit switch co umí VLANy a hodit ho mezi server a ostatní klienty.
23.2.2009 08:58 Hrabosh | skóre: 26 | blog: HBlog | Brno
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu

Tak já se vám teda pokusím popsat celou situaci.

V příloze vidíte schéma mé domácí sítě. To Wi-Fi spojení mezi serverem a notebookem je Ad-Hoc a tudíž nepodporuje WPA. Proto jsem zvolil OpenVPN - coby zapezepčení toho Wi-Fi spojení. Problém byl v tom, že když jsem byl na Wi-Fi-ně tak notebook komunikoval se serverem z jiné IP, než když byl ntbook v dockině a tímpádem na drátové síti.

Takže když jsem si z drátové sítě třeba připojil NFS z nějakého počítače v místní síti ) a pak ten notebook vytáhl z dokiny a jel na Wi-Fi tak jsem ty NFS disky nemohl používat. Stejně tak obráceně - disky připojené na Wi-Fi nešly na drátové síti ... proto jsem přemýšlel jak zařídit, aby měl ten notebook pořád stejnou IP adresu, ať je připojenej bezdrátem, nebo normálně.

Napadlo mě udělat to tak, že i spojení po místní drátové síti bude v tunelu. DebServer ( na kterým běží OpenVPN server ) tak přijme spojení buď od klienta z IP 10.0.0.1, nebo 192.168.1.5 - vytvoří tunel a na notebooku vzniken zařízení tap0 s IP 192.168.4.2. Všechna komunikace se bude realizovat přes tap0, protože to má pořád stejnou IP, at je notebook připojenej vzduchem nebo drátama.

Zatím to funguje dobře - NFS disky připojené z DebServeru přes zařízení tap0 na serveru ( tedy: mount 192.168.4.1:/mnt/nfs ) fungují at je ntbook připojenej jak chce. Ale na GentooOnAthlon a Holy z toho notebooku tunelem prostě nevidím - a to je ten problém. 

To jsem psal já ... to není bordel, to je modulární!
23.2.2009 09:20 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu
Pokud to chceš používat takhle, pak OK, řešení jsem popsal výše. Není to sice transparentní, ale budiž. Kdyby bylo na mně, pak bych se vykašlal na nějaké Ad-Hoc propojení notebooku se serverem, ale místo switche, který je na obrázku dole bych si pořídil Wi-Fi AP/bridge a bylo by to. Ať už by ses k němu připojil kabelem nebo přes wireless, pořád bys měl stejnou IP (nebo alespoň ze stejného rozsahu). Já mám doma Linksys WRT54GL a jsem spokojený :-) Sice je to investive řádu 1.500,- ale jsi bez starostí.
23.2.2009 17:43 Hrabosh | skóre: 26 | blog: HBlog | Brno
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu
Jasně, samozřejmě máš pravdu. Kdybych to instaloval někomu jinému, nebo se síťařinou živil, tak to tak nejspíš udělám. Ale doma mi nevadí si s tím trochu pohrát a vytvořit mírně nestandartní řešení :-)
To jsem psal já ... to není bordel, to je modulární!
kozzi avatar 22.2.2009 23:59 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dotaz? Proc zahazujes vse? Pokud te chapu tak jen nechces aby klient komunikoval se servrem primo? Tak zakaz jen to co chces a ne vsechno. Jinak celkove to co tu popisujes je dost zamtene :-D. Jo jinak to pravidlo s FORWARD, co od toho ocekavas? Za prve aby to melo smysl musis si FORWARDing zapnout a zadruhe, si nemyslim ze by ti to pomohlo.
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
23.2.2009 17:39 Hrabosh | skóre: 26 | blog: HBlog | Brno
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu
Zahazuju všechno, kromě dat na port 1194 - tzn. všechno krom tunelu. Právě proto, aby klient a server nekomunikoval přímo.

A od toho pravidla jsem očekával to, že vezme pakety, které chtějí odejít z rozhraní eth0 a pošle je do sítě 192.168.4.0/24 (tedy tunelem).
To jsem psal já ... to není bordel, to je modulární!
Josef Kufner avatar 23.2.2009 00:51 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu
Odpovědět | | Sbalit | Link | Blokovat | Admin
A ty se jim divíš... chodit tunelem, když můžou pobíhat hezky venku? ;-)

Na natování a podobné blbosti se vykašli. Mělo by stačit nastavit správně routování na klientovi tak, aby default routa šla na druhý konec tunelu. Aby ale mohlo být uskutečněno spojení se serverem, budeš muset vyrobit routu pro server místo stávající defaultní (stejná jen dest bude IP serveru místo 0.0.0.0).
Hello world ! Segmentation fault (core dumped)
23.2.2009 17:37 Hrabosh | skóre: 26 | blog: HBlog | Brno
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu
Nedivim, já bych tam taky nelezl :-)

Ale default routa jde na druhý konec tunelu. Proto taky funguje veškerý Internet apod. Ale pakety do síte 192.168.1.0/24 se neposílají defaultní routou, ale tou pro 192.168.1.0/24. Tady je moje routovací tabulka:
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.4.0     *               255.255.255.0   U     0      0        0 tap0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
10.0.0.0        *               255.0.0.0       U     0      0        0 eth1
loopback        *               255.0.0.0       U     0      0        0 lo
default         vor1.netbox.pri 0.0.0.0         UG    0      0        0 tap0
To jsem psal já ... to není bordel, to je modulární!
Josef Kufner avatar 23.2.2009 19:08 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu
Hm, to by fungovat mělo. Jak máš udělaný ten firewall? Neblokuješ si to tam?
Hello world ! Segmentation fault (core dumped)
23.2.2009 21:13 Hrabosh | skóre: 26 | blog: HBlog | Brno
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Už mi to funguje, děkuju všem za pomoc. Moje řešení:

1/ klientova rotuovací tabulka ted vypadá takto:
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.254  *               255.255.255.255 UH    0      0        0 eth0
192.168.4.0     *               255.255.255.0   U     0      0        0 tap0
10.0.0.0        *               255.0.0.0       U     0      0        0 eth1
loopback        *               255.0.0.0       U     0      0        0 lo
default         192.168.4.1   0.0.0.0         UG    0      0        0 tap0
Tzn. pakety pro 192.168.1.254 (ten tunel) jdou na eth0, ale všechny ostatní ze sítě 192.168.1.0/24 musí defaultní routou, čili do tunelu.

2/ Na serveru jsem přidal dvě pravidla:
$IPTABLES -A FORWARD -i $VPN_TUNEL -o $MISTNI_SIT  -j ACCEPT
$IPTABLES -A FORWARD -i $MISTNI_SIT -o $VPN_TUNEL  -j ACCEPT
Neboli - co přišlo na eth0, pošli i na tap0, co přišlo z tap0, pošli na eth0.

Nepingnu sice 192.168.1.254, ale to nevadí, protože na serveru můžu nastavit všechny služby tak, aby poslouchaly i na 192.168.4.1. Ale na 192.168.1.1 a 192.168.1.10 vidím ...
To jsem psal já ... to není bordel, to je modulární!
25.2.2009 11:38 JaRo
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu
>>$IPTABLES -A FORWARD -i $VPN_TUNEL -o $MISTNI_SIT -j ACCEPT
>>$IPTABLES -A FORWARD -i $MISTNI_SIT -o $VPN_TUNEL -j ACCEPT
>>Neboli - co přišlo na eth0, pošli i na tap0, co přišlo z tap0, pošli na eth0.

Zajímavé chápání jak funguje iptables. Ty pravidla pouze říkají akceptuj (propusť) pakety, které přišly interfacem x a po routování počítač opustí interfacem y, jinak pokračuj na další pravidlo v iptables. Rozhodně paket nepřesměrují na jiné rozhraní. Kam půjde, o to se stará použitá routovací tabulka (v systému může být více routovacích tabulek a lze pomoci pravidel vybrat, která se pro daný paket použije).

25.2.2009 12:39 Hrabosh | skóre: 26 | blog: HBlog | Brno
Rozbalit Rozbalit vše Re: IPTABLES: Paketům se nechce do tunelu

Ahá ... chápu. Ono mi to bez těch dvou řádků předtím nefungovalo ne proto, že by ty dva řádky způsobovaly to přesměrovávání, ale nejspíš proto, že ve FORWARD mám defaultní politiku nastavenou na DROP a těma příkazama jsem ty pakety povolil ...

To jsem psal já ... to není bordel, to je modulární!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.