Сайн байцгаана уу, би саяхан уншсан
Зорилго
TP-Link WDR3500 чиглүүлэгч болон Orange Pi Zero H2 байдаг. Бид Orange Pi-г ердийнхөөрөө хонгилыг шифрлэхийг хүсч байгаа бөгөөд хэрэв ямар нэг зүйл тохиолдвол VPN боловсруулалт чиглүүлэгч рүү буцаж ирнэ. Чиглүүлэгч дээрх галт ханын бүх тохиргоо өмнөх шигээ ажиллах ёстой. Ерөнхийдөө нэмэлт тоног төхөөрөмж нэмэх нь ил тод, хүн бүрт мэдэгдэхгүй байх ёстой. OpenVPN нь TCP дээр ажилладаг, TAP адаптер нь гүүр горимд (сервер-гүүр) байна.
шийдвэр
Би USB-ээр холбогдохын оронд чиглүүлэгчийн нэг портыг ашиглаж, VPN гүүртэй бүх дэд сүлжээг Orange Pi руу холбохоор шийдсэн. Техник хангамж нь чиглүүлэгч дээрх VPN сервертэй ижил сүлжээнд бие махбодийн хувьд өлгөгдсөн байх болно. Үүний дараа бид Orange Pi дээр яг ижил серверүүдийг суулгаж, чиглүүлэгч дээр ямар нэгэн төрлийн прокси суулгасан бөгөөд энэ нь бүх ирж буй холболтуудыг гадаад сервер рүү илгээдэг бөгөөд хэрэв Orange Pi нь ажиллахгүй эсвэл боломжгүй бол дотоод нөөц сервер. Би HAProxy авсан.
Иймэрхүү юм болж хувирдаг:
- Үйлчлүүлэгч ирж байна
- Хэрэв гадаад сервер ажиллахгүй бол өмнөх шигээ холболт дотоод сервер рүү шилждэг
- Боломжтой бол үйлчлүүлэгчийг Orange Pi хүлээн авна
- Orange Pi дээрх VPN нь пакетуудын шифрийг тайлж, чиглүүлэгч рүү буцааж цацдаг
- Чиглүүлэгч нь тэднийг хаа нэгтээ чиглүүлдэг
Хэрэгжүүлэх жишээ
Тиймээс, чиглүүлэгч дээр үндсэн (1) ба зочин (2) гэсэн хоёр сүлжээтэй болцгооё, тэдгээр нь тус бүрт гаднаас холбогдох OpenVPN сервер байдаг.
Сүлжээний тохиргоо
Бид хоёр сүлжээг нэг портоор дамжуулах шаардлагатай тул 2 VLAN үүсгэдэг.
Чиглүүлэгчийн Сүлжээ/Шилжүүлэгч хэсэгт VLAN-г үүсгээд (жишээ нь 1 ба 2) хүссэн порт дээрээ шошготой горимд идэвхжүүлж, шинээр үүсгэсэн eth0.1 ба eth0.2-г холбогдох сүлжээнд нэмнэ үү (жишээлбэл, тэдгээрийг бригад руу нэмнэ үү).
Orange Pi дээр бид хоёр VLAN интерфейс үүсгэдэг (надад 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
Бид тэр даруйд нь хоёр гүүрийг бий болгож байна:
/etc/netctl/br-main
Description="Main Bridge connection"
Interface=br-main
Connection=bridge
BindsToInterfaces=(vlan-main)
IP=dhcp
/etc/netctl/br-зочин
Description="Guest Bridge connection"
Interface=br-guest
Connection=bridge
BindsToInterfaces=(vlan-guest)
IP=dhcp
Бүх 4 профайлд автоматаар эхлүүлэхийг идэвхжүүлэх (netctl идэвхжүүлэх). Одоо дахин ачаалсны дараа Orange Pi нь шаардлагатай хоёр сүлжээнд өлгөх болно. Бид чиглүүлэгч дээрх Static Leases-д Orange Pi дээрх интерфейсийн хаягуудыг тохируулдаг.
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
VPN тохиргоо
Дараа нь бид OpenVPN-ийн тохиргоо болон чиглүүлэгчээс түлхүүрүүдийг хуулна. Тохиргоог ихэвчлэн дотроос олж болно /tmp/etc/openvpn*.conf
Анхдагч байдлаар, TAP горимд ажилладаг openvpn болон сервер-гүүр нь интерфейсээ идэвхгүй байлгадаг. Бүх зүйл ажиллахын тулд та холболт идэвхжсэн үед ажиллах скрипт нэмэх хэрэгтэй.
/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}
Үүний үр дүнд холболт үүссэн даруйд vpn-main интерфэйс нь br-main-д нэмэгдэх болно. Зочин сүлжээний хувьд сервер-гүүр дэх интерфейсийн нэр, хаяг хүртэл.
Хүсэлтүүдийг гаднаас чиглүүлэх болон прокси хийх
Энэ алхамд Orange Pi аль хэдийн холболтыг хүлээн авч, үйлчлүүлэгчдийг шаардлагатай сүлжээнд холбох боломжтой болсон. Үлдсэн зүйл бол чиглүүлэгч дээр ирж буй холболтын проксиг тохируулах явдал юм.
Бид чиглүүлэгчийн VPN серверүүдийг бусад портууд руу шилжүүлж, чиглүүлэгч дээр HAProxy суулгаж, тохируулна:
/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
Сайхан амраарай
Хэрэв бүх зүйл төлөвлөгөөний дагуу явагдсан бол үйлчлүүлэгчид Orange Pi руу шилжих бөгөөд чиглүүлэгчийн процессор халахаа больж, VPN хурд мэдэгдэхүйц нэмэгдэх болно. Үүний зэрэгцээ чиглүүлэгч дээр бүртгэгдсэн бүх сүлжээний дүрэм хамааралтай хэвээр байх болно. Orange Pi дээр осол гарсан тохиолдолд энэ нь унах бөгөөд HAProxy нь үйлчлүүлэгчдийг дотоод сервер рүү шилжүүлэх болно.
Анхаарал тавьсанд баярлалаа, санал, залруулга өгөхийг урьж байна.
Эх сурвалж: www.habr.com