Van egy TP-Link Archer C7 (v5) router is az arzenálban, amin szerettem volna beállítani az OpenVPN szervert úgy, mint az MR600-ason. A felület ugyan az, az opciók ugyan azok, mégis egy problémába futottam bele.
A beállítások között nem sok opció van, amivel nincs is baj alapesetben. Az én konfigurációm így néz ki:
Tehát szeretném, ha a VPN server engedne hozzáférést a helyi hálózathoz, de a kliens oldal a saját internet átjáróját használná a minden máshoz. A fenti beállítás az MR600-as routeren gond nélkül működik is. Kiexportáltam, és a hivatalos OpenVPN klienst használva ott az import után a kapcsolat felépül és minden működik. De nem a C7-es esetében. Azt vettem észre, hogy a a kapcsolódás ugyan sikerül, a távoli helyi LAN-t el is érem, minden jó, kivéve, hogy a VPN kapcsolódás után semmi más internet kapcsolat nem működik rendesen… tehát nem tudok weboldalakat megnyitni, nem megy a levelezés, stb.
Kis nyomozás után kiderült, hogy a névfeloldás az egyik hiba. A C7 áttolta a kliensnek a saját DNS szerver beállításait. Gondoltam, rendben, akkor kézzel megpróbálom kikapcsolni és megnézzük mi lesz. Sikerült is, de a probléma nem oldódott meg.
A következő lépés az volt, hogy a szerveren átállítottam az „Internet and Home Network” opcióra és újabb próba következett. Kapcsolat bont, majd újrakapcsolódás. Nem exportáltam ki a konfigurációs file-t. Azzal próbáltam csatlakozni, amivel az előbb is. Ebben az esetben érdekes módon megjavult minden. Láttam a távoli LAN-t, és a netkapcsolat is jó volt. Ez így jó is lenne, ha nem a távoli LAN átjáróját használva a lenne internetem. Nem ez volt az eredeti cél. Viszont így felvetődött a kérdés, hogy ha ugyan azzal a konfigurációs file-lal de más szerver-beállítással ezt értem el, akkor valami nem stimmel a szerveroldalon, nem jó route tábla beállítást kapok a kliens oldalon a szervertől. Végig bogarásztam az OpenVPN kliens log file-ját is és ugyan erre a következtetésre jutottam. Biztos voltam benne, hogy a DNS beállításon kívül a route tábla is rosszul kerül beállításra. Úgyhogy elkezdtem kutatni, hogy mit is tudnék csinálni ezzel …
A kliens oldali config file így nézett ki:
client
dev tun
proto udp
float
nobind
cipher AES-128-CBC
comp-lzo adaptive
resolv-retry infinite
persist-key
persist-tun
verb 3
remote xxx.xxx.xxx.xxx 1194
<ca>
...
</ca>
<cert>
...
</cert>
<key>
...
</key>
Egy hosszabb guglizás után pedig az alábbi megoldást találtam. A remote után, de még a kulcsok előtt meg kell akadályozni, hogy a route-ok és DNS beállítások élesedjenek, amit a szerver küld. Helyette a saját beállításaimat kell valahogy érvényre juttatni. Összehasonlítottam a működő MR600-as VPN szerverre való kapcsolódásom logját a mostani C7-esével és kiszűrtem a route-okra vonatkozó beállításokat. Ez alapján mindössze két route bejegyzést kell csak beállítanom a mostani 4 helyett, valamint nem kell semmilyen DNS IP-t sem megadni. A két route pedig a távoli LAN és a hozzá tartozó maszk, valamint a VPN subnetből a szerver (router) IP-je. Minden más jónak tűnt a log-ban.
Ezek alapján 3 sort kellett hozzáadnom a jelenlegi config file-hoz az előbb említett helyen, ami után a végeredmény ez lett:
client
dev tun
proto udp
float
nobind
cipher AES-128-CBC
comp-lzo adaptive
resolv-retry infinite
persist-key
persist-tun
verb 3
remote xxx.xxx.xxx.xxx 1194
route-nopull
route 192.168.50.0 255.255.255.0
route 10.8.50.1
<ca>
...
</ca>
<cert>
...
</cert>
<key>
...
</key>
Visszaállítottam a szerveren a „Home Network only” opcióra a szervert beállítását. Elmentettem a módosított config file-t, újra beimportáltam a régi helyett a kliensben, csatlakoztam és lám, minden tökéletesen működik!