Donec adipiscing ab OpenVPN ad WireGuard ad confirmandas retiacula in unum L2 network

Donec adipiscing ab OpenVPN ad WireGuard ad confirmandas retiacula in unum L2 network

Experientiam meam vellem communicare retiacula coniungendi in tribus conclavibus geographicis distantibus, quarum unaquaeque iter itineris cum OpenWRT ut porta, in unum commune retis utitur. Quando eligens methodum coniungendi retiacula inter L3 cum subnet fuso et L2 traiectu, cum omnes nodi retiaculi in eodem subnet erunt, praeponendum est secundo methodo, quae difficilior est configurandi, sed plures opportunitates praebet, quia diaphanum est. usus technologiarum cogitavit in retis creatis Wake-on-Lan et DLNA.

Pars I: Maecenas vitae

OpenVPN protocollum ad hoc negotium exsequendum initio destinatus est, cum primum machinam sonum creare potest qui sine ullis quaestionibus ad pontem addi potest, deinde OpenVPN operationem super TCP protocollo sustinet, quod etiam magni momenti fuit, quia nulla habitacula IP inscriptionis dedicata habuit, et STUN uti non potui, quod ob aliquam causam meam ISP stipitibus venientes UDP nexus ex reticulis suis, dum TCP protocollum permisit me VPN servitorem portum in conducto VPS utendo SSH transmittere. Imo, accessus dat magnum onus, cum bis encrypted notitia est, sed nolui VPS in retia mea privata introducere, cum adhuc periculum esset tertiarum partium potiendi in ea, quapropter talem machinam habent. in retis domesticis valde inutile erat et cum magno supra caput securitatis stipendium esse placuit.

Ad portum iter itineris quo servo explicandum destinabatur, progressio sshtunnel adhibita est. ambages figurae eius non describemus - quod facillime fit, animadvertimus solum munus eius 1194 ab itinere ad VPS portum progredi TCP. Deinde, servo OpenVPN figuratus est in fabrica tap0, quae ponte br-lan iuncta erat. Postquam nexum inhibito servo e laptop nuper creato, patuit notionem portus promovendi se iustificari et laptop meus membrum retis itineris factus est, quamvis non corpore in illo fuit.

Res parva remanebat: necesse erat IP inscriptiones in diversis conclavibus distribuere ut iter non confligerent et sicut clientes OpenVPN configurarent.
Sequens iter IP inscriptiones et DHCP servo iugis delecti sunt:

  • 192.168.10.1 cum range 192.168.10.2 - 192.168.10.80 pro servo
  • 192.168.10.100 cum range 192.168.10.101 - 192.168.10.149 ad iter in apartment No. II "
  • 192.168.10.150 cum range 192.168.10.151 - 192.168.10.199 ad iter in apartment No. II "

Oportuit etiam has inscriptiones exacte assignare ad iter itineris clientis OpenVPN servientis addendo lineam suae configurationis;

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

et sequentes versus ad fasciculum /etc/openvpn/ipp.txt addit:

flat1_id 192.168.10.100
flat2_id 192.168.10.150

ubi flat1_id et flat2_id sunt fabrica nomina certa cum generans testimoniales pro connectens ad OpenVPN

Deinde, OpenVPN clientes iter itineris configurati sunt, machinae tap0 in utroque ponte br-lan additae sunt. Hac in re omnia videbantur esse in ordine, cum omnes tres retiacula se mutuo videant et in toto operentur. Sed non admodum iucunda res evenit: interdum machinae IP oratio non ab itinere iter cum omnibus consequentibus consequi potuit. Horum autem itinerarium in una conclavium tempus non fuit ut DHCPDISCOVER responderet in tempore et fabrica inscriptionis iniuriae accepit. Intellexi me huiusmodi petitiones in tap0 singulis itinerum emittere debere, sed ut evenit, iptables non posse artificio operari si pars pontis et eblemata mihi succurrerent. Meo dolore, non erat in firmware mea, nec imagines reficere habui pro singulis artificiis. Hoc facto et addendo has lineas ad /etc/rc.locum uniuscuiusque itineris, solvitur quaestio;

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

Haec conformatio per tres annos duravit.

