Il-VPN mhux qed jimblokka psql: il-klijent tiegħek imur x’imkien ieħor
psql u klijent GUI jistgħu jmorru lejn punti tat-tmiem differenti mill-istess magna. Qabbel host, socket, rwol u TLS qabel ma tagħti l-ħtija lill-VPN.
Iż-żewġ klijenti qegħdin fuq l-istess laptop, jgħaddu mill-istess tunnel, u wieħed biss minnhom jikkonnettja. Dan it-tqabbil iħossu bħala prova li l-VPN huwa selettiv, meta l-ispjegazzjoni ferm aktar komuni hi li ż-żewġ klijenti jmorru lejn destinazzjonijiet differenti. GUI iżomm il-host, il-port, ir-rwol u s-settings TLS tiegħu stess u jibni bil-kwiet forward SSH meta jkollu bżonnu, filwaqt li psql iġib konnessjoni mill-valuri default ta’ libpq li forsi l-shell tiegħek diġà stabbilixxa. Li tirriproduċi l-konnessjoni li taħdem hija kwistjoni ta’ qari tas-settings tal-GUI, mhux ta’ installazzjoni mill-ġdid tat-tunnel.
Il-mit: klijent wieħed li jaħdem jipprova l-mogħdija
Jekk il-GUI jikkonnettja, it-tunnel iġorr it-traffiku, u dan huwa l-unika ħaġa li l-GUI jipprova. Ma jgħid xejn dwar liema indirizz psql isolvi, b’liema rwol jikkonferma l-identità, jew jekk is-socket li jiftaħ qatt joħroġ mill-magna. Il-mogħdija hija komuni; il-parametri mhumiex.
Forward lokali jwessa’ d-differenza. Il-GUI jista’ jikkonnettja ma’ 127.0.0.1 fuq port li forwardja permezz ta’ SSH, u dan is-semmiegħa jeżisti biss sakemm iddum is-sessjoni tal-GUI. psql dirett lejn localhost mingħajr il-forward jirċievi konnessjoni miċħuda li m’għandha x’taqsam xejn mal-VPN.
Aqra l-punt tat-tmiem li l-GUI fil-fatt juża
Iftaħ il-proprjetajiet tal-konnessjoni u ikkopja erba’ valuri: host, port, database u rwol. Imbagħad fittex tab tat-tunnel, għax forward SSH ibiddel indirizz privat f’port lokali u jbiddel dak li għandu jingħad lil psql.
| Setting | What the GUI holds | What psql uses when the value is absent |
|---|---|---|
| Destination | A saved hostname, sometimes behind a forward | A local Unix socket, not the remote endpoint |
| Port | The direct port or a forwarded local port | 5432, or the port from a service file |
| Role and database | Stored per connection profile | Your operating-system user name |
| TLS identity | Its own CA bundle and verification mode | Whatever PGSSLMODE or the service file says |
| Startup files | Not read at all | Read unless -X is passed |
Kull ringiela tfalli f’saff differenti, u l-messaġġ li tirċievi jsemmi dak is-saff. L-inkollar tal-isem familjari tal-profil salvat f’psql ma jġorr l-ebda wieħed mill-valuri ta’ fuq, u isem ta’ servizz jiġi solvut permezz ta’ fajl li t-terminal forsi qatt ma jaqra.
X’jiret libpq mill-shell tiegħek
psql huwa klijent irqiq fuq libpq, u libpq jaqra l-ambjent qabel ma jaqra xi ħaġa oħra. Varjabbli bħal PGHOST, PGHOSTADDR, PGPORT, PGDATABASE, PGUSER, PGSERVICE u PGSSLMODE kull wieħed jista’ jiddevja parti mill-konnessjoni. Huma jintirtu minflok ma jinkitbu, għalhekk xejn fil-kmand li wrejt ma jurihom. PGSSLMODE esportat jista’ wkoll ibiddel dak li l-klijent jaċċetta mingħajr kelma fuq il-linja tal-kmand.
Tnejn minn dawn il-varjabbli jistħoqqilhom suspett l-ewwel. PGHOSTADDR jipprovdi destinazzjoni numerika li tgħaddi mis-soluzzjoni tal-ismijiet filwaqt li l-isem tal-host għadu jiddetermina l-identità taċ-ċertifikat, u PGSERVICE jiġbed host, database u għażliet TLS minn fajl tas-servizz. Li tixerred l-ambjent kollu biex tħarrek dan hija drawwa ħażina, għax jista’ jkun fih passwords u tokens mhux relatati; minflok agħżel il-varjabbli li jimpurtak minnhom.
Li tħalli barra kemm host kif ukoll hostaddr jagħżel socket tad-dominju Unix minflok indirizz tan-netwerk. Għalhekk sejħa psql mingħajr -h tista’ tirnexxi lokalment, jew tfalli b’żball tas-socket, mingħajr ma qatt tmiss il-mogħdija li juża l-GUI.
Ibgħat l-istess parametri bl-idejn
Bil-valuri tal-GUI f’idejk, għaddihom b’mod espliċitu u aqbeż il-fajl tal-bidu li jista’ jżid sostituzzjonijiet. Is-string tal-konnessjoni hawn taħt hija illustrattiva: ibdel il-punt tat-tmiem, il-port, id-database u r-rwol bil-valuri approvati mill-amministratur tiegħek, u żomm il-konfigurazzjoni tal-fiduċja li diġà taħdem.
psql -X "host=db.internal.example port=6432 dbname=orders user=report_ro sslmode=verify-full connect_timeout=5"Tliet dettalji f’dak il-kmand huma intenzjonati. -X jrażżan il-fajl tal-bidu ta’ psql, għalkemm ma jrażżanx l-ambjent ta’ libpq jew definizzjoni ta’ servizz. connect_timeout=5 iżomm mogħdija fil-vojt milli ddendel it-terminal għal minuti. sslmode=verify-full iżomm il-verifiki taċ-ċertifikat u tal-isem tal-host mixgħula, u dan huwa eżattament il-parti li n-nies jitfu meta jidher żball TLS.
Jekk il-punt tat-tmiem approvat jinsab wara pooler, il-port 6432 u l-port 5432 jistgħu jaslu għall-istess data permezz ta’ identitajiet ta’ server differenti, u l-verifika tista’ tfalli fuq l-isem tal-pooler minflok fuq dak tad-database. Ikkoreġi l-isem fis-string tal-konnessjoni minflok ma ddgħajjef il-modalità.
Ħalli l-messaġġ tal-iżball jagħżel il-pass li jmiss
It-test tal-falliment jgħid kemm waslet l-attentat, u dan jegħleb kull tpattija dwar it-tunnel. Isem li ma jiġix solvut ifalli qabel ma jeżisti socket, timeout ifisser li l-mogħdija jew firewall waqqgħet packets, rifjut ifisser li xi ħaġa wieġbet u rrifjutat, u żball ta’ awtentikazzjoni ifisser li n-netwerk diġà ħadem.
psql -X -w "host=db.internal.example port=6432 dbname=orders user=report_ro sslmode=verify-full connect_timeout=5" -c '\conninfo'
env | grep -E '^PG'
psql --versionQabbel il-ħruġ ta’ \conninfo mas-sessjoni ħajja tal-GUI: l-istess host, l-istess port, l-istess rwol, l-istess stat TLS. Meta dawn l-erbgħa jaqblu, il-VPN m’għandu xejn aktar x’jispjega. Sakemm ma jaqblux, kull bidla addizzjonali fit-tunnel hija tpattija dwar konnessjoni li t-terminal qatt ma għamel.