Migrasyon soti nan OpenVPN nan WireGuard pou konsolide rezo nan yon sèl rezo L2

Migrasyon soti nan OpenVPN nan WireGuard pou konsolide rezo nan yon sèl rezo L2

Mwen ta renmen pataje eksperyans mwen nan konbine rezo nan twa apatman ki byen lwen jeyografik, chak nan yo ki itilize routeurs ak OpenWRT kòm yon pòtay, nan yon sèl rezo komen. Lè w ap chwazi yon metòd pou konbine rezo ant L3 ak routage subnet ak L2 ak pon, lè tout nœuds rezo yo pral nan menm subnet la, yo te bay preferans dezyèm metòd la, ki pi difisil pou konfigirasyon, men li bay plis opòtinite, depi transparan. itilizasyon teknoloji yo te planifye nan rezo a Wake-on-Lan kreye ak DLNA.

Pati 1: background

OpenVPN te okòmansman chwazi kòm pwotokòl la pou aplike travay sa a, depi, premyèman, li ka kreye yon aparèy tiyo ki ka ajoute nan pon an san okenn pwoblèm, epi dezyèmman, OpenVPN sipòte operasyon sou pwotokòl la TCP, ki te tou enpòtan, paske pa youn nan apatman yo te gen yon adrès IP dedye, epi mwen pa t 'kapab itilize STUN, paske pou kèk rezon ISP mwen an bloke koneksyon UDP fèk ap rantre nan rezo yo, pandan y ap pwotokòl TCP a pèmèt mwen voye pò a sèvè VPN sou VPS lwe lè l sèvi avèk SSH. Wi, apwòch sa a bay yon gwo chaj, depi done yo chiffres de fwa, men mwen pa t 'vle prezante VPS la nan rezo prive mwen an, paske te toujou yon risk pou twazyèm pati pran kontwòl sou li, Se poutèt sa, gen tankou yon. aparèy sou rezo kay la te trè endezirab epi li te deside peye pou sekirite ak yon gwo tèt.

Pou voye pò a sou routeur kote li te planifye pou deplwaye sèvè a, yo te itilize pwogram sshtunnel la. Mwen pa pral dekri sibtilite konfigirasyon li yo - sa a se fè byen fasil, mwen jis sonje ke travay li se te voye TCP pò 1194 soti nan routeur a VPS la. Apre sa, sèvè OpenVPN a te configuré sou aparèy tap0, ki te konekte ak pon br-lan. Apre w fin tcheke koneksyon an nan sèvè ki fèk kreye a soti nan laptop la, li te vin klè ke lide nan transmisyon pò jistifye tèt li ak laptop mwen an te vin yon manm nan rezo routeur la, byenke li pa te fizikman nan li.

Pwoblèm lan te rete piti: li te nesesè yo distribye adrès IP nan diferan apatman pou yo pa t 'konfli ak konfigirasyon routeurs kòm kliyan OpenVPN.
Adrès IP routeur sa yo ak seri sèvè DHCP yo te chwazi:

  • 192.168.10.1 ak ranje 192.168.10.2 - 192.168.10.80 pou sèvè a
  • 192.168.10.100 ak ranje 192.168.10.101 - 192.168.10.149 pou yon routeur nan apatman No 2
  • 192.168.10.150 ak ranje 192.168.10.151 - 192.168.10.199 pou yon routeur nan apatman No 3

Li te tou nesesè yo bay egzakteman adrès sa yo nan routeurs kliyan yo nan sèvè OpenVPN la lè w ajoute liy lan nan konfigirasyon li yo:

ifconfig-pool-persist /etc/openvpn/ipp.txt 0

epi ajoute liy sa yo nan fichye /etc/openvpn/ipp.txt:

flat1_id 192.168.10.100
flat2_id 192.168.10.150

kote flat1_id ak flat2_id se non aparèy yo espesifye lè w ap jenere sètifika pou konekte ak OpenVPN.

