Perekhod s OpenVPN ar WireGuard líonraí a chomhcheangal i líonra L2 amháin

Perekhod s OpenVPN ar WireGuard líonraí a chomhcheangal i líonra L2 amháin

Ba mhaith liom mo thaithí ar líonraí a chomhcheangal i dtrí árasán atá iargúlta go geografach a roinnt, agus úsáideann gach ceann acu ródairí le OpenWRT mar gheata, i líonra coiteann amháin. Agus modh á roghnú chun líonraí a chomhcheangal idir L3 le ródú subnet agus L2 le droichead, nuair a bheidh na nóid líonra go léir san fho-líon céanna, tugadh tosaíocht don dara modh, atá níos deacra a chumrú, ach cuireann sé deiseanna níos mó ar fáil, ós rud é go bhfuil Beartaíodh úsáid thrédhearcach teicneolaíochtaí sa líonra atá á chruthú Wake-on-Lan agus DLNA.

Cuid 1: Cúlra

Roghnaíodh an prótacal chun an tasc seo a chur i bhfeidhm ar dtús OpenVPN, mar, ar an gcéad dul síos, is féidir leis gléas sconna a chruthú is féidir a chur leis an droichead gan aon fhadhbanna, agus ar an dara dul síos, OpenVPN Tacaíonn sé le TCP, rud a bhí tábhachtach freisin, mar nach raibh seoladh IP tiomnaithe ag aon cheann de na hárasáin. Ní raibh mé in ann STUN a úsáid mar go mblocálann mo sholáthraí idirlín, ar chúis éigin, naisc UDP isteach óna líonraí. Lig TCP dom an port freastalaí VPN a atreorú chuig an VPS ar cíos ag baint úsáide as SSH. Cé go gcruthaíonn an cur chuige seo forchostas suntasach, toisc go bhfuil na sonraí criptithe faoi dhó, ní raibh mé ag iarraidh an VPS a chomhtháthú i mo líonra príobháideach, mar bhí riosca ann go bhfaigheadh ​​​​tríú páirtithe smacht air. Dá bhrí sin, ní raibh sé inmhianaithe ar chor ar bith gléas den sórt sin a bheith ar mo líonra baile, agus mar sin shocraigh mé forchostas suntasach a íoc as slándáil.

Chun an port ar an ródaire a atreorú inar beartaíodh an freastalaí a imscaradh, d'úsáid mé an clár sshtunnel. Ní rachaidh mé isteach i sonraí a chumraíochta—tá sé sách éasca. Tabharfaidh mé faoi deara gurbh é an cuspóir a bhí leis ná port TCP 1194 a atreorú ón ródaire chuig an VPS. Ansin, chumraigh mé an freastalaí. OpenVPN Ar an ngléas tap0, a bhí ceangailte leis an droichead br-lan. Tar éis dom an nasc leis an bhfreastalaí nua-chruthaithe a thástáil ó mo ríomhaire glúine, bhí sé soiléir gur oibrigh an smaoineamh maidir le calafoirt a atreorú, agus gur ball de líonra an ródaire a bhí i mo ríomhaire glúine, cé nach raibh sé mar chuid de go fisiciúil.

Ní raibh fágtha le déanamh ach seoltaí IP a dháileadh in árasáin éagsúla ionas nach mbeadh coimhlint eatarthu agus na ródairí a chumrú mar a bheadh ​​siad... OpenVPN-cliaint.
Roghnaíodh na seoltaí IP ródaire seo a leanas agus raonta freastalaí DHCP:

  • 192.168.10.1 le raon 192.168.10.2 - 192.168.10.80 don fhreastalaí
  • 192.168.10.100 le raon 192.168.10.101 - 192.168.10.149 don ródaire in árasán Uimh. 2
  • 192.168.10.150 le raon 192.168.10.151 - 192.168.10.199 don ródaire in árasán Uimh. 3

Bhí sé riachtanach na seoltaí seo a shannadh do na ródairí cliant freisin. OpenVPN-server, tríd an líne seo a leanas a chur leis a chumraíocht:

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

agus na línte seo a leanas a chur leis an gcomhad /etc/openvpn/ipp.txt:

flat1_id 192.168.10.100
flat2_id 192.168.10.150

áit a bhfuil flat1_id agus flat2_id ina n-ainmneacha gléasanna a shonraítear agus deimhnithe á gcruthú chun ceangal le OpenVPN

