Mogħdija waħda barra minn din il-workstation hija proxy SOCKS, u OpenVPN warajha jirrapporta timeout tal-konnessjoni mingħajr xejn utli. Browser fuq l-istess magna jaħdem permezz ta’ dak il-proxy, il-kredenzjali huma tajbin, u l-port iwieġeb. Tliet affarijiet ivarjaw spiss biżżejjed biex jiġu ċċekkjati l-ewwel: il-verżjoni SOCKS li jitkellem il-proxy, it-trasport li għażel il-klijent, u fejn issir ir-riżoluzzjoni tal-ismijiet. Ikkonferma kull waħda minnhom qabel ma tiddeċiedi li l-firewall hija ħatja.

Qabbel il-verżjoni SOCKS qabel il-firewall

OpenVPN tal-komunità jitkellem SOCKS5 għal socks-proxy. Dawwarha lejn proxy li joffri biss SOCKS4, u l-konnessjoni TCP tinfetaħ, imbagħad tieqaf, għax il-klijent jistenna tweġiba għal tislima li t-tarf l-ieħor qatt ma jipparsja. Minn barra, dak l-waqfien jidher eżattament bħal port iffiltra, u għalhekk il-mistoqsija tal-verżjoni tiġi qabel kull regola tal-firewall. Talba li tifhem SOCKS issolviha b’kmand wieħed.

curl --socks5-hostname 127.0.0.1:9050 gw.lab.example

Talba kompluta tipprova żewġ affarijiet f’daqqa: il-proxy aċċetta t-talba SOCKS u rriżolva l-isem. L-ebda skema URL mhi meħtieġa, għax curl jittratta host mikxuf bħala HTTP, li huwa biżżejjed għal dan it-test.

Dik it-talba wkoll teskludi l-falliment li l-log tal-klijent jaħbi. Proxy jista’ jippermetti l-browser u xorta jirrifjuta d-destinazzjoni VPN, u f’dak il-każ ir-rifjut iseħħ fil-CONNECT, qabel kwalunkwe awtentikazzjoni VPN. OpenVPN jirrapporta biss timeout, għalhekk it-tweġiba tal-proxy stess hija l-prova li għandek bżonn.

It-trasport irid ikun TCP fuq iż-żewġ naħat

SOCKS5 iġorr hawn fluss TCP, għalhekk it-tunnel innifsu jeħtieġ proto tcp-client. Profil li għadu ssettjat għal UDP mhux se jaħdem minn din il-mogħdija, għax il-klijent ma jużax il-modalità tal-assoċjazzjoni UDP tal-protokoll. Li tbiddel il-profil hija bidla vera u mhux formalità: it-tarf l-ieħor irid jisma’ fuq TCP fl-istess port. It-tagħbija mbagħad issir TCP ġewwa TCP, fejn segment mitluf jerġa’ jintbagħat darbtejn u l-pass imur għall-agħar, ħaġa li s-sessjonijiet interattivi jinnotawha ħafna aktar mit-trasferimenti kbar.

proto tcp-client
remote gw.lab.example 8443
socks-proxy 127.0.0.1 9050

Id-direttiva tieħu l-host tal-proxy, port fakultattiv u fajl tal-kredenzjali fakultattiv. Poġġihom fil-profil innifsu sabiex kopja ġġib ruħha bl-istess mod ximkien ieħor.

Illimita l-katina kollha għal kontenitur wieħed

Li tagħmel il-katina fuq il-host ifisser li tieħu r-rotta default tiegħu u tħalli r-resolver fi stat li ħadd ma jista’ jispjega wara. Namespace jew kontenitur jillimitaha minflok, sabiex il-host iżomm il-mogħdija tiegħu filwaqt li l-qabża SOCKS u t-tunnel jgħixu flimkien. Ġewwa mhu xejn ma jitla’ mingħajr apparat tat-tunnel, id-drittijiet biex tikkonfigura dak l-apparat, u proxy li tista’ tilħaq. Servizz Compose jiksibha b’cap_add: NET_ADMIN u /dev/net/tun immuntat bil-bind.

cap_add:
  - NET_ADMIN
devices:
  - /dev/net/tun:/dev/net/tun

Dak il-par huwa idjaq milli tmexxi l-kontenitur b’privileġġi, u huwa l-aċċess kollu meħtieġ għall-apparat. Klijent Tor jew kontenitur proxy separat jistgħu jipprovdu s-semmiegħ. Fi kwalunkwe każ orbtu mal-loopback, u laħqu min-namespace permezz tal-host minflok ma tesponi l-proxy lin-netwerk.

Ir-riżoluzzjoni tal-ismijiet hija fejn l-iżolament ifalli

Tunnel li jġorr pakketti waqt li jistaqsi lir-resolver tal-host ma iżolax xejn. Żewġ affarijiet jagħmlu l-iżolament reali: in-namespace għandu resolver tiegħu stess, u l-mistoqsijiet tiegħu jivvjaġġaw mill-proxy jew mit-tunnel, qatt fuq l-interface fiżika. Uża żewġ ismijiet għat-test: wieħed li jeżisti biss wara t-tunnel, u ieħor pubbliku li għandu jsegwi l-istess mogħdija.

docker compose exec vpn cat /etc/resolv.conf
docker compose exec vpn getent hosts internal.lab.example

Jekk l-isem tan-naħa l-oħra jiġi riżolt u dak pubbliku ma jiġix, il-katina hija selettiva u mhux miksura, u d-differenza tgħidlek liema mogħdija ħa kull mistoqsija. Jekk it-tnejn jiġu riżolti mill-host imma ebda wieħed ġewwa l-kontenitur, il-kontenitur għadu qed jissellef ir-resolver tal-host. Innota l-fajl tar-resolver li sibt, għax dak huwa s-setting li jrid jinbidel.

Ipprova kull qabża fl-ordni

Il-lista qasira. Talba SOCKS5 tikseb tweġiba, it-tunnel jilħaq is-semmiegħ tiegħu mill-proxy, u pakketti li jħallu n-namespace iġorru l-indirizz li n-naħa l-oħra tistenna. Ikkonferma kull wieħed waħdu minflok ma żżid aktar konfigurazzjoni. Meta l-klijent jgħid konness u xejn ma jiċċaqlaq, il-ksur kważi dejjem ikun fit-tieni jew it-tielet fatt.

curl --socks5-hostname 127.0.0.1:9050 gw.lab.example
docker compose exec vpn ip route get 203.0.113.10
docker compose exec vpn getent hosts internal.lab.example

Innota l-kombinazzjoni li ħadmet: verżjoni SOCKS, trasport, resolver u settings tan-namespace. Li ssolvi din il-katina t-tieni darba mill-memorja tiswa aktar min-nota. Żomm dawk l-erba’ fatti fit-ticket u mhux f’ħajt taċ-chat.

Katina li tirrapporta konness u ma tħaddix xejn ġeneralment tkun falliet fil-qabża li għadek ma ppruvajtx. Ipprova dik il-qabża qabel ma żżid saff ieħor.

Artikli relatati