Připojení k OpenVPN přes klienta

Připojení k OpenVPN přes klienta
« kdy: 08. 06. 2018, 17:38:59 »
Topologia je nasledovna:
Kód: [Vybrat]
OpenVPN_server_Linux(10.8.0.1)------Internet------OpenVPN_client_LEDE/OpenWRT(10.8.1.140)-----LAN_192.168.80.0/24-----Stroj_bez_OpenVPN_192.168.80.100Stroj_bez_OpenVPN nepozna openvpn (je to hlupy stroj, ale ma LAN).
V tejto konfiguracii podla topologie, dokazem zo stroja 192.168.80.100 pingat 10.8.0.140.
Ja sa vsak potrebujem zo strojom 192.168.80.100  dostat na 10.8.0.1.
Je to vobec mozne nastavit ?
« Poslední změna: 08. 06. 2018, 18:48:02 od Petr Krčmář »


Karlosek

Re:Připojení k OpenVPN přes klienta
« Odpověď #1 kdy: 09. 06. 2018, 10:26:21 »
Měl jsem to nějak podobně, nastavil jsem na klientovi nat s maškarádou, tj
Kód: [Vybrat]
iptables -t nat -A POSTROUTING -i $ETH -o $VPN -j MASQUERADEpak povolit forwarding mezi rozhraními
Kód: [Vybrat]
iptables -A FORWARD  -i $ETH -o $VPN -j ACCEPT
iptables -A FORWARD  -o $ETH -i $VPN -j ACCEPT
sammozřejmě mít zapnutý forwarding v jádře.

ehmmm

Re:Připojení k OpenVPN přes klienta
« Odpověď #2 kdy: 09. 06. 2018, 23:04:41 »
Nikdo nic, pritom to je docela bezna situace. (?)

Pokud jde o me chabe znalosti, tak ten uprostred musi povolene forwardovani (to uz psal kolega prede mnou, v jadre viz sysctl).

A v principu to pak musi jit i bez natu. Ovsem za predpokladu, ze stroj 10.8.0.1 zna routu do 192.168.80.0/24 a stroj 192.168.80.100 zna routu do 10.8.x.y.

Re:Připojení k OpenVPN přes klienta
« Odpověď #3 kdy: 10. 06. 2018, 14:50:57 »
Měl jsem to nějak podobně, nastavil jsem na klientovi nat s maškarádou, tj
Kód: [Vybrat]
iptables -t nat -A POSTROUTING -i $ETH -o $VPN -j MASQUERADEpak povolit forwarding mezi rozhraními
Kód: [Vybrat]
iptables -A FORWARD  -i $ETH -o $VPN -j ACCEPT
iptables -A FORWARD  -o $ETH -i $VPN -j ACCEPT
sammozřejmě mít zapnutý forwarding v jádře.
ipv4 forward by asi mal byt na routery zapnuty uz v defaultnej konfiguracii.

Vstupne zariadenie asi pri postroutingu pouzit nemozem (dostanem hlasku)
Kód: [Vybrat]
iptables v1.4.21: Can't use -i with POSTROUTINGMalo by tam byt asi len -o a maskaradovat sa bude vsetko co opusta -o.
Ale nie som na to odnornik, takze to neviem na isto.
Nikdo nic, pritom to je docela bezna situace. (?)

Pokud jde o me chabe znalosti, tak ten uprostred musi povolene forwardovani (to uz psal kolega prede mnou, v jadre viz sysctl).

A v principu to pak musi jit i bez natu. Ovsem za predpokladu, ze stroj 10.8.0.1 zna routu do 192.168.80.0/24 a stroj 192.168.80.100 zna routu do 10.8.x.y.
Pre mna to bezna situacia neni :)

Karlosek

Re:Připojení k OpenVPN přes klienta
« Odpověď #4 kdy: 10. 06. 2018, 16:52:13 »
Asi to mám taky jen s -o, možná by to ještě vzalo -s 192.168.80.0/24. Ale toto funguje, ne?


