Portál AbcLinuxu, 7. května 2025 22:10

Dotaz: OpenVPN - filtrování přenosu mezi klienty

9.5.2013 20:12 Bou
OpenVPN - filtrování přenosu mezi klienty
Přečteno: 790×
Odpovědět | Admin
Zdravím, mám OpenVPN server, ke kterému se připojuje X klientů. Nekteří klienti spolu potřebují komunikovat proto jsem povolil: client-to-client Vše bez poroblémů funguje, jenom bych potřeboval u jednoho klienta omezit přístup pouze na některé klienty. Pomocí iptables se mi daří omezit přístup jenom na server- i když nastavím politiku u INPUT i FORWARD na DROP a jediné pravidlo je, že nechám otevřený VPN port, na komunikaci mezi klienty to nemá vubec vliv.

Dá se komunikace na serveru nějakým způsobem filtrovat, nebo musím použít filtrování pomocí iptables u každého klienta?(což je značně nevýhodné)

Díky

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Zdeněk Zámečník avatar 9.5.2013 20:26 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj, teď střílím od boku, ale zkusil bych vypnout client-to-client a potom do iptables na serveru přidat pravidla ve stylu:
iptables -A FORWARD -i tap0 -s x.x.x.x -d y.y.y.y -j ACCEPT
iptables -A FORWARD -i tap0 -s x.x.x.x -d z.z.z.z -j ACCEPT
iptables -A FORWARD -i tap0 -s x.x.x.x -o tap0 -j REJECT
iptables -A FORWARD -i tap0 -o tap0 -j ACCEPT
Samozřejmostí je povolený IPv4 forward v sysctl.

Těmito pravidly bys měl zajistit, že klient s IP x.x.x.x může komunikovat s y.y.y.y a z.z.z.z a s žádným jiným.
9.5.2013 20:35 Bou
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Já myslel, že client-to-client tam (v configu serveru) musí být, aby na sebe klienti viděli....zítra vyzkouším, uvidím :-) Každpodápně díky za radu
9.5.2013 20:42 NN
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tipnu pravidlo:
 iptables -A FORWARD -i tun0 -o tun0 -s klient -d zakaz -j DROP
9.5.2013 20:58 Bou
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Ve FORWARD mám politiku DROP a není tam vubec žádné pravidlo. Jestli to dobře chápu, tak by se měl iptables všechny FORWARD pakety zahazovat- ale komunikace mezi klienty blokována není.
9.5.2013 21:00 Petr
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj,

Podle mne to spis zalezi, jaky typ adapteru pouzivas. Nezkousel jsem to, ale pokud bych mel strelit od pasu, tak:

Pokud pouzivas TAP adapter/zarizeni tak komunikace mezi klienty neni na urovni L3 ale L2, tudiz do toho iptables nemaji co mluvit (na vyjimky, jak iptables zasahuji do pravidel v L2 pri bridgovani ted nebudeme myslet, protoze to se tu primarne neresi). Pokud to chces omezit v tomto pripade, tak se zkus podivat na ebtables.

Pokud pouzivas TUN adapter/zarizeni tak komunikace mezi klienty je na urovni L3 a potom bys mel mit moznost tuto komunikaci pomoci iptables tvarovat.
9.5.2013 21:14 Bou
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Používám adapter TUN - přes to se mi to nedaří pomocí iptables filtrovat...
Zdeněk Zámečník avatar 9.5.2013 21:25 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
V tomto pripade vypni client-to-client a pouprav si mnou uvedena pravidla vyse (tapX -> tunX) a melo by ti to fungovat.
9.5.2013 21:33 Bou
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Díky moc, zítra vyzkouším...
10.5.2013 07:16 Bou
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Ahoj, pokud vypnu client-to-client, tak na sebe klienti nevidí, i když jsem přidal do iptables uvedená pravidla.
Zdeněk Zámečník avatar 9.5.2013 21:21 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
No myslim,ze toto je nejpresnejsi odpoved. Prave tim jsem si nebyl uplne jist, za jakych podminek dokazi iptables pracovat na L2. Me uz to nekolikrat vypeklo, kdyz se mi filtroval provoz prave na bridgi...
10.5.2013 08:52 Bou
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Odpovědět | | Sbalit | Link | Blokovat | Admin
Celá tahle věc na mě dělá dojem, že po vytvoření VPN tunelu komunikace přes server (samozřejmě myslím virtuální adaptér TUN/TAP) nechodí. Jako by klienti mezi sebou komunikovali přímo, bez FORWADRU přes server. V tom případě asi budu těžko na serveru něco filtrovat. Nebo se mýlím?
Zdeněk Zámečník avatar 10.5.2013 09:15 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Kdepak, pokud máš vypnutý client-to-client a routovaný interface (tun), tak bys měl být schopen plně "vládnout" veškerému provozu. Asi bych napřed zkusil přepnout na politiku ACCEPT pro všechny směry a zkusil znova. Potom případně prozkoumat nastavení kernelu nejlépe přes sysctl, mám na mysli nastavení okolo ipv4.forward, send_redirects, proxy_arp apod...

