Komputer riba menyambung, terowong aktif, dan permintaan ke perkhidmatan dalaman tergantung semasa menyambung. Pada perkhidmatan itu sendiri permintaan tiba dari alamat seperti 10.90.0.25, balasan keluar ke get laluan lalai, dan tiada apa kembali, kerana get laluan itu tidak tahu di mana 10.90.0.25 berada. Dari hujung yang lain kerosakan yang sama kelihatan seperti hos dalaman yang tidak boleh mengeping klien yang bersambung. Kedua-duanya ialah satu objek yang hilang: laluan balik ke kolam klien VPN, yang hanya boleh ditambah oleh rangkaian peribadi.

Baca alamat sumber yang dilihat oleh perkhidmatan

Medan tunggal itu menentukan segala-galanya. Jika perkhidmatan dalaman nampak alamat kolam, Access Server melencongkan dan bukannya menyembunyikan trafik klien, dan setiap balasan mesti dilencongkan kembali ke kolam. Jika ia nampak alamat peribadi pelayan itu sendiri, pelayan menyamar dan laluan balasan sudah berfungsi, tetapi dengan kos kehilangan identiti setiap klien dalam log dan peraturan akses perkhidmatan.

Bandingkan kedua-dua hujung sebelum mengubah apa-apa. Pada pelayan, senaraikan antara muka terowong dan alamatnya; pada klien, sahkan alamat mana yang benar-benar dipegangnya; pada hos dalaman, lihat sambungan yang aktif.

ip -br addr show
ss -tnp state established '( dport = :443 )'
ip route get 10.90.0.25

Perintah terakhir ialah yang gagal dalam kes rosak: ia sama ada melaporkan awalan terowong sebagai tidak boleh dicapai atau, lebih teruk, memulangkan get laluan lalai anda, dan begitulah balasan berakhir di internet.

Jangan andaikan hanya satu kolam. Pelayan boleh mempunyai julat dinamik serta pemetaan statik bagi setiap pengguna, dan alamat statik mungkin terletak sepenuhnya di luar awalan dinamik. Jika anda hanya melencongkan julat yang anda ingat, pengguna dengan alamat tetap kekal rosak dan semua orang lain melaporkan masalah itu selesai.

Tambah laluan di tempat balasan ditentukan

Laluan itu milik get laluan yang sudah digunakan oleh perkhidmatan dalaman, bukan perkhidmatan, melainkan perkhidmatan itu melencongkan trafiknya sendiri. Halakan ia ke alamat peribadi Access Server yang boleh dicapai, yang berbeza daripada alamat terowong yang dipegang klien.

ip route add 10.90.0.0/24 via 10.0.1.5
ip route get 10.90.0.25

Dalam rangkaian awan pernyataan yang sama menjadi entri jadual laluan yang sasarannya ialah instans atau antara muka rangkaian tempat pelayan berjalan, dengan semakan sumber dan destinasi dimatikan pada antara muka itu. Perhatikan apa yang entri itu tidak lakukan: laluan bukan pemberian akses, jadi kumpulan keselamatan, ACL rangkaian dan dinding api hos masih perlu membenarkan trafik.

Jadikan ia berterusan, dan pastikan saiz kolam jujur. Dua kolam tidak bersebelahan memerlukan dua laluan, dan kolam yang membesar melebihi awalannya yang dikonfigurasikan secara senyap menghasilkan klien yang balasannya tiada tempat untuk pergi. Jika anda mengawal julat kolam, pilih ringkasan yang boleh anda lengcongkan sekali dan biarkan.

Penghantaran dan penapis mesti sepadan dengan laluan

Penghalaan hanyalah separuh jalan. Pelayan mesti dibenarkan meneruskan antara terowong dan antara muka peribadi, yang dalam Linux bermaksud net.ipv4.ip_forward serta rantaian penghantaran yang membenarkan pasangan antara muka, dan pada hos yang dikeraskan biasanya peraturan eksplisit bagi setiap arah.

sysctl net.ipv4.ip_forward
nft list ruleset | grep -A5 forward