Re:Připojení k OpenVPN přes klienta
« Odpověď #5 kdy: 10. 06. 2018, 17:27:23 »
ANo skusil som pravidlo
Kód: [Vybrat]
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o tun0 -j MASQUERADEa forward
Kód: [Vybrat]
iptables -A FORWARD  -i br-lan -o tun0 -j ACCEPT
iptables -A FORWARD  -o br-lan -i tun0 -j ACCEPT
Ale volajako to nefunguje (na 10.8.0.1 nedosiahnem)

TKL

Re:Připojení k OpenVPN přes klienta
« Odpověď #6 kdy: 10. 06. 2018, 20:06:00 »
Na klientovi potřebujete routu do sítě kam se chcete dostat. Brána je OpenVPN server.
Automatické nastavení routy na klientech se konfiguruje na serveru pomocí push.

TKL

Re:Připojení k OpenVPN přes klienta
« Odpověď #7 kdy: 10. 06. 2018, 20:17:48 »
Na klientovi potřebujete routu do sítě kam se chcete dostat. Brána je OpenVPN server.
Automatické nastavení routy na klientech se konfiguruje na serveru pomocí push.

A na serveru kromě maškarády musí být nastaveno tunelování VPN.
Přiznám se, že nevím, jak se to udělá s čistými IPtables, ale se Shorewallem stačí v /etc/shorewall/tunnels zadat něco jako:

openvpn:1194    loc     0.0.0.0/0

kdy openvpn je název, 1194 je číslo portu, loc je název lokální sítě a 0.0.0.0/0 je adresa sítě, kam se má tunelovat.

Re:Připojení k OpenVPN přes klienta
« Odpověď #8 kdy: 10. 06. 2018, 21:37:26 »
zrejme to az take trivialne nebude ako sa zdalo byt. Ocakaval som, ze bude potrebna routa v lede medzi tun0 (openvpn) a br-lan(ethernet).
Asi tomu az tak velmi nerozumiem.
Z prveho prispevku je jasne, ze medzi ovpn serverom a ovpn klientom spojenie funguje (pingam 10.8.0.1 a 10.8.0.140).
Medzi ovpn klientom v leda a lan klientom, spojenie taktiez funguje (pingam 10.8.0.140 a 192.168.80.100).
Teoreticky by sa malo nasmerovat  192.168.80.0/24 na 10.8.0.1.
Bohuzial si neviem sam poradit. Teoria je pekna vec, ale ja to potrebujem spravit aj prakticky

TKL

Re:Připojení k OpenVPN přes klienta
« Odpověď #9 kdy: 11. 06. 2018, 09:26:12 »
zrejme to az take trivialne nebude ako sa zdalo byt. Ocakaval som, ze bude potrebna routa v lede medzi tun0 (openvpn) a br-lan(ethernet).
Asi tomu az tak velmi nerozumiem.
Z prveho prispevku je jasne, ze medzi ovpn serverom a ovpn klientom spojenie funguje (pingam 10.8.0.1 a 10.8.0.140).
Medzi ovpn klientom v leda a lan klientom, spojenie taktiez funguje (pingam 10.8.0.140 a 192.168.80.100).
Teoreticky by sa malo nasmerovat  192.168.80.0/24 na 10.8.0.1.
Bohuzial si neviem sam poradit. Teoria je pekna vec, ale ja to potrebujem spravit aj prakticky

Jak jsem psal: router na druhé straně (tzn. OpenVPN server) musí vědět, že má pakety z VPN tunelu posílat dále do LAN. Já to umím nastavit jen se Shorewallem, ale Google by měl dodat relevantní odpověď. Třeba:

https://arashmilani.com/post?id=53

uf

Re:Připojení k OpenVPN přes klienta
« Odpověď #10 kdy: 11. 06. 2018, 10:45:19 »
Takže server má VPNadresu 10.8.0.1, klient má VPNadresu 10.8.0.140 a LANadresu 192.168.80.kolik?, stroj má LANadresu 192.168.80.100.
Má stroj masku 192.168.80.255 a bránu "LANadresa klienta"?
Jak má klient routování (route -n)? Je na klientovi zapnutá maškaráda do VPN?