Apre sa, kliyan OpenVPN yo te configuré sou routeurs yo, aparèy tap0 sou tou de yo te ajoute nan pon br-lan. Nan etap sa a, tout bagay te sanble yo nan lòd, depi tout twa rezo yo wè youn ak lòt epi yo travay kòm yon antye. Sepandan, yon detay pa trè bèl te tounen soti: pafwa aparèy yo te kapab jwenn yon adrès IP pa soti nan routeur yo, ak tout konsekans ki vini yo. Pou kèk rezon, routeur la nan youn nan apatman yo pa t gen tan reponn DHCPDISCOVER alè epi aparèy la te resevwa move adrès la. Mwen reyalize ke mwen bezwen filtre demann sa yo nan tap0 sou chak nan routeurs yo, men kòm li te tounen soti, iptables pa ka travay ak yon aparèy si li se yon pati nan yon pon ak ebtables ta dwe vini nan èd mwen. Pou regrèt mwen, li pa t 'nan firmwèr mwen an epi mwen te oblije rebati imaj yo pou chak aparèy. Lè w fè sa epi ajoute liy sa yo nan /etc/rc.local nan chak routeur, pwoblèm nan te rezoud:

ebtables -A INPUT --in-interface tap0 --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 -j DROP
ebtables -A INPUT --in-interface tap0 --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP
ebtables -A FORWARD --out-interface tap0 --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 -j DROP
ebtables -A FORWARD --out-interface tap0 --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP

Konfigirasyon sa a te dire pou twa ane.

Pati 2: Entwodwi WireGuard

Dènyèman, entènèt la te de pli zan pli pale sou WireGuard, admire senplisite nan konfigirasyon li yo, gwo vitès transfè, ping ki ba ak sekirite konparab. Chèche pou plis enfòmasyon sou li te fè li klè ke ni travay kòm yon manm pon, ni travay sou pwotokòl TCP a sipòte pa li, sa ki te fè m 'panse ke toujou pa gen okenn altènativ a OpenVPN pou mwen. Se konsa, mwen te sispann aprann konnen WireGuard.

Kèk jou de sa, nouvèl la gaye atravè resous yon fason oswa yon lòt ki gen rapò ak IT ke WireGuard pral finalman enkli nan nwayo Linux la, kòmanse ak vèsyon 5.6. Atik nouvèl, kòm toujou, fè lwanj WireGuard. Mwen te plonje ankò nan rechèch la pou fason yo ranplase bon ansyen OpenVPN la. Fwa sa a mwen kouri antre atik sa a. Li te pale sou kreye yon tinèl Ethernet sou L3 lè l sèvi avèk GRE. Atik sa a te ban mwen espwa. Li te rete klè kisa pou fè ak pwotokòl UDP la. Chèche te mennen m 'nan atik sou itilizasyon socat ansanm ak yon tinèl SSH pou voye yon pò UDP, sepandan, yo te note ke apwòch sa a sèlman ap travay nan mòd koneksyon sèl, ki vle di ke plizyè kliyan VPN ta enposib. Mwen te vini ak lide a mete kanpe yon sèvè VPN sou yon VPS, ak mete kanpe GRE pou kliyan, men kòm li te tounen soti, GRE pa sipòte chifreman, ki pral mennen nan lefèt ke si twazyèm pati jwenn aksè nan sèvè a. , tout trafik ant rezo mwen yo nan men yo ki pa t 'kofòm mwen ditou.

Yon fwa ankò, yo te pran desizyon an an favè chifreman redondants, lè l sèvi avèk VPN sou VPN dapre konplo sa a:

Kouch XNUMX VPN:
VPS se sèvè ak adrès entèn 192.168.30.1
MS se kliyan VPS ak adrès entèn 192.168.30.2
MK2 se kliyan VPS ak adrès entèn 192.168.30.3
MK3 se kliyan VPS ak adrès entèn 192.168.30.4

Kouch XNUMX VPN:
MS se sèvè ak adrès ekstèn 192.168.30.2 ak entèn 192.168.31.1
MK2 se kliyan MS ak adrès 192.168.30.2 e li gen yon IP entèn 192.168.31.2
MK3 se kliyan MS ak adrès 192.168.30.2 e li gen yon IP entèn 192.168.31.3

* MS - routeur-sèvè nan apatman 1, MK2 - routeur nan apatman 2, MK3 - routeur nan apatman 3
* Konfigirasyon aparèy yo pibliye nan beke a nan fen atik la.