Ansin, cumraíodh na ródairí OpenVPN- cliaint, cuireadh gléasanna tap0 ar an dá cheann leis an droichead br-lan. Ag an bpointe seo, bhí cuma cheart ar gach rud, toisc go bhféadfadh na trí líonra a chéile a fheiceáil agus feidhmiú mar aonad aonair. Mar sin féin, tháinig mionsonra sách míthaitneamhach chun cinn: uaireanta gheobhadh gléasanna seoladh IP ón ródaire mícheart, agus na hiarmhairtí go léir a lean as sin. Ar chúis éigin, theip ar an ródaire i gceann de na hárasáin freagairt do DHCPDISCOVER in am, agus fuair an gléas an seoladh mícheart. Thuig mé go raibh orm iarratais den sórt sin a scagadh i tap0 ar gach ródaire, ach de réir dealraimh, ní féidir le iptables oibriú le gléas má tá sé mar chuid de dhroichead, mar sin bhí orm ebtables a úsáid. Ar an drochuair, ní raibh sé san áireamh i mo fhirmware, mar sin b'éigean dom na híomhánna do gach gléas a atógáil. Tar éis é seo a dhéanamh agus na línte seo a leanas a chur le /etc/rc.local ar gach ródaire, réitíodh an fhadhb:

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

Mhair an chumraíocht seo ar feadh trí bliana.

Cuid 2: Ag Eolas WireGuard

Le déanaí, tá níos mó cainte ar siúl ar an Idirlíon faoi WireGuard, ag meas a éascaíochta cumraíochta, a luas ard aistrithe, a ping íseal, agus a shlándáil inchomparáide. Léirigh cuardach ar fhaisnéis bhreise faoi nach dtacaíonn sé le tacaíocht do bhall droichid ná do phrótacal TCP, rud a thug orm a chreidiúint nach raibh aon rogha eile ann. OpenVPN níl sé ann fós domsa. Mar sin chuir mé moill ar eolas a chur air WireGuard.

Cúpla lá ó shin, scaipeadh nuacht trí acmhainní a bhain le TF ar bhealach amháin nó ar bhealach eile a WireGuard cuirfear san áireamh sa chroílár é sa deireadh Linux, ag tosú le leagan 5.6. Moladh ailt nuachta, mar is gnáth. WireGuardChuaigh mé i mbun cuardaigh arís ar bhealaí chun an sean-rud maith a athsholáthar OpenVPNAn uair seo bhuail mé isteach airteagal seo. Labhair sé faoi chruthú tollán Ethernet thar L3 ag baint úsáide as GRE. Thug an t-alt seo dóchas dom. Ní raibh sé soiléir fós cad ba cheart a dhéanamh le prótacal an UDP. Thug an cuardach dom ailt faoi úsáid a bhaint as socat i gcomhar le tollán SSH chun calafort UDP a chur ar aghaidh, áfach, thug siad faoi deara nach n-oibríonn an cur chuige seo ach i mód nasc amháin, is é sin, go mbeadh obair roinnt cliant VPN dodhéanta. Tháinig mé suas leis an smaoineamh freastalaí VPN a shuiteáil ar VPS agus GRE a bhunú do chliaint, ach mar a d'éirigh sé amach, ní thacaíonn GRE le criptiú, rud a fhágann go bhfaighidh tríú páirtithe rochtain ar an bhfreastalaí. , beidh an trácht go léir idir mo líonraí ina lámha , rud nár oireann dom ar chor ar bith.

Arís eile, rinneadh an cinneadh i bhfabhar criptithe iomarcach, trí VPN a úsáid thar VPN ag baint úsáide as an scéim seo a leanas:

VPN Leibhéal 1:
VPS Is é freastalaí le seoladh inmheánach 192.168.30.1
MS Is é cliant VPS le seoladh inmheánach 192.168.30.2
MK2 Is é cliant VPS le seoladh inmheánach 192.168.30.3
MK3 Is é cliant VPS le seoladh inmheánach 192.168.30.4

VPN dara leibhéal:
MS Is é freastalaí le seoladh seachtrach 192.168.30.2 agus seoladh inmheánach 192.168.31.1
MK2 Is é cliant MS leis an seoladh 192.168.30.2 agus tá IP inmheánach 192.168.31.2 aige
MK3 Is é cliant MS leis an seoladh 192.168.30.2 agus tá IP inmheánach 192.168.31.3 aige

* MS — freastalaí ródaire in árasán 1, MK2 - ródaire in árasán 2, MK3 - ródaire in árasán 3
* Foilsítear cumraíochtaí gléis sa spoiler ag deireadh an ailt.

