Openwrt திசைவியில் OpenVPN ஐ விரைவுபடுத்துகிறது. சாலிடரிங் இரும்பு மற்றும் வன்பொருள் தீவிரவாதம் இல்லாமல் மாற்று பதிப்பு

Openwrt திசைவியில் OpenVPN ஐ விரைவுபடுத்துகிறது. சாலிடரிங் இரும்பு மற்றும் வன்பொருள் தீவிரவாதம் இல்லாமல் மாற்று பதிப்பு

அனைவருக்கும் வணக்கம், சமீபத்தில் படித்தேன் பழைய கட்டுரை குறியாக்கத்தை ஒரு தனி வன்பொருளுக்கு மாற்றுவதன் மூலம் ஒரு ரூட்டரில் OpenVPN ஐ எவ்வாறு விரைவுபடுத்தலாம் என்பது பற்றி. 3500 மெகாபைட் ரேம் கொண்ட TP-Link WDR128 மற்றும் சுரங்கப்பாதை குறியாக்கத்தை முழுமையாக சமாளிக்க முடியாத மோசமான செயலி - எனக்கு இதே போன்ற வழக்கு உள்ளது. இருப்பினும், சாலிடரிங் இரும்புடன் திசைவிக்குள் செல்ல நான் முற்றிலும் விரும்பவில்லை. விபத்து ஏற்பட்டால் ரூட்டரில் காப்புப்பிரதியுடன் OpenVPN ஐ ஒரு தனி வன்பொருளுக்கு நகர்த்துவதற்கான எனது அனுபவம் கீழே உள்ளது.

பணி

TP-Link WDR3500 திசைவி மற்றும் ஆரஞ்சு பை ஜீரோ H2 உள்ளது. ஆரஞ்சு பை வழக்கம் போல் சுரங்கங்களை என்க்ரிப்ட் செய்ய வேண்டும் என்று நாங்கள் விரும்புகிறோம், அதற்கு ஏதாவது நடந்தால், VPN செயலாக்கமானது ரூட்டருக்குத் திரும்பும். ரூட்டரில் உள்ள அனைத்து ஃபயர்வால் அமைப்புகளும் முன்பு போலவே செயல்பட வேண்டும். மேலும் பொதுவாக, கூடுதல் வன்பொருளைச் சேர்ப்பது வெளிப்படையானதாகவும் அனைவருக்கும் தெரியாமலும் இருக்க வேண்டும். OpenVPN TCP இல் வேலை செய்கிறது, TAP அடாப்டர் பிரிட்ஜ் பயன்முறையில் உள்ளது (சர்வர்-பிரிட்ஜ்).

முடிவு

யூ.எஸ்.பி வழியாக இணைப்பதற்குப் பதிலாக, ரூட்டரின் ஒரு போர்ட்டைப் பயன்படுத்தவும், விபிஎன் பிரிட்ஜ் கொண்ட அனைத்து சப்நெட்களையும் ஆரஞ்சு பையுடன் இணைக்கவும் முடிவு செய்தேன். திசைவியில் உள்ள VPN சேவையகத்தின் அதே நெட்வொர்க்குகளில் வன்பொருள் உடல் ரீதியாக செயலிழக்கும் என்று மாறிவிடும். அதன் பிறகு, ஆரஞ்சு பையில் அதே சேவையகங்களை நாங்கள் நிறுவுகிறோம், மேலும் ரூட்டரில் சில வகையான ப்ராக்ஸியை அமைக்கிறோம், இதனால் உள்வரும் அனைத்து இணைப்புகளையும் வெளிப்புற சேவையகத்திற்கு அனுப்புகிறது, மேலும் ஆரஞ்சு பை இறந்துவிட்டால் அல்லது கிடைக்கவில்லை என்றால், உள் வீழ்ச்சி சேவையகம். நான் HAProxy எடுத்தேன்.

இது இப்படி மாறிவிடும்:

  1. ஒரு வாடிக்கையாளர் வருகிறார்
  2. வெளிப்புற சேவையகம் கிடைக்கவில்லை என்றால், முன்பு போல், இணைப்பு உள் சேவையகத்திற்கு செல்கிறது
  3. கிடைத்தால், கிளையன்ட் ஆரஞ்சு பை மூலம் ஏற்றுக்கொள்ளப்படும்
  4. ஆரஞ்சு பையில் உள்ள 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-guest

Description="Guest Bridge connection"
Interface=br-guest
Connection=bridge
BindsToInterfaces=(vlan-guest)
IP=dhcp

அனைத்து 4 சுயவிவரங்களுக்கும் ஆட்டோஸ்டார்ட்டை இயக்கு (netctl இயக்கு). இப்போது மறுதொடக்கம் செய்த பிறகு, தேவையான இரண்டு நெட்வொர்க்குகளில் ஆரஞ்சு பை செயலிழக்கும். திசைவியில் உள்ள நிலையான குத்தகைகளில் ஆரஞ்சு பையில் இடைமுக முகவரிகளை உள்ளமைக்கிறோம்.

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 இல் சேர்க்கப்படும். விருந்தினர் கட்டத்திற்கு - இதேபோல், சர்வர்-பிரிட்ஜில் இடைமுகத்தின் பெயர் மற்றும் முகவரி வரை.

ரூட்டிங் கோரிக்கைகளை வெளிப்புறமாக மற்றும் ப்ராக்ஸியிங்

இந்த கட்டத்தில், ஆரஞ்சு பை ஏற்கனவே இணைப்புகளை ஏற்கவும், தேவையான நெட்வொர்க்குகளுடன் வாடிக்கையாளர்களை இணைக்கவும் முடியும். ரூட்டரில் உள்வரும் இணைப்புகளின் ப்ராக்ஸியை உள்ளமைப்பது மட்டுமே மீதமுள்ளது.

நாங்கள் திசைவி 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

மகிழுங்கள்

எல்லாம் திட்டத்தின் படி நடந்தால், வாடிக்கையாளர்கள் ஆரஞ்சு பைக்கு மாறுவார்கள் மற்றும் திசைவியின் செயலி இனி வெப்பமடையாது, மேலும் VPN வேகம் கணிசமாக அதிகரிக்கும். அதே நேரத்தில், திசைவியில் பதிவுசெய்யப்பட்ட அனைத்து பிணைய விதிகளும் பொருத்தமானதாக இருக்கும். ஆரஞ்சு பையில் விபத்து ஏற்பட்டால், அது விழுந்துவிடும் மற்றும் HAProxy வாடிக்கையாளர்களை உள்ளூர் சேவையகங்களுக்கு மாற்றும்.

உங்கள் கவனத்திற்கு நன்றி, பரிந்துரைகள் மற்றும் திருத்தங்கள் வரவேற்கப்படுகின்றன.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்