Openwrt чиглүүлэгч дээр OpenVPN-ийг хурдасгаж байна. Гагнуурын төмрийн болон тоног төхөөрөмжийн хэт туйлшралгүй өөр хувилбар

Openwrt чиглүүлэгч дээр OpenVPN-ийг хурдасгаж байна. Гагнуурын төмрийн болон тоног төхөөрөмжийн хэт туйлшралгүй өөр хувилбар

Сайн байцгаана уу, би саяхан уншсан хуучин нийтлэл Чиглүүлэгчийн дотор гагнагдсан тусдаа техник хангамж руу шифрлэлтийг шилжүүлэх замаар чиглүүлэгч дээрх OpenVPN-ийг хэрхэн хурдасгах талаар. Би зохиогчтой ижил төстэй тохиолдол байдаг - 3500 мегабайт RAM-тай TP-Link WDR128, туннелийн шифрлэлтийг бүрэн даван туулах чадваргүй муу процессортой. Гэсэн хэдий ч би чиглүүлэгч рүү гагнуурын төмрөөр орохыг огт хүсээгүй. Осол гарсан тохиолдолд OpenVPN-ийг чиглүүлэгч дээрх нөөцлөлт бүхий тусдаа тоног төхөөрөмж рүү шилжүүлж байсан туршлагаа доор харуулав.

Зорилго

TP-Link WDR3500 чиглүүлэгч болон Orange Pi Zero H2 байдаг. Бид Orange Pi-г ердийнхөөрөө хонгилыг шифрлэхийг хүсч байгаа бөгөөд хэрэв ямар нэг зүйл тохиолдвол VPN боловсруулалт чиглүүлэгч рүү буцаж ирнэ. Чиглүүлэгч дээрх галт ханын бүх тохиргоо өмнөх шигээ ажиллах ёстой. Ерөнхийдөө нэмэлт тоног төхөөрөмж нэмэх нь ил тод, хүн бүрт мэдэгдэхгүй байх ёстой. OpenVPN нь TCP дээр ажилладаг, TAP адаптер нь гүүр горимд (сервер-гүүр) байна.

шийдвэр

Би USB-ээр холбогдохын оронд чиглүүлэгчийн нэг портыг ашиглаж, VPN гүүртэй бүх дэд сүлжээг Orange Pi руу холбохоор шийдсэн. Техник хангамж нь чиглүүлэгч дээрх VPN сервертэй ижил сүлжээнд бие махбодийн хувьд өлгөгдсөн байх болно. Үүний дараа бид Orange Pi дээр яг ижил серверүүдийг суулгаж, чиглүүлэгч дээр ямар нэгэн төрлийн прокси суулгасан бөгөөд энэ нь бүх ирж буй холболтуудыг гадаад сервер рүү илгээдэг бөгөөд хэрэв Orange Pi нь ажиллахгүй эсвэл боломжгүй бол дотоод нөөц сервер. Би HAProxy авсан.

Иймэрхүү юм болж хувирдаг:

  1. Үйлчлүүлэгч ирж байна
  2. Хэрэв гадаад сервер ажиллахгүй бол өмнөх шигээ холболт дотоод сервер рүү шилждэг
  3. Боломжтой бол үйлчлүүлэгчийг Orange Pi хүлээн авна
  4. Orange Pi дээрх VPN нь пакетуудын шифрийг тайлж, чиглүүлэгч рүү буцааж цацдаг
  5. Чиглүүлэгч нь тэднийг хаа нэгтээ чиглүүлдэг

Хэрэгжүүлэх жишээ

Тиймээс, чиглүүлэгч дээр үндсэн (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

сэтгэгдэл нэмэх