Pars II: Introductio WireGuard

Nuper, in Interreti magis magisque de WireGuard locutus est, mirans simplicitatem figurae suae, celeritatem altam translationis, humilis ping cum securitate comparabilis. Plura de eo quaerens significavit neque opus pontis membrum neque opus in protocollo TCP adiuvari, quo me putem adhuc nullas esse res ad OpenVPN pro me. Distuli igitur ut cognoscat WireGuard.

Paucis abhinc diebus, nuntius divulgatus per facultates modo vel alio ad IT cognatam WireGuard tandem in nucleo Linux inclusus est, incipiens a versione 5.6. Articuli nuntii, ut semper, laudaverunt WireGuard. Iterum me in quaero vias reponere in antiqua OpenVPN. Hoc tempore cucurrit in hoc articulum. Loquebatur de creando cuniculum Aer- nei super L3 utendo GRE. Articulus hic spem mihi dedit. Incertum erat quid faciendum cum UDP protocollo. Investigantes me perduxerunt ad articulos de utendo socat in conjunctione cum cuniculo SSH ad portum UDP transmissurum, tamen notaverunt accessum solum operare in uno nexu modo, quod significat multiplicem clientes VPN impossibile fore. Accessi cum idea ut servom VPN constituere in VPS, et GRE clientibus configurare, sed quia evenit, GRE encryptionem non sustinet, quod eo fiet, si partes tertiae ad servo accessum adibunt; omnia negotiatio inter retiacula mea in manibus est quae mihi omnino non placuerunt.

Iterum, decretum est in favorem encryptionis redundantis, utendo VPN super VPN secundum sequens schema:

Layer XNUMX VPN:
VPS Est server cum inscriptione interna 192.168.30.1
MS Est clientem VPS cum inscriptione interna 192.168.30.2
MK2 Est clientem VPS cum inscriptione interna 192.168.30.3
MK3 Est clientem VPS cum inscriptione interna 192.168.30.4

Iacuit XNUMX VPN:
MS Est server cum inscriptione externa 192.168.30.2 et interna 192.168.31.1
MK2 Est clientem MS cum inscriptione 192.168.30.2 et internum habet IP of 192.168.31.2
MK3 Est clientem MS cum inscriptione 192.168.30.2 et internum habet IP of 192.168.31.3

* MS - iter-servo in apartment I; MK2 — iter in diaetam 2, MK3 - iter in apartment 3
* Fabrica figurarum in fine articuli prodierunt.

Itaque pings inter nodi retis 192.168.31.0/24 ire, tempus est ad GRE cuniculum instituendum progredi. Priusquam, ne aditus iter amittat, valet cuniculos SSH erigere ad portum 22 ad VPS transmittere, ut exempli gratia iter ex diaetae 10022 in portu 2 ex VPS praesto sit, et a. iter ab diaetae 11122 praesto erit in portu 3 itineris VPS a diaetae XNUMX. Optimum est transmissionem cum eodem sshtunnel configurare, quoniam cuniculum in casu cadit restituet.

Cuniculum configuratur, per portum transmissum ad SSH coniungere potes;

ssh root@МОЙ_VPS -p 10022

Deinde inactivare OpenVPN:

/etc/init.d/openvpn stop

Nunc de GRE cuniculum in itinere ab diaetae 2 constituamus.

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

Creatus interface ad pontem;

brctl addif br-lan grelan0

Similem modum faciamus in calculonis itineris:

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

Et etiam ad pontem cre- mentum adde:

brctl addif br-lan grelan0

ab hoc momento incipiens, pings utiliter ad novum retis incipio ire et ego, cum gaudio, ad capulus bibam. Tum videre quomodo retis in altero fine filum operabitur, studeo SSH in unum e computatris in diaetam 2 , sed client ssh sine admonitione tesserae me concrescit. Conor coniungere cum hoc computatro per telnet in portu 22 et vide lineam ex qua intellegere potes nexum constitui, servo SSH respondet, sed aliqua de causa me ingredi non praebet.

$ telnet 192.168.10.110 22
SSH-2.0-OpenSSH_8.1

