Routolas, OpenWrt routeren --> fix IP nelkuli openvpn szerverre

Nagyon nem ertek a routolashoz, de megprobalom leirni a problemam:


....................................|....INETRNET.......|...............................
....................................+===================+...............................
..........................................\ ^ /.........................................
............................................|...........................................
............................................|...........................................
.............+--------------+......+-----------------+...... +-------------------------+
.............| LAN PC...... |......| OPENWRT (LOCAL) |...... | OPENVPN SERVER..........|
.............|..............| ---> | LAN:............| --->..| dynamic.no-ip.org...... |
.............| 192.168.1.101|......| 192.168.1.1/24..|...... | (ez is OPENWRT amugy).. |
.............+--------------+......+-----------------+...... +-------------------------+

Adott fenti elredezes:
- egy router amin OPENWRT fut, internet UPC kabelrol
- LAN hoz kapcsolodik tobb gep is,
- adott egy OPENVPN szerver (ami szinten OPENWRTn fut amugy),de nincs fix IP je, es viszonylag gyakran valtozik
- a helyi OPENWRT roteren van openvpn kliens, ami ha minden igaz, ujracsatlakozik ha megszkad a kapcsolat (ha megvaltozik az openvpn szerver IP-je)
Meg lehet-e oldani, hogy:
- egy bizonyos gep csak az OPENVPN-en keresztul lasson kifele
- maskep egyaltalan ne lasson ki, ha megszakad a VPN, akkor sem
- ha valtozik a VPN szerver cime, akkor is kilasson

Az openwrt roueren a static routenal csak IP cimet lehet megadni, dns cimet nem.
Meg lehet ezt vhogy oldani?
Merre kene keresgelnem?

Hozzászólások

Ahhoz, ami szeretnél, két út vezethet:
- csinálsz vpn-t az adott gépről is,
- bekapcsolod és bekonfigurálod a Policy-based Routing nevű opciót.

Alapvetően az okozza a problémát, hogy az openwrt-d megkapja a LAN összes gépének a forgalmát, és attól függően kéne ezt a kifelé menő forgalmat routolni, hogy mi a FORRÁS IP-cím. A normál routing szabályokkal ezt nem lehet megcsinálni, mivel azoknál csak a CÉL IP-címet lehet figyelembe venni; ami ugyanarra a szerverre menne tovább bármilyen gépről a LAN-on, azokat nem lehetne szétválasztani. Ezért szükséges a Policy-based Routing, mert az képes a FORRÁS IP-cím alapján szétválasztani a forgalmat.

A kérdést talán én is értem, de szerintem a rajz nem passzol hozzá. Nekem az nem tiszta, hogy az átjárón üzemel egy OpenVPN kliens, ami hová kapcsolódik? Valamint a rajz szerint a helyi hálózaton működő OpenVPN szervernek mi a funkciója?

Ha a feladat az, hogy a helyi hálózatról minden gép elérheti az internetet, kivéve egyet (ami csak a VPN-en keresztül kommunikálhat kifelé), akkor azon az egy gépen kell a VPN átjárót beállítania alapátjárónak (így azon gép minden nem lokális forgalma arra indul el), majd tuti ami biztos alapon ennek a gépnek az internet felé irányuló forgalmát az átjárón letiltani.

Vagy az az egy helyi gép a helyi OpenVPN szerverhez kapcsolódik (hogy a forgalma a helyi hálózaton is biztonságban legyen), és úgy kell elérnie az internetet, hogy a forgalma a helyi hálózaton rejtett legyen közben?

A rajz jó, csak az openvpn servertől kellene még egy ->INTERNET
(no és az az egy PC arra érje el az internetet, ne a másik irányban az elágazásnál.)

Az openwrt-n akarja megoldani..., azon amelyik openvpn klienként üzemel (és amelyik a PC gateway-e). (és nem azon amelyik szerver)

Meg lehetne oldani a LAN PC-n is, ha arra is rakna egy openvpn klienst, de kevésbe szép megoldás, és nem is kevesebb munka. (meg lehetne úgy is hogy lássa a saját subnetjét, és úgy is hogy ne.)
Persze ha az openvpn szerver felé menő adatait tényleg titkosítani akarná a helyi hálózatában is, akkor kellene a PC-re is egy openvpn, de nem említett ilyet.

