Du suprenaj ligoj, unu tunelo, kaj la trafiko eliras tra tiu, kiun vi ne elektis. La privataj subretoj estas atingeblaj, la protokolo raportas sukcesan konekton, kaj la mezurita ligo estas tiu, kiu ĝin portas. Nenio en la eligo de OpenVPN mencias enirejon, ĉar la kliento neniam elektis unu. Ĝi malfermis ingon al fora adreso kaj lasis la kernon decidi, kiel atingi tiun adreson.

La tunela adreso ne estas la finpunkto

En ĉiu sesio ekzistas du malsamaj vojoj. La ekstera vojo portas la ĉifritan transporton al la publika adreso de la servilo. La interna vojo portas ĉion, kion la servilo puŝas en la tunelon, kaj la vojaj reguloj por unu havas neniun efikon sur la alia.

La rikordo remote en la profilo nomas la eksteran celon, do tiu estas la adreso fiksenda. Ĝi ankaŭ estas la valoro, kiu ŝanĝiĝas kiam gastnomo solviĝas alie aŭ la profilo listigas plurajn remote.

Trovu la adreson, al kiu la kliento efektive alvokis

Legu la vivan ingon anstataŭ la agordan dosieron. La inga tabelo montras la kunulon, al kiu la procezo efektive konektiĝis, kaj tio estas la valoro, kiun escepto devas kongrui. Profilo povas esti redaktita post la komenco de la sesio, kaj la ingo estas la sola pruvo pri tio, kio estis alvokita:

ss -tunp | grep -i openvpn
journalctl -u openvpn-client@work --no-pager | grep -i "Peer Connection Initiated"

La protokola linio nomas la kunulan adreson kaj pordon en la momento de la konekto. Se ĝi malkongruas kun la profilo, io antaŭ la kliento reverkas la celon antaŭ ol la konekto komenciĝas.

Kontrolu ankaŭ la adresan familion. Profilo kun du stakoj povas konektiĝi per IPv6 dum via escepto kovras nur IPv4, kaj tiam la trafiko sekvas alian regulon ol tiu, kiun vi skribis. La samo validas por prokurilo, kiu respondas nome de la finpunkto. Ambaŭ kazoj produktas tunelon, kiu funkcias dum via vojo faras nenion.

Fiksu la finpunkton kaj legu la ordon de la politiko

Gastiga vojo estas pli specifa ol ajna apriora vojo. Tial /32 por la kunula adreso venkas ene de la tabelo, kiu ĝin enhavas. La kutima formo eksplicite nomas la enirejon kaj la aparaton:

ip route add 203.0.113.40/32 via 192.168.10.1 dev eth0

Tiu vojo helpas nur se la serĉo atingas tiun tabelon. Politikaj reguloj estas taksataj laŭ ordo kaj la unua kongruo decidas, do regulo, kiu sendas ĉion al dua tabelo, preterpasas vian gastigan vojon en main. Legu la regulojn antaŭ ol supozi, ke la vojo estas aŭtoritata:

ip rule show
ip route get 203.0.113.40

Demandu la duan komandon kun la sama fonta adreso aŭ marko, kiun la kliento uzas, kiam la politiko dependas de ili. Ĝi raportas la vojon, kiun la kerno elektus, kio estas pruvo pri la serĉo kaj ne pruvo, ke la viva ingo uzas tiun vojon.

Kiam la finpunkto moviĝas

Gastnomo, kiu solviĝas al pluraj adresoj, malvalidigas daŭran /32 tuj kiam la respondo ŝanĝiĝas. Profilo kun pluraj remote-linioj havas la saman problemon, ĉar la kliento povas surteriĝi sur iu ajn el ili. Refreŝigu la vojon el la propraj hokoj de la vivciklo de la kliento anstataŭ aldoni ĝin mane. Skripto up, kiu legas la intertraktitan kunulon kaj instalas la gastigan vojon, tenas la escepton kongrua kun la realo, kaj kongrua skripto down forigas ĝin.

Registru la refreŝigon en la sama loko kiel la resto de la vojiga agordo de la gasto. Vojo, kiu ekzistas nur ĝis la sekva restartigo, estas testo, ne riparo.

Tenu la internan politikon aparte

Movado de la ekstera vojo ne donas aliron al nova privata subreto kaj ne ŝanĝas, kiujn celojn la servilo puŝas en la tunelon. La vojo de la malsupra tavolo elektas la draton; la puŝitaj vojoj elektas, kio eniras la tunelon. Teni tiujn du decidojn aparte estas tio, kio faras la dividon antaŭvidebla.

Se la celo estas nur teni la ĉifritan transporton for de mezurita ligo, lasu la aprioran vojon trankvila kaj aldonu la ununuran gastigan escepton. Anstataŭigi la tutmaŝinan aprioran vojon por movi unu VPN-konekton rompas ĉiun alian aplikaĵon sur la gasto.

Konfirmu la rezulton per du sendependaj observoj: la loka adreso kaj aparato de la ingo, kaj la vojo, al kiu solviĝas la privata celo. Kiam ambaŭ kongruas kun via intenco, la divido estas reala. La manlibro de OpenVPN 2.6 kovras la elektojn remote kaj lokan bindon, kiuj decidas, kiun adreson la kliento alvokas.

Rilataj artikoloj