Hello semua, saya baru-baru ini membaca
Petugas
Terdapat penghala TP-Link WDR3500 dan Orange Pi Zero H2. Kami mahu Orange Pi menyulitkan terowong seperti biasa, dan jika sesuatu berlaku padanya, pemprosesan VPN akan kembali ke penghala. Semua tetapan tembok api pada penghala harus berfungsi seperti sebelumnya. Dan secara umum, menambah perkakasan tambahan hendaklah telus dan tidak dapat dilihat oleh semua orang. OpenVPN berfungsi melalui TCP, penyesuai TAP berada dalam mod jambatan (jambatan pelayan).
keputusan
Daripada menyambung melalui USB, saya memutuskan untuk menggunakan satu port penghala dan menyambungkan semua subnet yang mempunyai jambatan VPN ke Orange Pi. Ternyata perkakasan secara fizikal akan digantung dalam rangkaian yang sama seperti pelayan VPN pada penghala. Selepas itu, kami memasang pelayan yang sama pada Orange Pi, dan pada penghala kami menyediakan beberapa jenis proksi supaya ia menghantar semua sambungan masuk ke pelayan luaran, dan jika Orange Pi mati atau tidak tersedia, kemudian ke pelayan sandaran dalaman. Saya mengambil HAProxy.
Ternyata begini:
- Seorang pelanggan tiba
- Jika pelayan luaran tidak tersedia, seperti sebelum ini, sambungan pergi ke pelayan dalaman
- Jika tersedia, pelanggan diterima oleh Orange Pi
- VPN pada Orange Pi menyahsulit paket dan meludahkannya kembali ke penghala
- Penghala mengarahkan mereka ke suatu tempat
Contoh pelaksanaan
Jadi, marilah kita mempunyai dua rangkaian pada penghala - utama(1) dan tetamu(2), bagi setiap daripada mereka terdapat pelayan OpenVPN untuk menyambung secara luaran.
Konfigurasi rangkaian
Kami perlu menghalakan kedua-dua rangkaian melalui satu port, jadi kami mencipta 2 VLAN.
Pada penghala, dalam bahagian Rangkaian/Tukar, buat VLAN (contohnya 1 dan 2) dan dayakannya dalam mod berteg pada port yang dikehendaki, tambahkan eth0.1 dan eth0.2 yang baru dibuat pada rangkaian yang sepadan (contohnya, tambah mereka ke brigde).
Pada Orange Pi kami mencipta dua antara muka VLAN (saya mempunyai 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 mencipta dua jambatan 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
Dayakan autostart untuk semua 4 profil (netctl enable). Kini selepas but semula, Orange Pi akan digantung pada dua rangkaian yang diperlukan. Kami mengkonfigurasi alamat antara muka pada Orange Pi dalam Pajakan Statik pada penghala.
paparan ip addr
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
Menyediakan VPN
Seterusnya, kami menyalin tetapan untuk OpenVPN dan kunci daripada penghala. Tetapan biasanya boleh didapati dalam /tmp/etc/openvpn*.conf
Secara lalai, openvpn berjalan dalam mod TAP dan jambatan pelayan memastikan antara mukanya tidak aktif. Untuk semuanya berfungsi, anda perlu menambah skrip yang berjalan apabila sambungan 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, sebaik sahaja sambungan berlaku, antara muka vpn-utama akan ditambah ke br-utama. Untuk grid tetamu - begitu juga, sehingga nama antara muka dan alamat dalam jambatan pelayan.
Menghalakan permintaan secara luaran dan proksi
Pada langkah ini, Orange Pi sudah dapat menerima sambungan dan menyambungkan pelanggan ke rangkaian yang diperlukan. Yang tinggal hanyalah mengkonfigurasi proksi sambungan masuk pada penghala.
Kami memindahkan pelayan VPN penghala ke port lain, memasang HAProxy pada penghala 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
Nikmati
Jika semuanya berjalan mengikut rancangan, pelanggan akan bertukar kepada Orange Pi dan pemproses penghala tidak lagi panas, dan kelajuan VPN akan meningkat dengan ketara. Pada masa yang sama, semua peraturan rangkaian yang didaftarkan pada penghala akan kekal relevan. Sekiranya berlaku kemalangan pada Orange Pi, ia akan jatuh dan HAProxy akan memindahkan pelanggan ke pelayan tempatan.
Terima kasih atas perhatian, cadangan dan pembetulan dialu-alukan.
Sumber: www.habr.com