Satu Pi, Dua Instance OpenVPN: Apa yang Dibaca Setiap Unit
Dua daemon OpenVPN pada satu Pi membaca fail konfigurasi berbeza dan keluar melalui cangkuk berbeza. Petakan setiap instance, kemudian uji laluan muatan secara berasingan.
Kira proses OpenVPN sebelum anda menyentuh profil. Pi yang menerima pengguna merayau dan juga mendail perkhidmatan huluan menjalankan dua daemon, dan setiap satu membaca fail konfigurasi yang dipilih oleh nama instance yang anda taip. Templat pakej kemudian memberikan setiap daemon direktori kerjanya sendiri, fail status masa jalan sendiri dan peranti terowong sendiri. Jika pembahagian ini salah, anda akan menghabiskan satu malam menukar tetapan yang betul di dalam fail yang tidak pernah dibuka oleh proses yang sedang berjalan.
Setiap nama instance memilih failnya sendiri
Dalam fail unit yang dibekalkan dengan OpenVPN 2.6, argumen mula membawa pemegang tempat instance yang diisi daripada teks selepas tanda @. Templat pelayan berjalan dari direktori konfigurasi pelayan dan menyelesaikan argumennya terhadap %i.conf di sana, manakala templat klien melakukan perkara yang sama dari direktori klien. Jadi [email protected] membaca admits.conf dalam direktori pelayan dan [email protected] membaca uplink.conf dalam direktori klien, dan tiada satu pun nama itu mempunyai makna dalam direktori yang satu lagi.
Sahkan pemetaan itu pada mesin dan jangan andaikan pakej mengekalkan nilai lalai huluan. Drop-in pengedaran dibenarkan menggantikan direktori kerja atau argumen konfigurasi sepenuhnya.
systemctl cat [email protected]
systemctl cat [email protected]Baca baris WorkingDirectory dan argumen konfigurasi dalam output itu, kerana unit yang didayakan sahaja yang menentukan fail mana dimuatkan. Drop-in yang menambah --config pada ExecStart mengalahkan templat walaupun laluan templat kelihatan betul. Minta laluan fragmen dan drop-in apabila anda ingin tahu sama ada pengatasan setempat sedang berlaku. Jika kedua-dua peranan diselesaikan kepada satu fail, anda mempunyai satu proses yang cuba menjadi pelayan dan klien sekali gus, dan pilihan yang lebih kemudian dalam fail itu menang secara senyap.
Pengangkutan setempat dan muatan yang dimajukan menemui cangkuk berbeza
Sambungan tersulit pelayan ke setiap pengguna merayau dijana pada Pi itu sendiri, jadi balasan luarnya keluar melalui cangkuk output setempat. Sambungan klien ke rakan huluannya juga output yang dijana secara setempat, walaupun ia mencapai rangkaian jauh. Muatan yang dimajukan ialah kategori ketiga, dan kernel memadankannya hanya selepas ia sudah memilih peranti keluar untuk paket itu.
| Flow | Hook that sees it | What to inspect |
|---|---|---|
| Roaming user handshakes to the server | Local input and local output | Listener socket, bind address, rule admitting the UDP port |
| User payload leaving through the upstream tunnel | Forward | IPv4 forwarding switch, selected route, permission rule, any translation |
| Pi's own connection to the upstream peer | Local output | Underlay route to the provider endpoint, not the tunnel route |
Peraturan yang memadankan antara muka keluar di dalam rantaian forward boleh membenarkan atau menggugurkan paket yang telah ditetapkan oleh penghalaan kepada antara muka itu, tetapi ia tidak pernah memilih antara muka itu. Apabila satu hos menamatkan satu terowong dan memulakan yang lain, dasar yang menghantar muatan pengguna ke terowong huluan dan dasar yang melindungi balasan tersulit Pi sendiri ialah dua keputusan berasingan. Kedua-duanya kebetulan mendarat pada NIC fizikal yang sama, sebab itulah ia dikelirukan.
Perbezaan itu menjelaskan kegagalan separuh yang biasa. Pengguna bersambung, jabat tangan selesai, dan trafik mereka masih keluar melalui jalan yang salah, kerana jabat tangan itu setempat dan muatan itu forward dan hanya satu daripada kedua-duanya pernah diuji.
Laluan yang diimport boleh menelan balasan kepada pengguna anda
Tetapan keselamatan profil klien menentukan apa yang boleh ditolak huluan ke dalam jadual penghalaan Pi, dan ubah hala yang luas ialah pilihan yang menukar hos dwi-peranan yang berfungsi menjadi rosak. Jika laluan yang ditolak meliputi alamat awam pengguna merayau, balasan yang dijana pelayan ke arah mereka boleh mengikut laluan baharu itu masuk ke terowong huluan dan bukannya keluar melalui underlay. Orang sering mengesahkan terowong ke pembekal masih berfungsi dan berhenti di situ, kerana trafik itu ialah pengangkutan terowong itu sendiri dan ia terus mengalir sementara segala-galanya salah tingkah laku.
Dasar berasaskan sumber atau mark ialah cara kedua-dua aliran kekal berasingan. Pilihan mark Linux OpenVPN mengecap paket tersulit daemon sendiri dengan mark tembok api, yang kemudian boleh dihantar oleh peraturan penghalaan ke jadual khusus. Alamat sumber berfungsi sama baik apabila balasan luar pelayan sentiasa keluar dari satu alamat underlay. Kedua-dua pendekatan memerlukan laluan sah dalam jadual yang dipilihnya dan pengecualian untuk titik akhir pembekal, jika tidak terowong itu sendiri tidak lagi naik.
Tanya kernel laluan yang sebenarnya akan diambil oleh balasan sebelum menulis apa-apa peraturan. Alamat di bawah ialah pemegang tempat untuk alamat underlay Pi dan alamat awam seorang pengguna merayau.
ip rule show
ip route get 198.51.100.7 from 192.0.2.10Sahkan pemisahan, kemudian hentikan satu peranan pada satu masa
Uji tiga aliran secara berasingan, kerana jabat tangan yang berjaya tidak membuktikan apa-apa tentang dua yang lain. Terima sambungan masuk baharu, hantar satu aplikasi yang dibenarkan melalui pintu keluar huluan, dan sahkan bahawa kedua-dua proses masih mencapai rakan masing-masing.
Kemudian hentikan peranan klien dan perhatikan apa yang dikekalkan oleh peranan pelayan. Ini cara paling murah untuk mencari peraturan laluan atau mark yang dimaksudkan untuk satu instance tetapi digunakan pada kedua-duanya.
systemctl stop [email protected]
systemctl status [email protected] --no-pager
ss -lunp | grep openvpn
journalctl -u [email protected] -n 20 --no-pagerApa yang anda mahu lihat ialah pendengar masih terikat, peranti terowong masih wujud, dan log bebas daripada ralat baharu semasa peranan klien dimatikan. Jika menghentikan klien juga memutuskan balasan pelayan kepada pengguna sedia ada, kedua-dua peranan berkongsi sesuatu yang sepatutnya dihadkan kepada salah satu daripadanya. Catat instance mana, fail konfigurasi mana dan pemilik aliran mana yang disentuh oleh setiap perubahan, kerana orang seterusnya yang menyahpepijat hos ini jika tidak akan mengulangi penemuan yang sama dari sifar.