"akkor azon az egy gépen kell a VPN átjárót beállítania alapátjárónak"
ilyet nem lehet csinálni, mert csak a saját subnetjében levő ip-t lehet beállítani átjárónak. Az elágazás pedig még odébb van. (ugyanazon routeren, de egy interface-el még kijjebb.

Én feltételeztem, hogy a "VPN kliens" gépen helyben van a VPN kliens beállítva, nem gondoltam arra, hogy egy másik gépen (átjáró) lévő VPN végpontba akarja a forgalmat beirányítani. Annak akkor lenne értelme, ha a gépek egy része VPN-en kommunikálna, a maradék pedig publikus neten. De egy gép esetén nem felesleges bonyolítás?

Nehezen érhető hogy mit akar...
Szerintem nem felesleges bonyolítás, és kevesebb munka is ha a routeren csinálja. (pláne ha már amúgy is van rajta vpn.)
...de én alapvetően fordítva gondolom mint te, szerintem pont az az alapértelmezett, amit ő akar!
A kliens pc végezze a kliens pc dolgát, a router meg a routolást!
...de amúgy is kevesebb munka és biztosabb megoldás ha így csinálja.
Lehetne sorolni még az okokat hogy miért jobb, de inkább nem..., viszont arra hogy a kliensen legyen az openvpn, semmi ok nincs! (az lenne az egyetlen, hogy a helyi hálózatban is titkosítva akarja már küldeni az adatokat, de ilyet nem akar.)

http://lartc.org/howto/lartc.rpdb.multiple-links.html

itt minden megtalálható, ami a "spec" dologhoz kell.

kliens PC: 10.12.12.12
kliens GATEWAY-e (openwrt-s router) br-lan: 10.12.12.1
kliens gateway-e (openwrt-s router) tun0: 10.10.10.13
kliens gateway-e (openwrt-s router) eth0.2: 176.x.y.z
openvpn SZERVER tun0: 10.10.10.1
openvpn szerver internetre eth0: 88.k.l.m

Így a PC route táblája:
0.0.0.0 10.12.12.1 0.0.0.0 UG 0 0 0 eth0
10.12.12.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
a GATEWAY-é:
0.0.0.0 176.x.y.254 0.0.0.0 UG 0 0 0 eth0.2
10.0.0.0 10.10.10.14 255.0.0.0 UG 0 0 0 tun0
10.10.10.1 10.10.10.14 255.255.255.255 UGH 0 0 0 tun0
10.10.10.14 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.12.12.0 0.0.0.0 255.255.255.0 U 0 0 0 br-lan
176.x.y.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0.2
a SZERVERÉ:
10.10.10.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
88.k.l.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.10.10.0 10.10.10.2 255.255.255.0 UG 0 0 0 tun0
10.12.0.0 10.10.10.2 255.255.0.0 UG 0 0 0 tun0
0.0.0.0 88.k.l.254 0.0.0.0 UG 0 0 0 eth0

(ezekbe beletöröltem hogy rövidebb legyen, de elvileg mindent benne hagytam ami érintett)

GATEWAY-en kiadandó parancsok:
echo "2 vpnenat" >> /etc/iproute2/rt_tables
ip route add 10.0.0.0/24 dev tun0 src 10.10.10.13 table vpnenat
ip rule add from 10.10.10.13 table vpnenat
ip route add default via 10.10.10.14 table vpnenat
ip rule add fwmark 3 table vpnenat
ip route flush cache
iptables -t mangle -D PREROUTING -s 10.12.12.12/32 -d 0.0.0.0/0 -m mark --mark 0 -j MARK --set-mark 3
iptables -I FORWARD -s 10.12.12.12/32 -j ACCEPT
iptables -I FORWARD -d 10.12.12.12/32 -j ACCEPT

SZERVEREN kiadandó parancsok:
iptables -t nat -A POSTROUTING -s 10.12.12.12/32 -j SNAT --to 88.k.l.m
iptables -I FORWARD -s 10.12.12.12/32 -j ACCEPT
iptables -I FORWARD -d 10.12.12.12/32 -j ACCEPT

ok, a tűzfal nem szép.
Pont egy tucat sor. :)

a routerben iptablesel mac cím alapján tiltod a routolást a wan interfész felé, a nat prerouting postrouting forvart táblán.

iptables -t nat -A PREROUTING -m mac --mac-source XX:XX:XX:XX:XX:XX -o 'WAN INTERFACE NEVE pl vlan1' -j DROP

azthiszem. de valami ilyesmi lesz a megoldás. már késő van:)

openvpn-ben nem kell default-gateway parameter, igy nemfog minden forgalmat betolni a vpn-be.
de kell egy routing, amivel viszont megmondod hogy adott geptol erkezo forgalom a vpnbe menjen.
a openvpn serveren is kell egy route, ami megmondja neki hogy a 192.168.1.101 gepnek valokat a vpn-be kell benyomnia.

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Elobb csinald meg az openvpn-t rendesen..., tun. (ha esetleg meg nem lenne meg)
Erd el, hogy arrol a kliensrol tudd pingelni az openvpn szerver tun interface-enek ip-jet ugy, hogy az openvpn kliens tun interface-en nem natolsz (iroute openvpnben, de lehet manualisan is).
Ez eddig meg csak openvpn config file, egy FORWARD es egy INPUT szabaly.
Ha ez megvan, akkor "man ip" vagy "man ip route", amivel meg tudod csinalni hogy arra a kliens gepre mas route tabla vonatkozzon. Szamara ne az legyen az default gateway a routerén ami a tobbiek szamara. (openvpn kliens openwrt-n)
Tehat az "ip"-vel csinalsz egy uj route tablat, amiben az lesz, hogy a default gw az openvpn szerver fele van.
...es egy ujabb parancsal megadod, hogy azt a kliens gepet eszerint az uj tabla szerint route-olja.

irgum-burgum. :o)
openwrt parancssor, ifconfig tun0, ping, route, iptables, ip

Amúgy pont ma fogok nagyjából ilyet csinálni openwrt-t..., ha lesz rá időm.
Ha megvárod, beprüntyögöm az utasításokat. :)