Зашто правило изворног порта квари једну од ваших SSH путања
Подударање „sport 22“ не каже којем SSH улазу припада одговор. Ограничите правило политике на управни ток уместо на једну табелу само за WAN.
Два управна улаза на једном хосту, један сервисни порт и правило политике које је требало да помогне обема. Правило се подудара са изворним портом 22, шаље претрагу у табелу која зна само WAN подразумевано, и VPN улаз престаје да одговара на нове пријаве док директни улаз наставља да ради. Ништа од тога није мистериозно када се селектор правилно прочита. Изворни порт идентификује услугу, а не путању којом је веза стигла.
Два улаза, један сервисни порт
Хост има адресу са LAN стране и VPN адресу, и sshd слуша на обе. Зато директна сесија и тунелска сесија деле сервисни порт и разликују се само по томе која локална адреса прима везу.
Та разлика је довољна за избор путање одговора, и управо је то разлика коју правило засновано на порту одбацује. Обе сесије стварају одговоре чији је изворни порт 22, па правило које се подудара са тим портом не може да их раздвоји. Оно шаље обе претраге у исту табелу, и једна од њих добија одговор који не одговара. Исправка је ускладити атрибут који се стварно разликује.
Давање сопственог порта сваком улазу би такође радило, а сматрати то захтевом је дизајнерски избор, не својство SSH.
Прочитајте правило, затим табелу
Правило политике је уређени селектор, и прво које врати употребљив одговор завршава претрагу. Прочитајте листу редом и приметите које правило може да победи.
Затим прочитајте табелу на коју то правило показује, јер правило које се успешно решава није правило које се корисно решава. Табела која садржи само подразумевану руту шаље одговор са пореклом од VPN напоље кроз WAN интерфејс. Конкретнија рута у каснијој табели се никада не разматра, и зато додавање друге табеле тако често ништа не мења. Изабрана табела је оно што треба испитати.
ip -4 rule show
ip route show table 100
ip route show table main
Ова два излаза заједно објашњавају резултат; сваки сам по себи води ка погрешном закључку.
Ограничите правило на ток који имате на уму
Атрибут који раздваја два улаза је локална изворна адреса. Правило које се подудара са том адресом шаље само тунелске сесије у приватну табелу, а директне сесије оставља на главној табели.
То правило мора бити упарено са табелом која садржи приватну руту и повратну путању за ту подмрежу. Ограничите обе на управни саобраћај, а не на сваку услугу на хосту. Правило које хвата сав саобраћај са те адресе преусмериће и све друго што хост одатле шаље. Уско овде побеђује паметно, јер следећа особа то мора да прочита.
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
Ако се оба улаза преведу на једну локалну адресу, та разлика нестаје и дизајн уместо тога захтева стање свесно везе.
Држите одвојено слушаоца, дозволу и избор одговора
Три одвојене ствари морају бити тачне пре него што сесија проради: адреса постоји, услуга на њој слуша и одговор проналази пут назад. Промена руте исправља само трећу.
Конфигурација слушаоца је сопствена датотека и сопствено поновно учитавање, и више адреса за слушање је нормално. Аутентификација је поново трећа одлука, и изузетак у рутирању никоме не даје приступ. Држите проверу кључа хоста, аутентификацију налога и ограничења извора на оба улаза, и одуприте се нагону да ослабите друге контроле тунела како би једна управна путања радила.
Држите канал за опоравак који не зависи од путање коју мењате, јер грешка овде закључава саму исправку.
Докажите то новом сесијом, не старом
Успостављен терминал не доказује ништа, јер је примљен пре промене. Отворите нову сесију кроз сваки предвиђени улаз.
ss -ltnp | grep ':22'
sudo sshd -T | grep -i listenaddress
ssh -v [email protected] true
sudo journalctl -u ssh -n 30
Затим поновите поновно повезивање VPN-а и покушајте поново, јер рута која преживи поновно повезивање није иста као рута додата у табелу коју поновно повезивање чисти. Посматрајте одбијене изворе одвојено од дозвољених, да се блокирани покушај не сакрије иза радне сесије. Сачувајте локалну адресу, правило и табелу поред резултата. Ако уместо тога поделите портове, запишите то као оперативну одлуку, а не као ограничење SSH.