Mengapa Peraturan Port Sumber Merosakkan Salah Satu Laluan SSH Anda
Padanan "sport 22" tidak menyatakan entri SSH mana yang memiliki balasan. Hadkan peraturan dasar kepada aliran pengurusan dan bukannya satu jadual khusus WAN.
Dua entri pengurusan pada satu hos, satu port perkhidmatan, dan satu peraturan dasar yang bertujuan membantu kedua-duanya. Peraturan itu sepadan dengan port sumber 22, menghantar carian ke jadual yang hanya mengenal lalai WAN, dan entri VPN berhenti menjawab log masuk baharu sementara entri terus terus berfungsi. Tiada yang misteri apabila pemilih dibaca dengan betul. Port sumber mengenal pasti perkhidmatan, bukan laluan tempat sesuatu sambungan tiba.
Dua entri, satu port perkhidmatan
Hos mempunyai alamat di sebelah LAN dan alamat VPN, dan sshd mendengar pada kedua-duanya. Oleh itu sesi terus dan sesi terowong berkongsi port perkhidmatan dan hanya berbeza pada alamat tempatan mana yang menerima sambungan.
Perbezaan itu cukup untuk memilih laluan balasan, dan itulah tepat perbezaan yang dibuang oleh peraturan berasaskan port. Kedua-dua sesi menghasilkan balasan yang port sumbernya 22, jadi peraturan yang sepadan dengan port itu tidak dapat memisahkannya. Ia menghantar kedua-dua carian ke jadual yang sama, dan salah satunya menerima jawapan yang tidak padan. Pembetulannya ialah memadankan atribut yang benar-benar berbeza.
Memberi setiap entri portnya sendiri juga akan berfungsi, dan menganggapnya sebagai keperluan ialah pilihan reka bentuk, bukan sifat SSH.
Baca peraturan, kemudian jadual
Peraturan dasar ialah pemilih tersusun, dan yang pertama memulangkan jawapan yang boleh digunakan menamatkan carian. Baca senarai mengikut urutan dan perhatikan peraturan mana yang boleh menang.
Kemudian baca jadual yang ditunjuk oleh peraturan itu, kerana peraturan yang diselesaikan dengan jayanya bukan peraturan yang diselesaikan dengan berguna. Jadual yang hanya mengandungi laluan lalai menghantar balasan berasal VPN keluar melalui antara muka WAN. Laluan yang lebih khusus dalam jadual kemudian tidak pernah dirujuk, dan sebab itulah menambah jadual kedua begitu kerap tidak mengubah apa-apa. Jadual yang dipilih ialah perkara yang perlu diperiksa.
ip -4 rule show
ip route show table 100
ip route show table main
Kedua-dua output itu bersama-sama menjelaskan hasilnya; mana-mana satu sahaja mengundang kesimpulan yang salah.
Hadkan peraturan kepada aliran yang anda maksudkan
Atribut yang memisahkan kedua-dua entri ialah alamat sumber tempatan. Peraturan yang sepadan dengan alamat itu hanya menghantar sesi terowong ke jadual peribadi dan membiarkan sesi terus pada jadual utama.
Peraturan itu mesti dipasangkan dengan jadual yang mengandungi laluan peribadi dan laluan pulang untuk subnet itu. Hadkan kedua-duanya kepada trafik pengurusan dan bukannya setiap perkhidmatan pada hos. Peraturan yang menangkap semua trafik dari alamat itu juga akan mengubah hala apa-apa lagi yang dihantar oleh hos dari situ. Yang sempit mengalahkan yang bijak di sini, kerana orang seterusnya perlu membacanya.
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
Jika kedua-dua entri diterjemahkan ke satu alamat tempatan, perbezaan itu hilang dan reka bentuk memerlukan keadaan yang sedar sambungan sebagai gantinya.
Asingkan pendengar, kebenaran dan pemilihan balasan
Tiga perkara berasingan mesti benar sebelum sesi berfungsi: alamat wujud, perkhidmatan mendengar padanya, dan balasan menemui jalan pulang. Perubahan laluan hanya membetulkan yang ketiga.
Konfigurasi pendengar ialah failnya sendiri dan muat semula sendiri, dan beberapa alamat mendengar adalah normal. Pengesahan ialah keputusan ketiga lagi, dan pengecualian penghalaan tidak memberi sesiapa akses. Kekalkan pengesahan kunci hos, pengesahan akaun dan sekatan sumber pada kedua-dua entri, dan tahan dorongan untuk melemahkan kawalan terowong yang lain supaya satu laluan pengurusan berfungsi.
Kekalkan saluran pemulihan yang tidak bergantung pada laluan yang anda ubah, kerana kesilapan di sini mengunci pembetulan itu sendiri.
Buktikan dengan sesi baharu, bukan yang lama
Terminal yang telah ditetapkan tidak membuktikan apa-apa, kerana ia diterima sebelum perubahan. Buka sesi baharu melalui setiap entri yang dimaksudkan.
ss -ltnp | grep ':22'
sudo sshd -T | grep -i listenaddress
ssh -v [email protected] true
sudo journalctl -u ssh -n 30
Kemudian ulangi sambungan semula VPN dan cuba lagi, kerana laluan yang bertahan melalui sambungan semula bukan sama dengan laluan yang ditambahkan pada jadual yang dikosongkan oleh sambungan semula. Perhatikan sumber yang ditolak secara berasingan daripada yang dibenarkan, supaya percubaan yang disekat tidak bersembunyi di sebalik sesi yang berfungsi. Simpan alamat tempatan, peraturan dan jadual di sebelah hasilnya. Jika anda memisahkan port sebaliknya, catatkan itu sebagai keputusan operasi dan bukan had SSH.