Se konsa, ping ant nœuds rezo 192.168.31.0/24 ale, li lè pou avanse pou pi sou mete kanpe tinèl GRE la. Anvan sa, yo nan lòd yo pa pèdi aksè a routeurs, li vo mete kanpe tinèl SSH pou voye pò 22 nan VPS la, se konsa ke, pou egzanp, yon routeur soti nan apatman 10022 yo ap disponib sou pò 2 nan VPS la, ak yon routeur soti nan apatman 11122 yo ap disponib sou pò 3 nan VPS la. routeur soti nan apatman XNUMX. Li pi bon yo konfigirasyon transmèt la ak menm sshtunnel la, depi li pral retabli tinèl la nan ka li tonbe.

Se tinèl la configuré, ou ka konekte ak SSH atravè pò a voye:

ssh root@МОЙ_VPS -p 10022

Apre sa, enfim OpenVPN:

/etc/init.d/openvpn stop

Koulye a, ann mete kanpe yon tinèl GRE sou routeur la soti nan apatman 2:

ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.2
ip link set grelan0 up

Epi ajoute koòdone ki te kreye a nan pon an:

brctl addif br-lan grelan0

Ann fè yon pwosedi menm jan an sou routeur sèvè a:

ip link add grelan0 type gretap remote 192.168.31.2 local 192.168.31.1
ip link set grelan0 up

Epi, tou, ajoute koòdone kreye nan pon an:

brctl addif br-lan grelan0

apati moman sa a, ping yo kòmanse avèk siksè ale nan nouvo rezo a epi mwen, ak satisfaksyon, ale nan bwè kafe. Lè sa a, pou wè ki jan rezo a sou lòt bout fil la ap travay, mwen eseye SSH nan youn nan òdinatè yo nan apatman 2, men kliyan ssh la jele san yo pa pouse m 'pou yon modpas. Mwen eseye konekte ak òdinatè sa a atravè telnet sou pò 22 epi wè yon liy ki soti nan ki ou ka konprann ke se koneksyon an ap etabli, sèvè a SSH ap reponn, men pou kèk rezon li pa ofri m 'antre.

$ telnet 192.168.10.110 22
SSH-2.0-OpenSSH_8.1

Mwen ap eseye konekte ak li atravè VNC epi mwen wè yon ekran nwa. Mwen konvenk tèt mwen ke pwoblèm nan se nan òdinatè a aleka, paske mwen ka fasilman konekte ak routeur la soti nan apatman sa a lè l sèvi avèk adrès entèn la. Sepandan, mwen deside SSH nan òdinatè sa a atravè routeur la epi mwen sezi jwenn ke koneksyon an reyisi ak òdinatè a aleka travay byen men echwe pou konekte ak òdinatè mwen an swa.

Mwen pran aparèy grelan0 a soti nan pon an epi kòmanse OpenVPN sou routeur la nan apatman 2 epi asire w ke rezo a ap travay byen ankò epi koneksyon yo pa tonbe. Chèche mwen tonbe sou fowòm kote moun plenyen sou menm pwoblèm yo, kote yo konseye yo ogmante MTU a. Pa pi bonè di pase fè. Sepandan, jiskaske MTU a te mete nan yon gwo ase valè de 7000 pou aparèy gretap, swa tonbe koneksyon TCP oswa transmisyon dousman yo te obsève. Akòz MTU segondè pou gretap, MTU pou koneksyon WireGuard nan premye ak dezyèm nivo yo te fikse sou 8000 ak 7500, respektivman.

Mwen te fè yon konfigirasyon menm jan an sou routeur la soti nan apatman 3, ak diferans lan sèlman se ke yon dezyèm koòdone gretap yo te rele grelan1 te ajoute nan routeur sèvè a, ki te tou ajoute nan pon an br-lan.

Tout bagay ap travay. Koulye a, ou ka mete asanble gretap la nan autoload. Pou sa:

Mete liy sa yo nan /etc/rc.local sou routeur la nan apatman 2:

ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.2
ip link set dev grelan0 mtu 7000
ip link set grelan0 up
brctl addif br-lan grelan0

Te ajoute sa a nan /etc/rc.local sou routeur la nan apatman 3:

ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.3
ip link set dev grelan0 mtu 7000
ip link set grelan0 up
brctl addif br-lan grelan0

Ak sou routeur sèvè a:

ip link add grelan0 type gretap remote 192.168.31.2 local 192.168.31.1
ip link set dev grelan0 mtu 7000
ip link set grelan0 up
brctl addif br-lan grelan0

ip link add grelan1 type gretap remote 192.168.31.3 local 192.168.31.1
ip link set dev grelan1 mtu 7000
ip link set grelan1 up
brctl addif br-lan grelan1

