በOpenwrt ራውተር ላይ OpenVPNን ማፋጠን። ብረት እና ሃርድዌር አክራሪነት ሳይሸጥ ተለዋጭ ስሪት

በOpenwrt ራውተር ላይ OpenVPNን ማፋጠን። ብረት እና ሃርድዌር አክራሪነት ሳይሸጥ ተለዋጭ ስሪት

ሰላም ለሁላችሁም በቅርቡ አንብቤአለሁ። የድሮ ጽሑፍ ምስጠራን ወደ ሌላ ሃርድዌር በማስተላለፍ በራውተር ላይ OpenVPNን እንዴት ማፋጠን እንደሚቻል ፣በራውተር ራሱ ውስጥ ወደተሸጠው። ከጸሐፊው ጋር ተመሳሳይ ጉዳይ አለኝ - TP-Link WDR3500 ከ 128 ሜጋባይት ራም እና ደካማ ፕሮሰሰር ጋር ሙሉ በሙሉ የመሿለኪያ ምስጠራን መቋቋም አልቻለም። ሆኖም፣ ወደ ራውተር በተሸጠው ብረት መግባት በፍጹም አልፈለኩም። ከዚህ በታች ክፍት ቪፒኤንን ወደ የተለየ ሃርድዌር የማንቀሳቀስ ልምዴ አለ በራውተር ላይ ምትኬ በአደጋ ጊዜ።

ዓላማ

TP-Link WDR3500 ራውተር እና ኦሬንጅ Pi Zero H2 አሉ። ኦሬንጅ ፓይ እንደተለመደው ዋሻዎቹን እንዲያመሰጥር እንፈልጋለን፣ እና የሆነ ነገር ካጋጠመው፣ የቪፒኤን ሂደት ወደ ራውተር ይመለሳል። በራውተሩ ላይ ያሉት ሁሉም የፋየርዎል ቅንጅቶች ልክ እንደበፊቱ መስራት አለባቸው። እና በአጠቃላይ, ተጨማሪ ሃርድዌር መጨመር ለሁሉም ሰው ግልጽ እና የማይታወቅ መሆን አለበት. OpenVPN በTCP ላይ ይሰራል፣ የTAP አስማሚ በድልድይ ሁነታ (ሰርቨር-ድልድይ) ላይ ነው።

ዉሳኔ

በዩኤስቢ ከመገናኘት ይልቅ አንድ የራውተር ወደብ ለመጠቀም እና ሁሉንም የቪፒኤን ድልድይ ያላቸውን ንዑስ መረቦች ከብርቱካን ፓይ ጋር ለማገናኘት ወሰንኩ። ሃርድዌሩ በአካል በራውተር ላይ ካለው የቪፒኤን አገልጋይ ጋር በተመሳሳይ አውታረ መረቦች ውስጥ እንደሚሰቀል ታወቀ። ከዚያ በኋላ በትክክል ተመሳሳይ አገልጋዮችን በኦሬንጅ ፒ ላይ እንጭነዋለን ፣ እና በራውተሩ ላይ ሁሉንም ገቢ ግንኙነቶች ወደ ውጫዊ አገልጋይ እንዲልክ አንድ ዓይነት ፕሮክሲ እናዘጋጃለን ፣ እና ብርቱካን ፒ ከሞተ ወይም ከሌለ ፣ ከዚያ ወደ የውስጥ ውድቀት አገልጋይ. HAProxy ወሰድኩኝ።

እንደሚከተለው ይሆናል፡-

  1. ደንበኛ ይመጣል
  2. ውጫዊ አገልጋዩ የማይገኝ ከሆነ, ልክ እንደበፊቱ, ግንኙነቱ ወደ ውስጣዊ አገልጋይ ይሄዳል
  3. ካለ፣ ደንበኛው በኦሬንጅ ፒ ይቀበላል
  4. በብርቱካን ፓይ ላይ ያለው ቪፒኤን ፓኬጆችን ፈትቶ ወደ ራውተር መልሰው ይተፋቸዋል።
  5. ራውተሩ ወደ አንድ ቦታ ይመራቸዋል

