Dva upravljačka ulaza na jednom hostu, jedan servisni port i pravilo politike koje je trebalo pomoći objema. Pravilo se podudara s izvornim portom 22, šalje pretragu u tablicu koja poznaje samo WAN zadanu vrijednost, a VPN ulaz prestaje odgovarati na nove prijave dok izravni ulaz nastavlja raditi. Ništa od toga nije tajnovito kad se selektor ispravno pročita. Izvorni port označava uslugu, a ne putanju kojom je veza stigla.

Dva ulaza, jedan servisni port

Host ima adresu na LAN strani i VPN adresu, a sshd sluša na objema. Izravna sesija i tunelska sesija zato dijele servisni port i razlikuju se samo po tome koja lokalna adresa prima vezu.

Ta razlika dovoljna je za odabir putanje odgovora i upravo je to razlika koju pravilo zasnovano na portu odbacuje. Obje sesije stvaraju odgovore čiji je izvorni port 22, pa pravilo koje se podudara s tim portom ne može ih razdvojiti. Ono šalje obje pretrage u istu tablicu, a jedna od njih dobiva odgovor koji ne odgovara. Ispravak je uskladiti atribut koji se stvarno razlikuje.

Davanje svakom ulazu vlastitog porta također bi radilo, a smatrati to zahtjevom dizajnerski je izbor, a ne svojstvo SSH-a.

Pročitajte pravilo, zatim tablicu

Pravilo politike uređeni je selektor, a prvo koje vrati upotrebljiv odgovor završava pretragu. Pročitajte popis redom i zabilježite koje pravilo može pobijediti.

Zatim pročitajte tablicu na koju to pravilo pokazuje, jer pravilo koje se uspješno razrješava nije pravilo koje se korisno razrješava. Tablica sa samo zadanom rutom šalje odgovor podrijetlom s VPN-a kroz WAN sučelje. Specifičnija ruta u kasnijoj tablici nikad se ne razmatra, zato dodavanje druge tablice tako često ne mijenja ništa. Odabrana tablica je ono što treba pregledati.

ip -4 rule show
ip route show table 100
ip route show table main

Ta dva izlaza zajedno objašnjavaju rezultat; svaki sam po sebi poziva na pogrešan zaključak.

Ograničite pravilo na tok koji imate na umu

Atribut koji razdvaja dva ulaza je lokalna izvorna adresa. Pravilo koje se podudara s tom adresom šalje samo tunelske sesije u privatnu tablicu, a izravne sesije ostavlja na glavnoj tablici.

To pravilo mora biti upareno s tablicom koja sadrži privatnu rutu i povratnu putanju za tu podmrežu. Ograničite oboje na upravljački promet, a ne na svaku uslugu na hostu. Pravilo koje hvata sav promet s te adrese preusmjerit će i sve drugo što host pošalje s nje. Usko ovdje pobjeđuje pametno, jer sljedeća osoba to mora pročitati.

sudo ip rule add from 10.90.0.1 lookup 100 priority 100
sudo ip route add 10.90.0.0/24 dev wg0 table 100
ip route get 10.90.5.20 from 10.90.0.1

Ako se oba ulaza prevedu na jednu lokalnu adresu, ta razlika nestaje i dizajnu treba stanje svjesno veze umjesto toga.

Držite slušatelja, dopuštenje i odabir odgovora odvojeno

Tri odvojene stvari moraju biti istinite prije nego sesija proradi: adresa postoji, usluga na njoj sluša i odgovor pronalazi put natrag. Promjena rute ispravlja samo treće.

Konfiguracija slušatelja vlastita je datoteka i vlastito ponovno učitavanje, a više adresa za slušanje je normalno. Autentifikacija je opet treća odluka, a iznimka u usmjeravanju nikome ne daje pristup. Držite provjeru ključa hosta, autentifikaciju računa i ograničenja izvora na obama ulazima i oduprite se porivu da oslabite druge kontrole tunela kako bi jedna upravljačka putanja radila.

Držite kanal za oporavak koji ne ovisi o putanji koju mijenjate, jer pogreška ovdje zaključava sam ispravak.

Dokažite to novom sesijom, a ne starom

Uspostavljeni terminal ne dokazuje ništa, jer je primljen prije promjene. Otvorite novu sesiju kroz svaki predviđeni ulaz.

ss -ltnp | grep ':22'
sudo sshd -T | grep -i listenaddress
ssh -v [email protected] true
sudo journalctl -u ssh -n 30

Zatim ponovite ponovno povezivanje VPN-a i pokušajte ponovno, jer ruta koja preživi ponovno povezivanje nije isto što i ruta dodana u tablicu koju ponovno povezivanje čisti. Promatrajte odbijene izvore odvojeno od dopuštenih, da se blokirani pokušaj ne sakrije iza radne sesije. Spremite lokalnu adresu, pravilo i tablicu uz rezultat. Ako umjesto toga podijelite portove, zabilježite to kao operativnu odluku, a ne kao ograničenje SSH-a.

Povezani članci