
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
Protocollum ad hoc munus exsequendum electum initio erat OpenVPN, quia, primo, instrumentum tactus creare potest quod ponti addi potest sine ullis difficultatibus, et secundo, OpenVPN TCP sustinet, quod etiam magni momenti erat, cum nulla ex habitationibus inscriptionem IP dedicatam haberet. STUN uti non potui quia meus ISP, nescioqua de causa, nexus UDP advenientes ex suis retibus intercludit. TCP mihi permisit ut portum servi VPN ad VPS conductum utens SSH transmitterem. Quamquam haec methodus onus magnum creat, cum data bis encryptata sint, VPS in rete meum privatum integrare nolebam, quia periculum erat ne tertiae partes potestatem in eo obtinerent. Ergo, tale instrumentum in rete domestica mea habere valde molestum erat, ita sumptus magnos pro securitate solvere constitui.
Ad portum in itinere ubi servus collocandus erat transmittendum, programmate "sshtunnel" usus sum. In singula configurationis non ingrediar—satis facilis est. Tantum notabo eius propositum fuisse portum TCP 1194 ab itinere ad VPS transmittere. Deinde, servum configuravi. OpenVPN In instrumento tap0, quod ponte br-lan coniunctum erat. Postquam nexum cum servo nuper creato ex computatro meo portatili probavi, manifestum factum est consilium translationis portuum functionem praebuisse, et computatrum meum portatile membrum retiaculi encaminatoris factum esse, quamquam pars eius physica non erat.
Solum restabat inscriptiones IP in diversa aedes distribuere ne inter se confligerent et itineratores configurare ut... OpenVPN-clientes.
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 "
Necesse etiam erat has inscriptiones itineratricibus clientium assignare. OpenVPN-server, addendo hanc lineam ad eius configurationem:
ifconfig-pool-persist /etc/openvpn/ipp.txt 0et 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 nomina machinarum specificata cum certificata ad connexionem cum creantur. OpenVPN
Deinde, itineratores configurati sunt OpenVPN- clientes, instrumenta tap0 in utroque ponte br-lan addita sunt. Hoc tempore, omnia bene videbantur, cum omnes tres retia inter se videre et ut una unitas fungi possent. Attamen res aliquantum molesta emersit: interdum instrumenta inscriptionem IP ab itineratore erroneo accipiebant, cum omnibus consequentiis inde ortis. Nescioqua de causa, itinerator in uno ex aedibus DHCPDISCOVER tempore respondere non potuit, et instrumentum inscriptionem falsam accepit. Intellexi me tales petitiones in tap0 in unoquoque itineratore filtrare debere, sed, ut apparuit, iptables cum instrumento operari non potest si pars pontis est, itaque ebtables uti debui. Infeliciter, firmware meum id non includebat, itaque imagines pro unoquoque instrumento reconstruere debui. Postquam hoc feci et sequentes lineas ad /etc/rc.local in unoquoque itineratore addidi, problema solutum est:
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: Cognoscere WireGuard
Nuper, in interreti de... magis magisque sermo fit WireGuard, admirans eius facilitatem configurationis, celeritatem translationis magnam, impulsum ping humilem, et securitatem comparabilem. Inquisitione informationum additarum de eo patefactum est eum neque protocollum "bridge member" neque "TCP" sustinere, quod me ad credendum adduxit nullam alternativam esse. OpenVPN mihi adhuc non est. Itaque distuli cognoscere WireGuard.
Paucis ante diebus, nuntius per fontes ad res informaticas quodam modo pertinentes diffusus est... WireGuard tandem in nucleo includetur Linux, incipiens a versione 5.6. Articuli nuntiorum, ut semper, laudati sunt. WireGuardIterum me immersi in investigationem viarum ad bonum vetus substituendum. OpenVPNHoc tempore incidi in . 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 10022Deinde inactivare debes OpenVPN:
/etc/init.d/openvpn stopNunc 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.
Instrumentum grelan0 e ponte extraho et curro. OpenVPN In itinere in apartamento secundo, confirmavi rete iterum recte fungi et nexus non interrumpi. Quaerens, fora inveni ubi homines de eisdem difficultatibus querebantur, et ubi eis suadebatur ut MTU augerent. Simul dictum, factum. Attamen, donec MTU satis altum constitutum est — 7000 pro machinis gretap — aut nexus TCP intermissos aut celeritates translationis humiles expertus sum. Propter altum MTU pro gretap, MTU pro nexibus... WireGuard Primus et secundum gradus respective ad 8000 et 7500 constituti sunt.
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 itineratores clientium denuo initiavi, inveni eos nescio qua de causa cum servo coniungi non posse. Postquam ad eorum SSH coniunctus sum (gratias agimus, sshtunnel antea ad hoc configuraveram), inveni... WireGuard Nescioqua de causa, viam ad terminum creat, sed erronea est. Exempli gratia, pro 192.168.30.2, tabula viarum viam per interfaciem pppoe-wan, id est, per interrete, specificavit, quamquam via ad eam per interfaciem wg0 dirigi debuit. Postquam hanc viam deleverim, conexio restituta est. Num instructiones uspiam invenire possum quomodo cogere...? WireGuard Has vias creare vitare non potui. Praeterea, ne intellexi quidem utrum haec proprietas OpenWRT an... esset. WireGuardSine multo tempore insumendo problema investigando, simpliciter lineam addidi scripto "time-loop" in ambobus itineribus quae hanc viam delevit:
route del 192.168.30.2
quoquo
Reiectio completa OpenVPN Hoc nondum perfeci, cum interdum ex computatro portatili vel telephono ad novam retem coniungi necesse sit, et instrumentum gretap in eis constituere plerumque impossibile sit. Attamen, hoc non obstante, commodum in celeritate translationis datorum inter aedes consecutus sum, et usus VNC, exempli gratia, nunc sine molestia est. Ping paulum decrevit sed stabilior factus est:
cum usura 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 autem insigniter aucta est. Itaque, in apartamento cum servitore-router, celeritatem connexionis interretialis triginta Mbps habeo, et in aliis apartamentis quinque Mbps. Praeterea, dum utor... OpenVPN Celeritatem translationis datorum inter retia maiorem quam 3,8 Mbps secundum lectiones iperf consequi non potui, dum... WireGuard ad eosdem 5 Mbit/sec "excitavit".
configuratione WireGuard in VPS[Interface]
Address = 192.168.30.1/24
ListenPort = 51820
PrivateKey = <ЗАКРЫТЫЙ_КЛЮЧ_ДЛЯ_VPS>
[Par]
Clavis Publica = <VPN_1_MS_PUBLIC_KEY>
LicitusIPs = 192.168.30.2/32
[Par]
Clavis Publica = <VPN_2_MK2_CLAVIS_PUBLICA>
LicitusIPs = 192.168.30.3/32
[Par]
Clavis Publica = <VPN_2_MK3_CLAVIS_PUBLICA>
LicitusIPs = 192.168.30.4/32
configuratione WireGuard in MS (additum ad /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'
configuratione WireGuard in MK2 (additum ad /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'
configuratione WireGuard in MK3 (additum ad /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 configurationibus descriptis pro VPN secundi gradus, clientibus significo WireGuard Portus 51821. Hoc necessarium esse non debet, cum cliens nexum ex quolibet portu libero et non privilegiato instituet, sed hoc modo feci ut omnes nexus ingressentes in interfaciebus wg0 omnium itineratorum negare possem, exceptis nexibus UDP ingressentibus ad portum 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: .
UPDATE: configuratione OpenVPN-servitores et clientes
OpenVPN-server
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-lzoOpenVPN-cliens
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