Penapisan berstate menerangkan gejala yang membawa orang ke laluan yang salah. Balasan dalam aliran yang sudah terbentuk tidak memerlukan peraturan masuk baharu, jadi sambungan yang tergantung selepas SYN-ACK tidak disekat oleh peraturan terima yang hilang; ia digugurkan atau dilencongkan dengan salah. Kekalkan perbezaan itu, kerana ia memisahkan perubahan penghalaan daripada perubahan dinding api.

Laluan balik asimetri ialah versi yang lebih senyap bagi masalah yang sama. Jika dua laluan sampai ke kolam dan balasan mengambil laluan yang keluar melalui antara muka berbeza daripada tempat permintaan masuk, penapisan laluan songsang yang ketat menggugurkannya dan aliran gagal hanya untuk sesetengah klien.

Dilencongkan atau menyamar: pilih dengan sedar

Mod dilencongkan mengekalkan alamat kolam klien pada perkhidmatan, yang membolehkan pengelogan dan dasar setiap klien, dan sebagai balasan setiap rangkaian dalaman yang mesti membalas klien memerlukan laluan kolam. Mod menyamar menghapuskan keperluan itu kerana balasan kembali ke pelayan, tetapi perkhidmatan tidak lagi boleh membezakan satu klien daripada yang lain dan tidak boleh memulakan apa-apa ke arah klien tertentu.

Mengubah tingkah laku itu pada pelayan yang sedang berjalan memutuskan sesi sedia ada, jadi uji dahulu dengan satu klien dan satu aliran. Jika pertukaran itu jawapan yang betul, ia keputusan konfigurasi pada pelayan, bukan sesuatu yang dielakkan dengan menambah laluan yang kemudiannya menjadi tidak perlu.

Subnet di belakang klien ialah tugas berasingan

Mencapai peranti pada LAN komputer riba itu sendiri bukan sama dengan mencapai alamat terowong komputer riba. Ia memerlukan klien bertindak sebagai get laluan subranet: rangkaian yang diisytiharkan di sisi klien, penghantaran diaktifkan dalam sistem pengendalian klien, dan laluan pada LAN itu kembali ke arah klien. Menambah laluan rangkaian peribadi untuk julat rumah komputer riba tidak melakukan ini, dan ia menimbulkan konflik apabila dua pengguna mempunyai julat rumah yang sama.

Arah juga merupakan persoalan dasar. Kebenaran untuk klien membuka sambungan ke perkhidmatan dalaman tidak secara automatik membenarkan hos dalaman membuka sambungan kepada klien itu. Semak dasar akses pelayan dan dinding api hos klien sebelum membuat kesimpulan bahawa laluan itu rosak.

Sahkan dengan satu aliran dan satu tangkapan

Buktikan laluan itu dengan satu sambungan dan bukannya ujian ketercapaian umum. Perhatikan aliran yang sama pada kedua-dua hujung: permintaan yang tiba di perkhidmatan dan balasan yang meninggalkannya.

tcpdump -ni any host 10.90.0.25 and port 443

Sebelum pembetulan tangkapan menunjukkan balasan keluar ke arah get laluan yang tidak akan melencongkannya. Selepas pembetulan balasan keluar ke arah pelayan dan aliran selesai. Kemudian sahkan laluan yang akan digunakan oleh get laluan untuk alamat klien kedua, supaya kolam yang belum anda liputi muncul sekarang dan bukan seminggu kemudian.

Akhiri dengan empat semakan yang menutup perkara ini: alamat sumber pada perkhidmatan sepadan dengan mod yang anda maksudkan, get laluan mempunyai laluan ke setiap kolam yang digunakan, penghantaran dan penapis membenarkan kedua-dua arah, dan satu aliran sebenar selesai dari hujung ke hujung. Soalan lazim penghalaan Access Server menyatakan prinsip yang sama untuk keluaran yang dipasang, yang antara muka konfigurasi yang disokongnya mungkin berbeza daripada panduan lama.

Artikel berkaitan