Tady máš důkaz, že to funguje.
10.5.2013 11:12 Bou
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Zajímavý článek, díky. Když ale vypnu client-to-client a dávám ping mezi klienty, tak se mi při použití tcpdump -v -n -i tun0 nic nevypíše. ipv4.forward má povolené, je ještě potřeba něco nastavit?
13.5.2013 17:24 Bou
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty

Vyřešeno- kdyby někdo řešil něco podbného:

Je potřeba vnutit ostatním klientům routu na server. Tj. do konfiguračního souboru serveru přidat například:

push "route 10.8.0.0. 255.255.255.0"

Potom skuteně veškerý porovoz mezi klienty chodí přes FORWARD a lze jej pomocí iptables filtrovat. Všem díky za rady a pomoc
10.5.2013 10:09 Jezus | skóre: 15 | Jablunkov
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Je to přesně tak jak píšeš. Pokud máš zaplou direktivu client-to-client, tak komunikace mezi klienty nevylézá do systému, ale OpenVPN si to managuje samo. client-to-client komunikaci nejsi schopen filtrovat na úrovni systémových iptables.

Takže buďto můžes ackeptovat tento fakt, nebo si klienty rozdělit do více OpenVPNek a pak mezi různými tun rozhraními už iptables použít.
10.5.2013 14:03 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Klidně to může být v jedné VPN, jen se to musí routovat.
10.5.2013 14:20 Bou
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Takže např. přiřadit jednomu klientovi (u kterého chci filtrovat pakety) IP adresu z jiného rozsahu (např: 10.8.1.0 místo původního 10.8.0.0) potom dát server příslušnou routu:
ip route add 10.8.1.0/24 via 10.8.0.1 
A client-to-client v tomto případě nechat zapnuté?
10.5.2013 14:43 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Client to client se vypne, neni potřeba.
11.5.2013 17:29 Bou
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty

Pokud dám klientovi adresu z jiného rozsahu a přidám na serveru uvedenou routu, nemůžu se dostat na žádného jiného klienta, i když mám client-to-client zapnuté (s vypnutým se také nedostanu).

Nějaké nápady? Nejvíc se mi líbí nápad client-to-client vypnout a nechat klienty ve stejném adresním rozsahu, jak už uváděl Zdeněk. Jenom nevím, co nastavit, aby klienti mohli navzájem komunikovat- teď může jenom klient-server. ipv4.forward mám nastavený na 1, je potřeba ještě něco dalšího?

11.5.2013 18:53 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Jenže když jsou ve stejném segmentu, tak se ten trafic neroutuje, že... Takže logicky nelze tu komunikaci na serveru nijak řídit.
11.5.2013 19:44 Bou
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
A v případě, že bych měl tedy jiný síťový segment, jak ho zpřístupním jiným klientům? Musím přidat routu (případně jakou - stejnou, jako jsem již uváděl? ) i všem ostatním klientům? S routou pouze na serveru jsem na ostatní klienty neviděl...
12.5.2013 03:24 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Push direktiva v OpenVPN, nebo jak přesně se to jmenuje...
Zdeněk Zámečník avatar 11.5.2013 19:55 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
Pokud chceš, ozvi se mi v pondělí třeba na jabber a můžeme to zkusit vyřešit...
11.5.2013 20:35 Bou
Rozbalit Rozbalit vše Re: OpenVPN - filtrování přenosu mezi klienty
OK, díky.... ozvu se.

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.