Re:Připojení k OpenVPN přes klienta
« Odpověď #11 kdy: 11. 06. 2018, 20:53:20 »
Je to tak ako pises, (v prvom prispevku je topologia siete)
Kód: [Vybrat]
OpenVPN_server_Linux(10.8.0.1)------Internet------OpenVPN_client_LEDE/OpenWRT(10.8.1.140)-----LAN_192.168.80.0/24-----Stroj_bez_OpenVPN_192.168.80.100OpenVPN Server ma IP adresu 10.8.0.1.
OpenVPN_client_LEDE/OpenWRT uspesne ziskal od OpenVPN servera IP adresu 10.8.0.140 (cize odtial sa pingnem na 10.8.0.1)
LEDE/OpenWRT - LAN adresa siete 192.168.80.0/24.
Má stroj masku 192.168.80.255 a bránu "LANadresa klienta"?
Jak má klient routování (route -n)? Je na klientovi zapnutá maškaráda do VPN?
Teraz ti neviem povedat aku ma stroj masku (ale mal by mat 255.255.255.0 (CIDR /24).
Klienta myslis ten hlupy stroj s 192.168.80.100 ? Alebo myslis LEDE/OpenWRT ?

momentalne je openwrt nejaky rozbity, takze zajtra ho resetujem a nastavim na novo (nemam ani backup, zatial som ho nerobil, lebo vela zmien oproti defaultu tam neni).
Ale ako som spomenul vyssie tak som tam zatial supol tieto pravidla
toto do NATu
Kód: [Vybrat]
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o tun0 -j MASQUERADEa tieto do filtra
Kód: [Vybrat]
iptables -A FORWARD  -i br-lan -o tun0 -j ACCEPT
iptables -A FORWARD  -o br-lan -i tun0 -j ACCEPT
ale aj tak to nechodilo

TKL

Re:Připojení k OpenVPN přes klienta
« Odpověď #12 kdy: 11. 06. 2018, 21:22:27 »
Pokud váš router s OpenWRT dostane IP od VPN serveru, tak vše funguje správně. Jediné, co potřebuje mít nastaveno, jsou routy do všech sítí, do kterých se chcete na druhé straně dostat, což může proběhnout automaticky nebo ručně, to je jedno. Ostatní (maškaráda, předávání dat z tunelu do LAN na druhé straně) je třeba řešit na VPN serveru. A zakopaný pes je na 99% právě v tom, že pakety sice doputují na VPN server, ale ten neví, co s nimi dále dělat.

Karlosek

Re:Připojení k OpenVPN přes klienta
« Odpověď #13 kdy: 11. 06. 2018, 21:52:13 »
Citace
Ostatní (maškaráda, předávání dat z tunelu do LAN na druhé straně) je třeba řešit na VPN serveru
To si nemyslím, na serveru ty pakety končí a tak NAT není potřebný. Ten je potřebný na klientovi. push/pull je určený spíše pro přidání routy do sítě za servem.
Mě by zajímal výpis z klienta
Kód: [Vybrat]
ip routea
Kód: [Vybrat]
iptables -t nat -LTy pravidla může být potřeba dát na začátek -I místo -O, aby to něco neblokovalo. Pak mě napadlo - jakou IP má WAN klienta? ten přeci routuje net. Jestli tam není nějaká kolize rozsahů s VPN. Na VPN je rozsah /24?

Re:Připojení k OpenVPN přes klienta
« Odpověď #14 kdy: 12. 06. 2018, 08:40:24 »
Pokud váš router s OpenWRT dostane IP od VPN serveru, tak vše funguje správně. Jediné, co potřebuje mít nastaveno, jsou routy do všech sítí, do kterých se chcete na druhé straně dostat, což může proběhnout automaticky nebo ručně, to je jedno. Ostatní (maškaráda, předávání dat z tunelu do LAN na druhé straně) je třeba řešit na VPN serveru. A zakopaný pes je na 99% právě v tom, že pakety sice doputují na VPN server, ale ten neví, co s nimi dále dělat.
Ospravedlnujem sa, nie som sietar, ale tato problematika ma zaujma a ak mam cas, tak vzdy s niecim experimentujem.
Ano presne tak ako pisete (mam to uz aj v prvom prispevku) OpenWRT adresuu uspesne od OpenVPN servera ziska.
Ja si to vysvetlujem takto:
Kód: [Vybrat]
Spojenie 10.8.0.1 --- 10.8.0.140 funguje
Spojenie 10.8.0.140 --- 192.168.80.100 funguje
Spojenie 192.168.80.100 --- 10.8.0.1 nefunguje
Cize jedno riesenie je spravit v OpenWRT NAT, ale nie medzi LAN a WAN, ale medzi LAN a TUN.
Alebo druhe riesenie je routovanie. Ja sa vsak mojim malym mozgom domnievam, ze pakety treba smerovat medzi sietami z roznymi IP adresami. V tomto pripade sa musi smerovat medzi 192.168.80.1 a 10.8.0.140.
Lebo ten hlupy stroj co ma IP 192.168.80.100 netusi, ze existuje nejaka IP 10.8.0.1 (ale vie, ze existuje 10.8.0.140 (ta IP by mala predstavovat vlastne GW z pohladu 192.168.80.100)).
Sorry ja som este nikdy neroutoval, v zdy co sa dalo, tak som bridgoval :)
Citace
Ostatní (maškaráda, předávání dat z tunelu do LAN na druhé straně) je třeba řešit na VPN serveru
To si nemyslím, na serveru ty pakety končí a tak NAT není potřebný. Ten je potřebný na klientovi. push/pull je určený spíše pro přidání routy do sítě za servem.
Mě by zajímal výpis z klienta
Kód: [Vybrat]
ip routea
Kód: [Vybrat]
iptables -t nat -LTy pravidla může být potřeba dát na začátek -I místo -O, aby to něco neblokovalo. Pak mě napadlo - jakou IP má WAN klienta? ten přeci routuje net. Jestli tam není nějaká kolize rozsahů s VPN. Na VPN je rozsah /24?
Vystup IP route
Kód: [Vybrat]
default via 192.168.1.1 dev eth0.2  src 192.168.1.154
10.8.0.0/24 dev tun0  src 10.8.0.140
192.168.1.0/24 dev eth0.2  src 192.168.1.154
192.168.1.1 dev eth0.2  src 192.168.1.154
192.168.80.0/24 dev br-lan  src 192.168.80.1
A nat tabulka, je to ale dost neprehladne. Je tam aj ta maskarada, vid. prispevky vyssie.
Kód: [Vybrat]
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
prerouting_rule  all  --  anywhere             anywhere             /* !fw3: user chain for prerouting */
zone_lan_prerouting  all  --  anywhere             anywhere             /* !fw3 */
zone_wan_prerouting  all  --  anywhere             anywhere             /* !fw3 */

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
postrouting_rule  all  --  anywhere             anywhere             /* !fw3: user chain for postrouting */
zone_lan_postrouting  all  --  anywhere             anywhere             /* !fw3 */
zone_wan_postrouting  all  --  anywhere             anywhere             /* !fw3 */
MASQUERADE  all  --  192.168.80.0/24      anywhere           

