Laluan ke rangkaian VPN membawa dua alamat yang mudah dikelirukan: awalan destinasi yang cuba dicapai oleh paket dan lompatan seterusnya yang akan menggerakkannya satu langkah lebih dekat. Pada hos LAN, lompatan seterusnya itu mesti penghala yang benar-benar boleh anda capai pada pautan yang sama. Alamat VPN jauh bukan lompatan seterusnya, walau seberapa kemas ia sepadan dengan destinasi yang ada dalam fikiran anda.

Buku panduan ini merangkumi kes biasa: komputer riba pada 192.168.20.0/24, gateway VPN dengan alamat LAN 192.168.20.5, dan rangkaian jauh 10.70.0.0/24 di belakang gateway itu. Semua arahan di bawah menganggap anda berada pada komputer riba melainkan dinyatakan sebaliknya.

Dua alamat, satu laluan

Entri yang dimaksudkan ialah 10.70.0.0/24 via 192.168.20.5. Awalan memberitahu ke mana paket pergi; alamat via memberitahu siapa yang membawanya ke sana. Kernel enggan memasang laluan yang gateway-nya tidak dapat dicapainya melalui antara muka yang anda namakan, dan penolakan itu ialah keseluruhan maksudnya: lompatan seterusnya yang memerlukan terowong untuk boleh dicapai tidak boleh menjadi lompatan seterusnya yang membina terowong.

Jadi semakan pertama bukan «adakah gateway hidup» tetapi «adakah gateway pada pautan ini». Subnet komputer riba itu sendiri, entri ARP atau jirannya, dan antara muka dalam laluan semuanya mesti bersetuju. Alamat yang hanya wujud di dalam 10.70.0.0/24 boleh menjadi destinasi laluan kedua, tetapi tidak pernah menjadi via laluan pertama.

Apa yang lompatan seterusnya wajibkan pada gateway

Memasang laluan pada komputer riba hanya menentukan penyerahan pertama. Selepas itu gateway memerlukan laluannya sendiri: pemajuan diaktifkan, laluan terowong untuk 10.70.0.0/24, dan sebarang dasar akses yang menentukan siapa boleh menggunakannya. Pada Linux itu net.ipv4.ip_forward=1 serta laluan terowong; tembok api di hadapannya memerlukan peraturan yang membenarkan aliran yang dimajukan.

Arah pulang ialah bahagian yang orang lupakan. Bahagian jauh mesti mempunyai laluan pulang ke 192.168.20.0/24, atau reka bentuk mesti menterjemah sumber komputer riba kepada sesuatu yang dikenali bahagian jauh. Ping yang berfungsi dari gateway membuktikan gateway boleh mencapai rangkaian jauh; ia tidak berkata apa-apa tentang sama ada paket komputer riba bertahan dalam perjalanan pulang.

Sahkan carian daripada hos yang menghantar

Tanya kernel lompatan seterusnya yang akan dipilihnya, dan baca antara muka dalam jawapannya:

ip route get 10.70.0.10
ip route show 10.70.0.0/24
ip neigh show 192.168.20.5

Jika carian melaporkan gateway dan antara muka LAN, segmen pertama dikonfigurasikan seperti yang dimaksudkan. Jika ia melaporkan peranti terowong, sesuatu yang lebih awal dalam jadual lebih khusus dan sedang menang. Jika laluan langsung tidak dipasang, kernel memberitahu anda bahawa gateway tidak dapat dicapai, dan mesej itu lebih berguna daripada sebarang tangkapan paket.

Kemudian ulangi ujian dari tempat yang betul. Permintaan yang dicipta pada gateway menggunakan alamat sumber gateway itu sendiri, yang boleh menyembunyikan laluan pulang yang hilang atau dasar yang hanya membenarkan sumber tertentu. Manual ip-route memisahkan destinasi, gateway dan penggantian onlink, dan penggantian itu wajar difahami sebelum anda menggunakannya.

Jangan gunakan onlink untuk memalsukan kebolehcapaian

onlink memberitahu kernel supaya melangkau semakan kebolehcapaian bagi sesuatu gateway dan tetap menghantar ke sana. Ia tidak mencipta laluan, tidak menyelesaikan ARP bagi alamat yang tiada, dan tidak menyebabkan penghala jauh menjawab pada segmen Ethernet anda. Ia sah untuk gateway yang menjawab tetapi tidak berada dalam subnet bersambung, dan ia perangkap apabila digunakan untuk mendiamkan ralat yang belum anda jelaskan.

Jika laluan hanya dipasang dengan onlink, soalan seterusnya ialah mengapa gateway tidak berada di tempat yang anda sangka. VLAN yang salah, alamat kedua pada antara muka yang salah, atau salah taip pada oktet terakhir semuanya menghasilkan ini, dan setiap satunya juga memecahkan laluan pulang sebaik sahaja trafik mula mengalir.

Terowong titik-ke-titik bukan Ethernet

Peranti terowong tidak melakukan ARP dan selalunya tidak mempunyai subnet jiran yang bermakna. Laluannya sering kelihatan seperti 10.70.0.0/24 dev tun0, tanpa sebarang via, kerana rakan setara ialah satu-satunya hujung lain. Menyalin via gaya LAN ke dalam jadual itu menghasilkan laluan yang mungkin ditolak kernel atau, lebih teruk, yang menunjuk ke alamat yang tidak pernah dijawab oleh rakan setara.

Asingkan kedua-dua model dalam buku panduan: laluan LAN mempunyai gateway yang boleh dicapai, laluan terowong mempunyai antara muka dan rakan setara. WireGuard, OpenVPN dan IPsec semuanya memaparkan bentuk yang sedikit berbeza, jadi catat bentuk yang benar-benar anda gunakan dan bukannya mengitlak daripada satu hos.

Tambah, sahkan, gulung balik

Seluruh perubahan ialah tiga arahan dan satu semakan, dan ia patut ditulis dalam urutan itu:

sudo ip route add 10.70.0.0/24 via 192.168.20.5
ip route get 10.70.0.10
ping -c 3 10.70.0.10
sudo ip route del 10.70.0.0/24 via 192.168.20.5

Sahkan laluan, sahkan satu destinasi, kemudian sediakan baris pemadaman sekiranya perubahan itu menjadikan hos tidak dapat dicapai dengan cara yang tidak anda jangkakan. Jika laluan mesti bertahan selepas but semula, letakkan dalam konfigurasi rangkaian hos dan bukan dalam profil shell, dan uji but semula sebelum anda bergantung padanya. Laluan yang hanya wujud dalam shell yang menambahnya ialah laluan yang akan anda nyahpepijat dua kali.

Artikel berkaitan