Lalu satu subnet LAN melalui OpenVPN dan kekalkan laluan lalai
Kekalkan laluan lalai LAN semasa satu subnet menaiki terowong. Bandingkan jadual dasar dengan suntingan jadual utama, kemudian pilih NAT atau laluan di sebelah pelayan.
Kotak yang membuat penghalaan untuk LAN dan pada masa sama mendail VPN berakhir dalam hujah yang sama dengan diri sendiri: terowong mahu memiliki laluan lalai, dan LAN memerlukannya kembali. Apabila OpenVPN menyambung, ia mungkin memasang laluan lalai melalui terowong atau sepasang separuh-lalai, yang betul untuk komputer riba dan salah untuk get laluan yang jirannya menjangka balasan daripada alamat LAN-nya. Jawapannya bukan melangkau VPN. Jawapannya ialah memberi kedua-dua keputusan jadual yang berbeza.
Satu laluan lalai, dua pemilik
Trafik yang dimajukan dan trafik yang berasal secara setempat tidak perlu menempuh laluan yang sama. Klien LAN hanya memerlukan terowong untuk destinasi yang anda pilih, manakala sesi pengurusan hos itu sendiri dan balasannya kepada klien tersebut memerlukan laluan lalai LAN. Mencampurkan kedua-duanya dalam jadual utama memaksa satu jawapan ke atas dua soalan yang berbeza.
OpenVPN mempunyai suis khusus untuk ini. route-noexec menghalang klien daripada menyentuh jadual utama sama sekali, dan nilai yang akan digunakannya dieksport ke skrip route-up sebagai route_vpn_gateway, dev dan alamat antara muka. Kemudian anda memutuskan jadual mana menerima laluan mana, dalam kod yang boleh anda baca kemudian.
Jadual dasar berbanding menulis semula jadual utama
| Approach | What it buys | What it costs |
|---|---|---|
| Separate table plus source rule | LAN traffic and host traffic keep independent defaults | Every lookup now depends on rule order |
| Editing the main table only | Fewer moving parts on a single-purpose host | One mistake takes the gateway offline entirely |
| Two half-default routes | Works for a full-tunnel client | Ambiguous on a host that must answer on its LAN address |
Jadual berasingan ialah satu-satunya pilihan yang berskala melepasi satu subnet. Beri ia nama sekali, kemudian rujuk dengan namanya supaya tiada siapa perlu mengingati nombor:
echo "10 vpn" >> /etc/iproute2/rt_tables
ip rule add from 192.168.50.0/24 table vpn
ip route add default via 10.8.0.1 dev tun0 table vpnAlamat di sini ialah pemegang tempat. Gantikan awalan LAN, get laluan terowong dan nama peranti daripada penggunaan anda sendiri sebelum menjalankan apa-apa.
Peraturan itu mesti sepadan dengan hos juga
Peraturan yang hanya sepadan dengan awalan LAN meliputi paket yang dimajukan. Ia tidak meliputi trafik yang dihasilkan oleh get laluan itu sendiri, dan tidak meliputi balasan yang dihantar kembali kepada klien LAN, yang membawa alamat LAN get laluan sebagai sumbernya. Carian itu jatuh ke main dan masih boleh keluar melalui terowong.
Tambah peraturan kedua untuk alamat LAN get laluan itu sendiri, atau luaskan peraturan pertama kepada set yang merangkumi kedua-duanya. Urutan penting: letakkan peraturan yang lebih khusus dahulu, dan semak hasilnya dengan carian yang menamakan sumber secara jelas.
ip route get 203.0.113.9 from 192.168.50.1Jika itu melaporkan peranti terowong untuk destinasi yang sepatutnya kekal setempat, set peraturan itu salah tanpa mengira apa yang terkandung dalam jadual.
NAT atau laluan di sebelah jauh
Pelayan VPN mengetahui subnet terowong dan tiada yang lain. Paket yang tiba dengan alamat sumber LAN tiada laluan balik melainkan seseorang menyediakannya, dan ada tepat dua cara untuk menyediakannya. Menambah laluan untuk awalan LAN pada pelayan mengekalkan sumber asal kelihatan dari hujung ke hujung, yang biasanya dikehendaki oleh reka bentuk yang diaudit. Penyamaran pada get laluan menulis semula sumber kepada alamat terowong dan tidak memerlukan kerjasama daripada pelayan.
iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o tun0 -j MASQUERADEPilih NAT apabila anda tidak mengawal pelayan dan tidak boleh menambah laluan di sana. Pilih laluan di sebelah pelayan apabila log, kawalan akses atau simetri laluan balik penting, kerana penyamaran memadam alamat asal daripada semua yang direkodkan oleh sebelah jauh.
Sama ada cara, pemajuan mesti diaktifkan, dan penapisan laluan balik yang ketat boleh menggugurkan balasan apabila main tidak akan memilih terowong untuk sumber itu. Semak nilai berkesan sebelum menyalahkan terowong.
Jadikan pemisahan bertahan selepas sambung semula
Peraturan dan laluan yang ditambah dengan tangan hilang apabila antara muka dicipta semula, dan entri jadual yang lapuk boleh hidup lebih lama daripada sesi yang mewajarkannya. Letakkan peraturan jadual, laluan terowong dan entri penyamaran di dalam skrip route-up klien, dan kosongkan jadual di bahagian atas skrip supaya get laluan lama tidak dapat bertahan ke sesi baharu.
Sahkan dari kedua-dua hujung: carian pada get laluan dengan sumber LAN, dan permintaan sebenar daripada klien LAN ke destinasi yang sepatutnya menyeberangi terowong. Laluan yang wujud tetapi tidak pernah dipilih berkelakuan sama seperti tiada laluan langsung sehingga anda membaca pembilangnya.