Apre rdemare routeurs kliyan yo, mwen te jwenn ke pou kèk rezon yo pa t 'konekte ak sèvè a. Konekte ak SSH yo (ererezman, mwen te deja configuré sshtunnel pou sa a), li te dekouvri ke WireGuard pou kèk rezon kreye yon wout pou pwen final la, pandan ke yo te kòrèk. Se konsa, pou 192.168.30.2, yo te espesifye tab wout la nan tab wout la atravè koòdone pppoe-wan, se sa ki, atravè entènèt la, byenke wout la nan li ta dwe te dirije atravè koòdone nan wg0. Apre yo fin efase wout sa a, yo te retabli koneksyon an. Mwen pa t 'kapab jwenn enstriksyon nenpòt kote sou kòman yo fòse WireGuard pa kreye wout sa yo. Anplis, mwen pa t 'menm konprann si sa a se yon karakteristik nan OpenWRT, oswa nan WireGuard tèt li. San yo pa gen fè fas ak pwoblèm sa a pou yon tan long, mwen tou senpleman ajoute nan tou de routeurs nan yon script boukle pa yon revèy, yon liy ki efase wout sa a:

route del 192.168.30.2

Rezime

Mwen poko reyalize yon rejè konplè sou OpenVPN, paske mwen pafwa bezwen konekte nan yon nouvo rezo soti nan yon laptop oswa telefòn, epi mete yon aparèy gretap sou yo jeneralman enposib, men malgre sa, mwen te gen yon avantaj nan transfè done. vitès ant apatman yo epi, pou egzanp, lè l sèvi avèk VNC pa enkonvenyan ankò. Ping diminye yon ti kras, men li vin pi estab:

Lè w ap itilize OpenVPN:

[r0ck3r@desktop ~]$ ping -c 20 192.168.10.110
PING 192.168.10.110 (192.168.10.110) 56(84) bytes of data.
64 bytes from 192.168.10.110: icmp_seq=1 ttl=64 time=133 ms
...
64 bytes from 192.168.10.110: icmp_seq=20 ttl=64 time=125 ms

--- 192.168.10.110 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19006ms
rtt min/avg/max/mdev = 124.722/126.152/136.907/3.065 ms

Lè w ap itilize WireGuard:

[r0ck3r@desktop ~]$ ping -c 20 192.168.10.110
PING 192.168.10.110 (192.168.10.110) 56(84) bytes of data.
64 bytes from 192.168.10.110: icmp_seq=1 ttl=64 time=124 ms
...
64 bytes from 192.168.10.110: icmp_seq=20 ttl=64 time=124 ms
--- 192.168.10.110 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19003ms
rtt min/avg/max/mdev = 123.954/124.423/126.708/0.675 ms

Li se sitou afekte pa ping segondè nan VPS ki se apeprè 61.5ms

Sepandan, vitès la te ogmante anpil. Se konsa, nan yon apatman ki gen yon routeur-sèvè, mwen gen yon vitès koneksyon entènèt nan 30 Mbps, ak nan lòt apatman, 5 Mbps. An menm tan an, pandan w ap itilize OpenVPN, mwen pa t 'kapab reyalize yon pousantaj transfè done ant rezo ki gen plis pase 3,8 Mbps dapre iperf, pandan y ap WireGuard "ponpe" li jiska menm 5 Mbps la.

WireGuard konfigirasyon sou VPS[Interface] Address = 192.168.30.1/24
ListenPort = 51820
PrivateKey = <ЗАКРЫТЫЙ_КЛЮЧ_ДЛЯ_VPS>

[Peer] PublicKey = <ОТКРЫТЫЙ_КЛЮЧ_VPN_1_МС>
AllowedIPs = 192.168.30.2/32

[Peer] PublicKey = <ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МК2>
AllowedIPs = 192.168.30.3/32

[Peer] PublicKey = <ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МК3>
AllowedIPs = 192.168.30.4/32

WireGuard konfigirasyon sou MS (ajoute nan /etc/config/network)

#VPN первого уровня - клиент
config interface 'wg0'
        option proto 'wireguard'
        list addresses '192.168.30.2/24'
        option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_1_МС'
        option auto '1'
        option mtu '8000'

