De applikaasje op 'e kantoarserver ferbynt mei MySQL op localhost, jo kopiearje dy hostnamme yn in desktopklient, en de ferbining mislearret of iepenet in oare database. De VPN hat neat oan 'e betsjutting fan it wurd feroare: localhost ferwiist noch altyd nei de masine dy't de klient draait. De VPN hat pakketten ferpleatst, net ynterfaces. Beslis hokker einpunt de laptop berikke moat foardat jo in rûte oanreitsje.

Stap 1: beslis hokker einpunt de laptop berikke moat

Beide ûntwerpen binne legitime en beantwurdzje ferskillende fragen. Direkte tagong betsjut dat de database harket op in privee-adres dat de tunnel berikke kin, en de laptop ferbynt mei dat adres. Trochstjoerde tagong betsjut dat de database op loopback bliuwt en in SSH-sesje de poarte nei jo masine draacht. Kies ien bewust, want it mingen fan beide jout in ferbining dy't om 'e ferkearde reden wurket.

Foar direkte tagong helje jo de eigen privee namme of it adres fan 'e databasehost en syn poarte by wa't it beheart. It adres fan 'e VPN-poarte is net it database-adres, útsein as it deselde masine is. Befêstigje dan dat de luisterer echt oan dat ynterface bûn is, want in rûte nei in ynterface makket dêr gjin luisterer.

Stap 2: stjoer de poarte allinnich troch as de luisterer lokaal bliuwt

As de database allinnich op loopback bliuwe moat, stjoer it dan oer SSH troch en byn it lokale ein ek oan loopback. It byn-adres links heart by jo laptop; it doel rjochts wurdt út 'e kant fan 'e SSH-server ynterpretearre, sa't de OpenSSH-referinsje it beskriuwt. Dy twa rollen omdraaie is de gewoane reden wêrom't in trochstjoering liket te wurkjen mar mei neat ferbynt.

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:13306:127.0.0.1:3306 [email protected]
ss -ltn 'sport = :13306'

As SSH op in springhost lânet ynstee fan op 'e databasehost, ferwiist de loopback rjochts nei de springhost, en it doel moat feroarje nei in adres dat dy host berikke kin. ExitOnForwardFailure fangt in mislearring by it opsetten fan 'e trochstjoering, mar it bewiist net dat lettere ferbiningen nei it doel slagje. Hâld hostkaai-kontrôle oan, en bied de trochstjoerpoarte net oan jo hiele LAN oan troch him oan alle ynterfaces te bynjen.

Stop as de database allinnich op loopback bliuwe moat en jo gjin SSH brûke kinne. Dan is direkte tagong it ferkearde ûntwerp, net in konfiguraasje om te twingen.

Stap 3: twing de klient nei TCP

Op Unix kiest in MySQL-klient dy't localhost krijt by standert in Unix-socket, dus allinnich de poarte feroarje kin him sykje litte nei in socket dy't neat mei jo trochstjoering te meitsjen hat. Brûk it eksplisite TCP-protokol en it loopback-adres om de klient in ferbining nei jo trochstjoerpoarte iepenje te litten.

mysql --protocol=TCP --host=127.0.0.1 --port=13306 --user=DB_USER --password

De wachtwurdopsje sûnder wearde freget ynstee fan it geheim op 'e kommando-rigel te setten, en dat is de gewoante dy't it wurdich is te hâlden. Oare helpmiddels hawwe har eigen skeakel foar itselde ûnderskie, en guon driuwers behannelje localhost ek bysûnder. Kontrolearje wat jo klient docht ynstee fan oan te nimmen dat de flagge oerdroegen is. It database-account hat ek in tastimming nedich dy't by de boarne past dy't de server sjocht, en dat is de trochstjoerhost, net jo laptop.

Stop as it helpmiddel net nei TCP twongen wurde kin. Brûk dan in oare klient, of brûk direkte tagong ta de privee-luisterer.

Stap 4: bewiis hokker einpunt jo eins berikt hawwe

Freegje de server wat hy tinkt dat de ferbining is. De fariabelen foar hostnamme, poarte en socket fertelle jo oft jo oer TCP kamen en hokker luisterer antwurde, en de ferbiningslist toant it boarne-adres dat de server fêstlei. Dat bewiis is nuttiger as noch in rûteferoaring.

mysql --protocol=TCP -h 127.0.0.1 -P 13306 -u DB_USER -p -e "SELECT @@hostname, @@port, @@socket"

Skriuw op hokker einpunt jo besocht hawwe: in lokale Unix-socket, jo trochstjoerpoarte of de privee-luisterer. Dy trije mislearringen hawwe ferskillende oplossings, en de VPN-rûte feroarje wylst de klient noch mei de ferkearde localhost praat is fergriemde muoite. Hâld ek SSH-autentikaasje en database-autentikaasje apart yn 'e notysjes, want in mislearring yn 'e iene liket fan in desktopklient út op in mislearring yn 'e oare. Ferwiderje dan de trochstjoering as jo klear binne.

De checklist einiget as jo it einpunt, it klientprotokol, it boarne-adres dat de server seach en de tastimming dy't it tastie neame kinne. Fjouwer feiten, en it folgjende ferbiningsprobleem kostet minuten ynstee fan in middei.

Relatearre artikelen