Agus mar sin, tá pings ag rith idir nóid líonra 192.168.31.0/24, tá sé in am bogadh ar aghaidh chuig tollán GRE a bhunú. Roimhe seo, ionas nach gcailltear rochtain ar ródairí, is fiú tolláin SSH a bhunú chun port 22 a chur ar aghaidh chuig an VPS, ionas go mbeidh, mar shampla, an ródaire ó árasán 10022 inrochtana ar phort 2 den VPS, agus an beidh ródaire ó árasán 11122 inrochtana ar phort 3 ródaire ó árasán XNUMX. Is fearr cur ar aghaidh a chumrú ag baint úsáide as an sshtunnel céanna, ós rud é go ndéanfaidh sé an tollán a athchóiriú má theipeann air.

Tá an tollán cumraithe, is féidir leat ceangal le SSH tríd an gcalafort ar aghaidh:

ssh root@МОЙ_VPS -p 10022

Ar aghaidh ba chóir duit a dhíchumasú OpenVPN:

/etc/init.d/openvpn stop

Anois socróimid tollán GRE ar an ródaire ó árasán 2:

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

Agus cuir an comhéadan cruthaithe leis an droichead:

brctl addif br-lan grelan0

Déanaimis nós imeachta comhchosúil ar ródaire an fhreastalaí:

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

Agus cuir an comhéadan cruthaithe leis an droichead freisin:

brctl addif br-lan grelan0

ag tosú ón nóiméad seo, tosaíonn pings ag dul go rathúil go dtí an líonra nua agus mé, le sásamh, dul chun caife a ól. Ansin, chun meastóireacht a dhéanamh ar an gcaoi a bhfuil an líonra ag obair ar an taobh eile den líne, déanaim iarracht SSH isteach i gceann de na ríomhairí in árasán 2, ach reoiteann an cliant ssh gan leideanna le haghaidh focal faire. Tá mé ag iarraidh ceangal leis an ríomhaire seo trí telnet ar phort 22 agus feicim líne óna dtuigim go bhfuil an nasc á bhunú, tá an freastalaí SSH ag freagairt, ach ar chúis éigin ní spreagann sé dom logáil isteach.

$ telnet 192.168.10.110 22
SSH-2.0-OpenSSH_8.1

Táim ag iarraidh ceangal leis trí VNC agus scáileán dubh a fheiceáil. Cuirim ina luí orm féin go bhfuil an fhadhb leis an ríomhaire iargúlta, mar is féidir liom ceangal go héasca leis an ródaire ón árasán seo ag baint úsáide as an seoladh inmheánach. Socraím, áfach, nascadh le SSH an ríomhaire seo tríd an ródaire agus tá iontas orm a fháil amach go n-éiríonn leis an nasc, agus go n-oibríonn an ríomhaire iargúlta go leor de ghnáth, ach ní féidir leis ceangal le mo ríomhaire freisin.

Tógaim an gléas grelan0 amach as an droichead agus rithim é. OpenVPN Ar an ródaire in árasán 2, dheimhnigh mé go raibh an líonra ag obair i gceart arís agus nach raibh naisc ag titim. Agus mé ag cuardach, tháinig mé ar fhóraim inar raibh daoine ag gearán faoi na fadhbanna céanna, agus inar tugadh comhairle dóibh an MTU a ardú. Ní raibh mé in ann é sin a rá. Mar sin féin, go dtí go raibh an MTU socraithe ard go leor - 7000 do ghléasanna gretap - bhí taithí agam ar naisc TCP caillte nó ar luasanna aistrithe ísle. Mar gheall ar an MTU ard do gretap, an MTU do naisc WireGuard Socraíodh an chéad leibhéal agus an dara leibhéal ag 8000 agus 7500 faoi seach.

Rinne mé socrú comhchosúil ar an ródaire ó árasán 3, agus ba é an t-aon difríocht a bhí ann ná gur cuireadh an dara comhéadan gretap darb ainm grelan1 leis an ródaire freastalaí, a cuireadh leis an droichead br-lan freisin.

Tá gach rud ag obair. Anois is féidir leat an tionól gretap a chur isteach sa tosaithe. Dó seo:

Chuir mé na línte seo in /etc/rc.local ar an ródaire in árasán 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

Cuireadh é seo le /etc/rc.local ar an ródaire in árasán 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

Agus ar an ródaire freastalaí:

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