Chain postrouting_lan_rule (1 references)
target     prot opt source               destination         

Chain postrouting_rule (1 references)
target     prot opt source               destination         

Chain postrouting_wan_rule (1 references)
target     prot opt source               destination         

Chain prerouting_lan_rule (1 references)
target     prot opt source               destination         

Chain prerouting_rule (1 references)
target     prot opt source               destination         

Chain prerouting_wan_rule (1 references)
target     prot opt source               destination         

Chain zone_lan_postrouting (1 references)
target     prot opt source               destination         
postrouting_lan_rule  all  --  anywhere             anywhere             /* !fw3: user chain for postrouting */

Chain zone_lan_prerouting (1 references)
target     prot opt source               destination         
prerouting_lan_rule  all  --  anywhere             anywhere             /* !fw3: user chain for prerouting */

Chain zone_wan_postrouting (1 references)
target     prot opt source               destination         
postrouting_wan_rule  all  --  anywhere             anywhere             /* !fw3: user chain for postrouting */
MASQUERADE  all  --  anywhere             anywhere             /* !fw3 */

Chain zone_wan_prerouting (1 references)
target     prot opt source               destination         
prerouting_wan_rule  all  --  anywhere             anywhere             /* !fw3: user chain for prerouting */
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:9999 /* !fw3: luci-remote */ redir ports 443