Halo semuanya, saya baru saja membaca
Tugas
Ada router TP-Link WDR3500 dan Orange Pi Zero H2. Kami ingin Orange Pi mengenkripsi terowongan seperti biasa, dan jika terjadi sesuatu, pemrosesan VPN akan kembali ke router. Semua pengaturan firewall di router akan berfungsi seperti sebelumnya. Dan secara umum, penambahan perangkat keras tambahan harus dilakukan secara transparan dan tidak terlihat oleh semua orang. OpenVPN bekerja melalui TCP, adaptor TAP dalam mode jembatan (server-bridge).
keputusan
Daripada menghubungkan melalui USB, saya memutuskan untuk menggunakan satu port router dan menghubungkan semua subnet yang memiliki jembatan VPN ke Orange Pi. Ternyata perangkat keras tersebut secara fisik akan hang di jaringan yang sama dengan server VPN di router. Setelah itu, kami menginstal server yang persis sama di Orange Pi, dan di router kami menyiapkan semacam proxy sehingga mengirimkan semua koneksi masuk ke server eksternal, dan jika Orange Pi mati atau tidak tersedia, maka ke server server cadangan internal. Saya mengambil HAProxy.
Ternyata seperti ini:
- Seorang klien tiba
- Jika server eksternal tidak tersedia, seperti sebelumnya, koneksi menuju ke server internal
- Jika tersedia, klien diterima oleh Orange Pi
- VPN di Orange Pi mendekripsi paket dan mengembalikannya ke router
- Router merutekannya ke suatu tempat
Contoh implementasi
Jadi, katakanlah kita memiliki dua jaringan di router - utama(1) dan tamu(2), untuk masing-masing jaringan terdapat server OpenVPN untuk menghubungkan secara eksternal.
Konfigurasi jaringan
Kita perlu merutekan kedua jaringan melalui satu port, jadi kita membuat 2 VLAN.
Di router, di bagian Jaringan/Switch, buat VLAN (misalnya 1 dan 2) dan aktifkan dalam mode tag pada port yang diinginkan, tambahkan eth0.1 dan eth0.2 yang baru dibuat ke jaringan yang sesuai (misalnya, tambahkan mereka ke brigadir).
Di Orange Pi kami membuat dua antarmuka VLAN (Saya punya Archlinux ARM + netctl):
/etc/netctl/vlan-main
Description='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
Aktifkan autostart untuk keempat profil (netctl aktifkan). Sekarang setelah reboot, Orange Pi akan hang di dua jaringan yang diperlukan. Kami mengonfigurasi alamat antarmuka pada Orange Pi di Sewa Statis di 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
Pengaturan VPN
Selanjutnya, salin pengaturan OpenVPN dan kunci dari router. Pengaturan biasanya dapat ditemukan di /tmp/etc/openvpn*.conf
Secara default, openvpn berjalan dalam mode TAP dan server-bridge menjaga antarmukanya tidak aktif. Agar semuanya 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
/etc/openvpn/vpn-up.sh
#!/bin/sh
ifconfig vpn-${profile_name} up
brctl addif br-${profile_name} vpn-${profile_name}
Akibatnya, segera setelah koneksi terjadi, antarmuka vpn-main akan ditambahkan ke br-main. Untuk jaringan tamu - demikian pula, hingga nama antarmuka dan alamat di server-bridge.
Merutekan permintaan secara eksternal dan proksi
Pada langkah ini, Orange Pi sudah dapat menerima koneksi dan menghubungkan klien ke jaringan yang diperlukan. Yang tersisa hanyalah mengkonfigurasi proxy koneksi masuk di router.
Kami mentransfer server VPN router ke port lain, menginstal HAProxy di router 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
Menikmati
Jika semuanya berjalan sesuai rencana, klien akan beralih ke Orange Pi dan prosesor router tidak lagi memanas, dan kecepatan VPN akan meningkat secara signifikan. Pada saat yang sama, semua aturan jaringan yang terdaftar di router akan tetap relevan. Jika terjadi kecelakaan pada Orange Pi, ia akan jatuh dan HAProxy akan mentransfer klien ke server lokal.
Terima kasih atas perhatiannya, saran dan koreksi dipersilahkan.
Sumber: www.habr.com