Tar éis dom na ródairí cliant a atosú, fuair mé amach nach raibh siad ag ceangal leis an bhfreastalaí ar chúis éigin. Tar éis dom ceangal lena n-SSH (buíochas le Dia, bhí sshtunnel cumraithe agam roimhe seo chuige seo), fuair mé amach go WireGuard Ar chúis éigin, cruthaíonn sé bealach don chríochphointe, ach tá sé mícheart. Mar shampla, i gcás 192.168.30.2, shonraigh an tábla bealaí bealach tríd an gcomhéadan pppoe-wan, i.e., tríd an idirlíon, cé gur cheart an bealach chuige a bheith dírithe tríd an gcomhéadan wg0. Tar éis an bealach seo a scriosadh, athchóiríodh an nasc. An féidir liom treoracha a fháil in áit ar bith maidir le conas nasc a fhorchur? WireGuard Ní raibh mé in ann na bealaí seo a chruthú a sheachaint. Thairis sin, níor thuig mé fiú an gné de OpenWRT nó de chuid an... WireGuardGan mórán ama a chaitheamh ag réiteach an fhadhba, chuir mé líne leis an script lúb-ama ar an dá ródaire a scrios an bealach seo:

route del 192.168.30.2

Achoimre

Diúltú iomlán OpenVPN Níl sé seo bainte amach agam go fóill, mar is gá dom ceangal le líonra nua ó ríomhaire glúine nó fón ó am go ham, agus is gnách go mbíonn sé dodhéanta gléas gretap a bhunú orthu. Mar sin féin, in ainneoin seo, tá buntáiste bainte amach agam i luas aistrithe sonraí idir árasáin, agus tá sé saor ó thrioblóid anois VNC a úsáid, mar shampla. Tá laghdú beag tagtha ar an ping ach tá sé níos cobhsaí anois:

Nuair a bheidh ag úsáid an 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

Nuair a bheidh ag úsáid an 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

Bíonn tionchar níos mó aige ar an bping ard go dtí an VPS, atá thart ar 61.5 ms

Mar sin féin, tá an luas méadaithe go suntasach. Mar sin, san árasán leis an ródaire-freastalaí, tá luas nasc idirlín 30 Mbps agam, agus sna hárasáin eile tá sé 5 Mbps. Thairis sin, le linn úsáide OpenVPN Ní raibh mé in ann luas aistrithe sonraí idir líonraí níos mó ná 3,8 Mbps a bhaint amach de réir léamha iperf, agus WireGuard "phumpáil" sé suas go dtí an 5 Mbit/soic céanna.

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

[Piaraí]
Eochair Phoiblí = <VPN_1_MS_PUBLIC_KEY>
CeadaitheIPanna = 192.168.30.2/32

[Piaraí]
Eochair Phoiblí = <VPN_2_MK2_PUBLIC_KEY>
CeadaitheIPanna = 192.168.30.3/32

[Piaraí]
Eochair Phoiblí = <VPN_2_MK3_PUBLIC_KEY>
CeadaitheIPanna = 192.168.30.4/32

Cumraíocht WireGuard ar MS (curtha le /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'

Cumraíocht WireGuard ar MK2 (curtha le /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'

Cumraíocht WireGuard ar MK3 (curtha le /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'

Sna cumraíochtaí a thuairiscítear don VPN dara leibhéal, léirím do chliaint WireGuard Port 51821. Níor cheart go mbeadh gá leis seo, mar go mbunóidh an cliant nasc ó aon phort saor, neamhphribhléideach, ach rinne mé é ar an mbealach seo ionas go bhféadfainn gach nasc isteach ar chomhéadain wg0 na ródairí go léir a dhiúltú, seachas naisc UDP isteach chuig port 51821.

Tá súil agam go mbeidh an t-alt úsáideach do dhuine éigin.

PS Chomh maith leis sin, ba mhaith liom mo script a roinnt a sheolann fógra PUSH chuig mo ghuthán san iarratas WirePusher nuair a bhíonn gléas nua le feiceáil ar mo líonra. Seo an nasc chuig an script: github.com/r0ck3r/device_discover.

Suas chun dáta: Cumraíocht OpenVPN-freastalaithe agus cliaint

OpenVPN-freastalaí

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

OpenVPN- an cliant

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

Bhain mé úsáid as easy-rsa chun teastais a ghiniúint

Foinse: will.com

Ceannaigh óstáil iontaofa do shuímh le cosaint DDoS, freastalaithe VPS VDS 🔥 Ceannaigh óstáil gréasáin iontaofa le cosaint DDoS, freastalaithe VPS VDS | ProHoster