Conor coniungere cum ea per VNC et video tentorium nigrum. Convinco me rem esse in computatro remoto, quod facile possum ad iter itineris ex hac conclavi utentem interna electronica coniungere. Nihilominus decerno SSH in hoc computatorio per iter et miror invenire nexum succedentem et remotum opus computatorii bene sed nec cum meo computatorio nec coniungere.

Grelan0 machinam e ponte accipio et OpenVPN in itinere in diaetam 2 incipio et fac retiaculum rite laborat et hospites non dimittunt. Scrutantes forum invenio ubi homines de iisdem quaestionibus queruntur, ubi monuntur MTU tollere. Dictum factum quam cito. Nihilominus, donec MTU ad valorem 7000 pro gretap machinis satis amplum constitutum sit, vel nexus TCP omissae vel nuntii tardi observati sunt. Ob summam MTU pro gretap, MTUs pro WireGuard nexus primi et secundi gradus ad 8000 et 7500 positi sunt, respective.

Similem paroecialem feci in itinere ab diaetae 3, cum sola differentia quod alterum interfacies grelan1 nomine grelanXNUMX servo itineris additus est, quod etiam ponte br-lan additus est.

Omnia laborat. Nunc conventum magnum in autoload mittere potes. Quia haec:

Has lineas collocavit in /etc/rc.local in itinere in apartment 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

Addidit haec /etc/rc.local in itinere in apartment 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

Et in servo iter facit;

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

Postquam itinera clientis rebollant, deprehendi aliqua de causa cum servo non coniungere. Coniungens cum eorum SSH (fortunate, antea sshtunnel hoc configuravi), compertum est WireGuard aliqua de causa iter ad finem facere, cum falsa sit. Ita, pro 192.168.30.2, mensa itineris designata est in mensa viae per interfaciem pppoe-wan, id est, per interretum, quamvis via ad illam per interfaciem wg0 dirigi debuit. Deleto hoc itinere, nexus restitutus est. Instructiones alicubi invenire non potui quomodo WireGuard compelleret ad has vias non creandas. Quin etiam non intellexi si hoc proprium est OpenWRT, vel ipsius WireGuard. Sine diuturno problemate tractando, utrumque iter in scriptura timer praefixum simpliciter addidi, lineam quae hanc viam delevit;

route del 192.168.30.2

quoquo

Nondum perfectam reiectionem OpenVPN consecutus sum, quandoquidem interdum opus est ut cum retis novis e laptop vel telephonio coniungi, et in illis magnum artificium constituens fere impossibilis est, sed tamen hoc commodum in notitia translationis cepi. celeritas inter conclavia et, exempli gratia, usura VNC non iam incommodum est. Ping leviter decrevit, sed stabilior factus est;

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

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

Maxime afficitur alto ping ad VPS quod est circiter 61.5ms

Celeritas tamen signanter crevit. Itaque in diaetam cum servo itineris, nexum interretialem celeritatem 30 Mbps habeo, et in aliis conclavibus, 5 Mbps. Eodem tempore, dum OpenVPN utens, datam translationem rate inter retiaculorum plus quam 3,8 Mbps secundum iperf assequi non potui, dum WireGuard "exantlaretur" ad eundem 5 Mbps.

WireGuard configuratione in 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 configuration on MS (added to /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'

Configuratio WireGuard in MK2 (addita /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'

Configuratio WireGuard in MK3 (addita /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'

In descriptis configurationibus pro secundo gradu VPN, portum 51821 ad clientes WireGuard designo. In speculatione hoc non est necessarium, cum cliens nexum ex aliquo portu non privilegiato liberum constituet, sed feci ut omnes nexus ineuntes negari potest per interfationes wg0 omnium iter, nisi advenientes UDP nexus in portu 51821.

Spero articulum alicui utilem fore.

PS Etiam, litteras meas communicare volo, qui mihi notificationem ad telephonum meum in WirePusher telehoram transmittit, cum nova machina in retis meis apparet. Hic nexus scripto est: github.com/r0ck3r/device_discover.

UPDATE: OpenVPN server and clients configuration

OpenVPN servo

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 clientis

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

Facile usus sum ad generandos libellos.

Source: www.habr.com

Add a comment