
Halo semuanya, saya baru-baru ini membaca
artikel lama tentang cara mempercepat OpenVPN pada router, mentransfer enkripsi ke perangkat keras terpisah, yang disolder di dalam router itu sendiri. Saya memiliki kasus serupa dengan penulis - TP-Link WDR3500 dengan 128 megabyte RAM dan prosesor yang buruk yang tidak dapat mengatasi enkripsi terowongan. Namun, saya pasti tidak ingin naik ke router dengan besi solder. Di bawah potongan, pengalaman saya memindahkan OpenVPN ke perangkat keras terpisah dengan redundansi pada router jika terjadi kecelakaan.
Tantangan
Ada router TP-Link WDR3500 dan Orange Pi Zero H2. Kami ingin Orange Pi untuk menangani enkripsi terowongan dalam mode normal, dan jika terjadi sesuatu, pemrosesan VPN akan kembali ke router. Semua pengaturan firewall pada router harus berfungsi seperti sebelumnya. Secara umum, secara umum, penambahan perangkat keras tambahan harus transparan dan tidak terlihat untuk semua orang. OpenVPN berfungsi melalui TCP, adaptor TAP dalam mode jembatan (server-jembatan).
Solusi
Alih-alih terhubung melalui USB, saya memutuskan untuk menghabiskan satu port router dan mendapatkan semua subnet yang memiliki jembatan VPN di atasnya pada Orange Pi. Ternyata potongan besi secara fisik akan menggantung di jaringan yang sama dengan server VPN pada router. Setelah itu, kami menaikkan server yang sama persis ke Orange Pi, dan mengonfigurasi beberapa jenis proksi di router sehingga mengirimkan semua koneksi yang masuk ke server eksternal, dan jika Orange Pi mati atau tidak tersedia, maka ke server fallback internal. Saya mengambil HAProxy.
Ternyata seperti ini:
- Pelanggan datang
- Jika server eksternal tidak tersedia - seperti sebelumnya, koneksi masuk ke server internal
- Jika tersedia, klien menerima Orange Pi
- VPN pada Orange Pi mendekripsi paket dan meludahkannya kembali ke router
- Router sedang merutekannya di suatu tempat
Contoh implementasi
Jadi, mari kita memiliki dua jaringan pada router - main (1) dan guest (2), untuk masing-masingnya ada server OpenVPN untuk menghubungkan dari luar.
Konfigurasi jaringan
Kami perlu meneruskan kedua jaringan melalui satu port, oleh karena itu kami membuat 2 VLAN'a.
Pada router di bagian Network / Switch, buat VLAN (misalnya, 1 dan 2) dan aktifkan dalam mode tag pada port yang diinginkan, tambahkan eth0.1 yang baru dibuat dan eth0.2 ke jaringan yang sesuai (misalnya, tambahkan ke brigde).
Kami membuat dua antarmuka VLAN di Orange Pi (Saya punya Archlinux ARM + netctl):
/ etc / netctl / vlan-mainDescription='Main VLAN on eth0' Interface=vlan-main Connection=vlan BindsToInterfaces=eth0 VLANID=1 IP=no
/ etc / netctl / vlan-guest Description='Guest VLAN on eth0' Interface=vlan-guest Connection=vlan BindsToInterfaces=eth0 VLANID=2 IP=no
Dan kami segera membuat dua jembatan untuk mereka:
/ etc / netctl / br-main Description="Main Bridge connection" Interface=br-main Connection=bridge BindsToInterfaces=(vlan-main) IP=dhcp
/ etc / netctl / br-guest Description="Guest Bridge connection" Interface=br-guest Connection=bridge BindsToInterfaces=(vlan-guest) IP=dhcp
Kami mengaktifkan autostart pada semua 4 profil (mengaktifkan netctl). Sekarang, setelah reboot, Orange Pi akan menggantung di dua jaringan yang diperlukan. Alamat antarmuka pada Orange Pi dikonfigurasi dalam Sewa Statis pada router.
ip addr show 4: vlan-main@eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-main state UP group default qlen 1000 link/ether 02:42:f0:f8:23:c8 brd ff:ff:ff:ff:ff:ff inet6 fe80::42:f0ff:fef8:23c8/64 scope link valid_lft forever preferred_lft forever 5: vlan-guest@eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-guest state UP group default qlen 1000 link/ether 02:42:f0:f8:23:c8 brd ff:ff:ff:ff:ff:ff inet6 fe80::42:f0ff:fef8:23c8/64 scope link valid_lft forever preferred_lft forever 6: br-main: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:c7:0f:89:71:6e brd ff:ff:ff:ff:ff:ff inet 192.168.1.3/24 brd 192.168.1.255 scope global dynamic noprefixroute br-main valid_lft 29379sec preferred_lft 21439sec inet6 fe80::50c7:fff:fe89:716e/64 scope link valid_lft forever preferred_lft forever 7: br-guest: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether ee:ea:19:31:34:32 brd ff:ff:ff:ff:ff:ff inet 192.168.2.3/24 brd 192.168.2.255 scope global br-guest valid_lft forever preferred_lft forever inet6 fe80::ecea:19ff:fe31:3432/64 scope link valid_lft forever preferred_lft forever
Penyiapan VPN
Selanjutnya, salin pengaturan untuk OpenVPN dan kunci dari router. Pengaturan biasanya dapat ditemukan di
/tmp/etc/openvpn*.confSecara default, openvpn berjalan dalam mode TAP dan server-bridge membuat antarmuka tidak aktif. Untuk membuatnya berfungsi, Anda perlu menambahkan skrip yang berjalan saat koneksi diaktifkan.
/etc/openvpn/main.conf dev vpn-main dev-type tap client-to-client persist-key persist-tun ca /etc/openvpn/main/ca.crt cert /etc/openvpn/main/main.crt cipher AES-256-CBC comp-lzo yes dh /etc/openvpn/main/dh2048.pem ifconfig-pool-persist /etc/openvpn/ipp_main.txt keepalive 10 60 key /etc/openvpn/main/main.key port 443 proto tcp push "redirect-gateway" push "dhcp-option DNS 192.168.1.1" server-bridge 192.168.1.3 255.255.255.0 192.168.1.200 192.168.1.229 status /tmp/openvpn.main.status verb 3 setenv profile_name main script-security 2 up /etc/openvpn/vpn-up.sh
Akibatnya, segera setelah koneksi terjadi, antarmuka vpn-main akan ditambahkan ke br-main. Untuk grid tamu, hal yang sama berlaku untuk nama antarmuka dan alamat di server-bridge.
Permintaan Routing Di Luar dan Proxy
Pada langkah ini, Orange Pi sudah dapat menerima koneksi dan membiarkan klien masuk ke jaringan yang diperlukan. Masih mengkonfigurasi proxy dari koneksi yang masuk pada router.
Kami mentransfer server VPN router ke port lain, meletakkannya di router HAProxy dan mengkonfigurasi:
/etc/haproxy.cfg global maxconn 256 uid 0 gid 0 daemon defaults retries 1 contimeout 1000 option splice-auto listen guest_vpn bind :444 mode tcp server 0-orange 192.168.2.3:444 check server 1-local 127.0.0.1:4444 check backup listen main_vpn bind :443 mode tcp server 0-orange 192.168.1.3:443 check server 1-local 127.0.0.1:4443 check backup
Selamat menikmati
Jika semuanya berjalan sesuai rencana, pelanggan akan pergi ke Orange Pi dan prosesor router tidak lagi memanas, dan kecepatan VPN akan meningkat secara signifikan. Dalam hal ini, semua aturan jaringan yang terdaftar pada router akan tetap relevan. Jika terjadi kecelakaan pada Orange Pi, itu akan jatuh dan HAProxy akan membungkus klien di server lokal.
Terima kasih atas perhatian Anda, saran dan koreksi dipersilahkan.