የትግበራ ምሳሌ

ስለዚህ ፣ በራውተር ላይ ሁለት አውታረ መረቦች አሉን እንበል - ዋና (1) እና እንግዳ (2) ፣ ለእያንዳንዳቸው ከውጭ ለማገናኘት የOpenVPN አገልጋይ አለ።

የአውታረ መረብ ውቅር

ሁለቱንም ኔትወርኮች በአንድ ወደብ ማዞር አለብን፣ ስለዚህ 2 VLAN እንፈጥራለን።

በራውተሩ ላይ በኔትወርክ/ስዊች ክፍል ውስጥ VLAN ን (ለምሳሌ 1 እና 2) ይፍጠሩ እና በሚፈለገው ወደብ ላይ በተሰየመ ሁነታ ላይ ያስችሏቸው ፣ አዲስ የተፈጠረውን eth0.1 እና eth0.2 ወደ ተጓዳኝ አውታረ መረቦች ይጨምሩ (ለምሳሌ ፣ ወደ ድልድይ ያክሏቸው)።

በኦሬንጅ ፓይ ላይ ሁለት 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-እንግዳ

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 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

VPN ማዋቀር

በመቀጠል የ OpenVPN ቅንብሮችን እና ቁልፎችን ከ ራውተር እንቀዳለን. መቼቶች ብዙውን ጊዜ በ ውስጥ ይገኛሉ /tmp/etc/openvpn*.conf

በነባሪ፣ openvpn በTAP ሁነታ የሚሰራ እና የአገልጋይ ድልድይ በይነገጹ እንዳይሰራ ያደርገዋል። ሁሉም ነገር እንዲሰራ, ግንኙነቱ ሲነቃ የሚሰራ ስክሪፕት ማከል ያስፈልግዎታል.

/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-ዋና በይነገጽ ወደ br-main ይታከላል. ለእንግዳ ፍርግርግ - በተመሳሳይ መልኩ በአገልጋይ-ድልድይ ውስጥ እስከ በይነገጽ ስም እና አድራሻ ድረስ።

የውጭ ጥያቄዎችን ማዘዋወር እና ተኪ ማድረግ

በዚህ ደረጃ፣ Orange Pi አስቀድሞ ግንኙነቶችን መቀበል እና ደንበኞችን ከሚፈለጉት አውታረ መረቦች ጋር ማገናኘት ይችላል። የሚቀረው በራውተር ላይ የሚመጡ የግንኙነቶች ፕሮክሲ ማዋቀር ነው።

የራውተር ቪፒኤን አገልጋዮችን ወደ ሌሎች ወደቦች እናስተላልፋለን ፣ በራውተር ላይ HAProxy ን እንጭናለን እና እናዋቅራለን-

/ወዘተ/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

ተደሰት

ሁሉም ነገር በእቅዱ መሠረት ከሄደ ደንበኞቻቸው ወደ ኦሬንጅ ፒ ይቀየራሉ እና የራውተር ፕሮሰሰር አይሞቀውም እና የቪፒኤን ፍጥነት በከፍተኛ ሁኔታ ይጨምራል። በተመሳሳይ ጊዜ, በ ራውተር ላይ የተመዘገቡት ሁሉም የአውታረ መረብ ደንቦች ጠቃሚ ሆነው ይቆያሉ. በብርቱካን ፓይ ላይ አደጋ በሚደርስበት ጊዜ ይወድቃል እና HAProxy ደንበኞችን ወደ አካባቢያዊ አገልጋዮች ያስተላልፋል።

ስለ እርስዎ ትኩረት እናመሰግናለን ፣ ጥቆማዎች እና እርማቶች እንኳን ደህና መጡ።

ምንጭ: hab.com

አስተያየት ያክሉ