config wireguard_wg0
        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_1_VPS'
        option endpoint_port '51820'
        option route_allowed_ips '1'
        option persistent_keepalive '25'
        list allowed_ips '192.168.30.0/24'
        option endpoint_host 'IP_АДРЕС_VPS'

#VPN второго уровня - сервер
config interface 'wg1'
        option proto 'wireguard'
        option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_2_МС'
        option listen_port '51821'
        list addresses '192.168.31.1/24'
        option auto '1'
        option mtu '7500'

config wireguard_wg1
        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МК2'
        list allowed_ips '192.168.31.2'

config wireguard_wg1ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.3

        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МК3'
        list allowed_ips '192.168.31.3'

WireGuard konfigirasyon sou MK2 (ajoute nan /etc/config/network)

#VPN первого уровня - клиент
config interface 'wg0'
        option proto 'wireguard'
        list addresses '192.168.30.3/24'
        option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_1_МК2'
        option auto '1'
        option mtu '8000'

config wireguard_wg0
        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_1_VPS'
        option endpoint_port '51820'
        option persistent_keepalive '25'
        list allowed_ips '192.168.30.0/24'
        option endpoint_host 'IP_АДРЕС_VPS'

#VPN второго уровня - клиент
config interface 'wg1'
        option proto 'wireguard'
        option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_2_МК2'
        list addresses '192.168.31.2/24'
        option auto '1'
        option listen_port '51821'
        option mtu '7500'

config wireguard_wg1
        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МС'
        option endpoint_host '192.168.30.2'
        option endpoint_port '51821'
        option persistent_keepalive '25'
        list allowed_ips '192.168.31.0/24'

WireGuard konfigirasyon sou MK3 (ajoute nan /etc/config/network)

#VPN первого уровня - клиент
config interface 'wg0'
        option proto 'wireguard'
        list addresses '192.168.30.4/24'
        option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_1_МК3'
        option auto '1'
        option mtu '8000'

config wireguard_wg0
        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_1_VPS'
        option endpoint_port '51820'
        option persistent_keepalive '25'
        list allowed_ips '192.168.30.0/24'
        option endpoint_host 'IP_АДРЕС_VPS'

#VPN второго уровня - клиент
config interface 'wg1'
        option proto 'wireguard'
        option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_2_МК3'
        list addresses '192.168.31.3/24'
        option auto '1'
        option listen_port '51821'
        option mtu '7500'

config wireguard_wg1
        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МС'
        option endpoint_host '192.168.30.2'
        option endpoint_port '51821'
        option persistent_keepalive '25'
        list allowed_ips '192.168.31.0/24'

Nan konfigirasyon yo dekri pou dezyèm nivo VPN, mwen presize pò 51821 pou kliyan WireGuard.An teyori, sa a pa nesesè, depi kliyan an pral etabli yon koneksyon soti nan nenpòt pò gratis ki pa privilejye, men mwen te fè li pou ke tout koneksyon fèk ap rantre. yo ka refize sou koòdone wg0 tout routeurs, eksepte koneksyon UDP ki fèk ap rantre sou pò 51821.

Mwen espere ke atik la pral itil yon moun.

PS Epitou, mwen vle pataje script mwen an ki voye m yon notifikasyon PUSH nan telefòn mwen an nan aplikasyon WirePusher lè yon nouvo aparèy parèt sou rezo mwen an. Men yon lyen ki mennen nan script la: github.com/r0ck3r/device_discover.

Ajou: Sèvè OpenVPN ak konfigirasyon kliyan yo

Sèvè OpenVPN

client-to-client

ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/vpn-server.crt
dh /etc/openvpn/server/dh.pem
key /etc/openvpn/server/vpn-server.key

dev tap
ifconfig-pool-persist /etc/openvpn/ipp.txt 0
keepalive 10 60
proto tcp4
server-bridge 192.168.10.1 255.255.255.0 192.168.10.80 192.168.10.254
status /var/log/openvpn-status.log
verb 3
comp-lzo

Kliyan OpenVPN

client
tls-client
dev tap
proto tcp
remote VPS_IP 1194 # Change to your router's External IP
resolv-retry infinite
nobind

ca client/ca.crt
cert client/client.crt
key client/client.key
dh client/dh.pem

comp-lzo
persist-tun
persist-key
verb 3

Mwen te itilize easy-rsa pou jenere sètifika.

Sous: www.habr.com

Add nouvo kòmantè