Klien OpenVPN tidak nampak satu sama lain: subnet atau net30?
Klien sampai ke pelayan tetapi tidak ke satu sama lain. Pisahkan kerosakan dengan satu ping, kemudian pilih topologi subnet, client-to-client atau segmen TAP berjambatan.
Dua kerosakan tidak berkaitan menghasilkan aduan yang sama. Dalam yang pertama, satu klien tidak sampai ke klien lain walaupun melalui alamat terowong, kerana alamatnya bukan dalam satu subnet atau pelayan tidak memajukan trafik antara rakan. Dalam yang kedua, ping berfungsi tetapi senarai peranti aplikasi kekal kosong, kerana penemuan bergantung pada broadcast yang terowong lapisan 3 tidak dapat membawa. Satu ping memisahkan keduanya, dan pembaikan bagi setiap satu sama sekali tidak menyerupai pembaikan yang lain.
Satu ping membelah masalah kepada dua
Dari satu klien, ping alamat terowong klien yang lain, bukan namanya dan bukan alamat LAN-nya. Jika ia gagal, pemajuan atau pengalamatan ialah masalahnya dan penemuan tidak relevan sehingga ia diperbaiki. Jika ia berjaya, pemajuan sudah berfungsi dan jurang yang tinggal ialah broadcast atau penyelesaian nama.
ip addr show tun0
Baca antara muka klien sebelum apa-apa lagi, kerana netmask menamakan topologinya. /24 atau topeng subnet lain bermaksud kumpulan dikongsi; /30 dengan alamat rakan bermaksud susun atur titik-ke-titik lama, di mana setiap klien mempunyai tepat satu jiran, pelayan.
net30 berbanding subnet, dibaca dari sisi klien
| What you observe | net30 | subnet |
|---|---|---|
| Client netmask | /30 with a peer address | The pool's own mask |
| Peers a client can address directly | One, the server | Every client in the pool |
| Addressing | One /30 block per client, with the server as the only peer | One pool mask shared by all clients |
| Effect of client-to-client | Required for any peer traffic | Required for peer traffic, still no broadcast |
Dengan net30 pelayan memberikan blok kecil bagi setiap klien, jadi laluan ke alamat terowong klien lain tidak wujud melainkan pelayan memajukannya. Dengan subnet seluruh kumpulan ialah satu rangkaian, setiap klien boleh menuju ke setiap yang lain, dan pelayan memajukan antara mereka. Itulah sebabnya satu konfigurasi pelayan boleh kelihatan sihat sementara ping antara rakan gagal: tiada apa yang rosak, kliennya memang tidak berada dalam satu rangkaian. Klien melihat pautan yang berfungsi dan alamat rakan yang tidak menjawab, yang terbaca seperti firewall tetapi sebenarnya susun atur pengalamatan.
Menukar direktif ialah suntingan di sisi pelayan serta mula semula, dan ia terpakai pada sambungan seterusnya, bukan sesi yang sudah dibuka. Sambungkan semula klien sebelum menilai perubahan. Jika perkakas menjana semula konfigurasi daripada antara muka web, catat direktif, fail dan tarikhnya, dan lakukan suntingan melalui antara muka apabila ada, kerana pembinaan semula akan menimpa suntingan manual pada penyimpanan seterusnya.
client-to-client ialah pintu berasingan
Walaupun dalam satu subnet pelayan membuang paket yang datang dari satu klien dan dialamatkan kepada klien lain melainkan client-to-client ditetapkan. Kata kunci itu menjadikan pelayan pemaju trafik antara rakan dan bukan titik akhir yang hanya menerimanya. Itulah syarat kedua yang orang terlepas selepas membaiki topologi.
Ia tidak meluas kepada broadcast. Tetapan ini memajukan unicast antara klien; ia tidak menjadikan terowong segmen dikongsi, dan berapa banyak pun ia tidak akan menghantar pertanyaan penemuan multicast kepada setiap rakan.
TUN berbanding TAP, dan apa yang masing-masing boleh bawa
| Property | TUN | TAP |
|---|---|---|
| Layer | Layer 3, IP packets | Layer 2, Ethernet frames |
| Broadcast and multicast | Not carried | Carried |
| Bridging to the LAN | Not applicable | Required for a shared segment |
| Client platform support | Everywhere | Missing on Android and iOS, limited on macOS |
Menjambatani peranti tap ke dalam LAN meletakkan klien jauh dalam domain broadcast pejabat, yang menyelesaikan penemuan sepenuhnya. Harganya ialah platform yang tidak melaksanakan TAP, jambatan yang mesti wujud pada pelayan, dan domain kegagalan tempat badai broadcast pada kabel pejabat sampai ke setiap komputer riba jauh.
Bagi dua atau tiga stesen kerja yang memerlukan penyelesaian nama, entri hosts atau alamat unicast jauh lebih murah daripada jambatan. Gunakan TAP apabila protokol yang tidak boleh anda ganti bergantung pada penemuan lapisan 2, dan bukan sebelum itu.
Klien subnet yang sama tanpa jambatan
Memberi alamat daripada julat LAN tidak meletakkan klien pada kabel. Pelayan menghala antara terowong dan Ethernet, jadi ARP bagi alamat itu berhenti pada antara muka pelayan dan seluruh LAN tidak pernah tahu di mana ia tinggal.
ip neigh add proxy 10.50.1.250 dev eth0
Proxy ARP menutup jurang itu dengan membenarkan pelayan menjawab bagi pihak klien. Bagi julat, parpd menguruskan entri ketika klien datang dan pergi, manakala sysctl net.ipv4.conf.eth0.proxy_arp=1 menjawab bagi semua yang dihalakan ke tempat lain, yang cukup luas untuk mencipta kejutan tersendiri pada segmen sibuk.
Laluan mana pun yang anda pilih, buang NAT antara terowong dan kabel. Peraturan MASQUERADE menyembunyikan tepat soalan pengalamatan yang anda cuba jawab. Ia juga meninggalkan orang seterusnya dengan topologi yang tidak dapat ia fikirkan dari sisi klien.
Sebelum mengubah apa-apa, tangkap satu percubaan pada pelayan dengan tcpdump -ni tun0 dan sahkan sama ada paket rakan benar-benar tiba. Tiba lalu dibuang menunjukkan client-to-client; tidak pernah tiba menunjukkan topologi atau penghalaan. Manual OpenVPN 2.6 mendokumenkan kedua-dua kata kunci dan topologi lalai, yang wajar dibandingkan dengan versi anda sebelum menyalin satu baris daripada kiriman forum.
- Antara muka tun menunjukkan topeng kumpulan dan bukan pasangan rakan /30.
- Ping terus ke alamat terowong yang lain berjaya sebelum anda menguji penemuan.
- Konfigurasi pelayan menyertakan
client-to-clientsetiap kali rakan perlu bertukar paket. - Namakan protokol penemuan yang anda uji dan bukan mengatakan aplikasi gagal.
- Gunakan TAP hanya jika setiap platform klien dalam kumpulan menyokongnya.
- Jauhkan NAT daripada laluan antara terowong dan LAN apabila ketercapaian dalam subnet yang sama penting.