
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
Pwotokòl yo te chwazi pou aplike travay sa a okòmansman te OpenVPN, paske, premyèman, li ka kreye yon aparèy tiyo ke yo ka ajoute sou pon an san okenn pwoblèm, epi dezyèmman, OpenVPN Li sipòte TCP, ki te enpòtan tou, paske okenn nan apatman yo pa t gen yon adrès IP dedye. Mwen pa t ka itilize STUN paske ISP mwen an, pou kèk rezon, bloke koneksyon UDP k ap rantre nan rezo li yo. TCP te pèmèt mwen redireksyon pò sèvè VPN lan bay VPS mwen te lwe a lè l sèvi avèk SSH. Pandan ke apwòch sa a kreye yon gwo depans, kòm done yo chiffres doub, mwen pa t vle entegre VPS la nan rezo prive mwen an, paske te gen yon risk pou twazyèm pati pran kontwòl sou li. Se poutèt sa, li pa t dezirab ditou pou m gen yon aparèy konsa sou rezo lakay mwen, kidonk mwen te deside peye yon gwo depans pou sekirite.
Pou mwen te kapab redireksyon pò a sou routeur kote sèvè a te prevwa pou deplwaye a, mwen te itilize pwogram sshtunnel la. Mwen p ap antre nan detay konfigirasyon li—li fasil ase. M ap jis note ke objektif li se te pou redireksyon pò TCP 1194 soti nan routeur la pou ale nan VPS la. Apre sa, mwen te konfigire sèvè a. OpenVPN Sou aparèy tap0 la, ki te konekte ak pon br-lan an. Apre mwen fin teste koneksyon an ak sèvè ki fèk kreye a apati laptop mwen an, li te vin klè ke lide redireksyon pò a te mache, epi laptop mwen an te vin yon manm rezo routeur la, menm si li pa t fizikman fè pati de li.
Sèl bagay ki te rete pou fè se te distribye adrès IP nan diferan apatman pou yo pa antre an konfli epi konfigire routeurs yo jan yo ye a. OpenVPN-kliyan.
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 nesesè tou pou bay routeur kliyan yo adrès sa yo. OpenVPN-server, lè w ajoute liy sa a nan konfigirasyon li a:
ifconfig-pool-persist /etc/openvpn/ipp.txt 0epi 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 kreye sètifika pou konekte ak OpenVPN
Apre sa, yo te konfigire routeur yo OpenVPN- kliyan, aparèy tap0 sou tou de yo te ajoute nan pon br-lan an. Nan pwen sa a, tout bagay te sanble anfòm, paske twa rezo yo te kapab wè youn lòt epi fonksyone kòm yon sèl inite. Sepandan, yon detay yon ti jan dezagreyab te parèt: pafwa aparèy yo te konn resevwa yon adrès IP nan men move routeur la, ak tout konsekans ki vin apre yo. Pou kèk rezon, routeur ki nan youn nan apatman yo pa t reponn a DHCPDISCOVER alè, epi aparèy la te resevwa move adrès la. Mwen reyalize mwen te bezwen filtre demann sa yo nan tap0 sou chak routeur, men jan sa te ye a, iptables pa ka travay ak yon aparèy si li fè pati yon pon, kidonk mwen te bezwen itilize ebtables. Malerezman, firmwèr mwen an pa t enkli li, kidonk mwen te oblije rebati imaj yo pou chak aparèy. Apre mwen fin fè sa epi ajoute liy sa yo nan /etc/rc.local sou 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: Aprann Konnen WireGuard
Dènyèman, gen plis pale sou Entènèt la sou WireGuard, admire fasilite konfigirasyon li, gwo vitès transfè li, ti ping li, ak sekirite konparab li. Yon rechèch pou plis enfòmasyon sou li te revele ke li pa sipòte ni manm pon an ni sipò pwotokòl TCP, sa ki te fè m kwè pa te gen okenn altènativ. OpenVPN pou mwen li poko la toujou. Se konsa mwen ranvwaye pou m konnen WireGuard.
Sa gen kèk jou, nouvèl te gaye nan resous ki gen rapò ak IT nan yon fason oswa yon lòt ke WireGuard pral finalman enkli nan nwayo a Linux, kòmanse avèk vèsyon 5.6. Atik nouvèl yo, jan toujou, te resevwa lwanj. WireGuardMwen te plonje ankò nan chèche fason pou ranplase bon vye a OpenVPNFwa sa a mwen te tonbe sou . 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 10022Apre sa, ou ta dwe enfim OpenVPN:
/etc/init.d/openvpn stopKoulye 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 retire aparèy grelan0 la nan pon an epi mwen fè l fonksyone. OpenVPN Sou routeur ki nan apatman 2 a, mwen te konfime ke rezo a t ap fonksyone byen ankò e koneksyon yo pa t ap koupe. Pandan m t ap chèche, mwen te tonbe sou fowòm kote moun t ap plenyen pou menm pwoblèm yo, epi kote yo te konseye yo pou yo ogmante MTU a. Menm si yo te di sa, yo te fè l. Sepandan, jiskaske yo te mete MTU a ase wo—7000 pou aparèy gretap yo—mwen te fè eksperyans swa koneksyon TCP ki te tonbe oswa vitès transfè ki ba. Akòz MTU ki wo pou gretap la, MTU pou koneksyon yo WireGuard Premye ak dezyèm nivo yo te fikse respektivman a 8000 ak 7500.
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 mwen fin rekòmanse routeur kliyan yo, mwen dekouvri ke pou kèk rezon yo pa t ap konekte ak sèvè a. Apre mwen fin konekte ak SSH yo a (erezman, mwen te deja konfigire sshtunnel pou sa), mwen dekouvri ke WireGuard Pou kèk rezon, li kreye yon wout pou pwen final la, men li pa kòrèk. Pa egzanp, pou 192.168.30.2, tablo wout la te espesifye yon wout atravè koòdone pppoe-wan an, sa vle di, atravè entènèt la, byenke wout la pou rive la te dwe dirije atravè koòdone wg0 la. Apre yo fin efase wout sa a, koneksyon an te retabli. Èske mwen ka jwenn enstriksyon nenpòt kote sou kijan pou fòse... WireGuard Mwen pa t ka evite kreye wout sa yo. Anplis, mwen pa t menm konprann si sa te yon karakteristik OpenWRT oubyen si se te yon karakteristik... WireGuardSan m pa pèdi anpil tan pou m eseye konprann pwoblèm nan, mwen te tou senpleman ajoute yon liy nan script timer-loop la sou tou de routeurs yo ki te efase wout sa a:
route del 192.168.30.2
Rezime
Rejè konplè OpenVPN Mwen poko rive fè sa, paske detanzantan mwen bezwen konekte sou yon nouvo rezo apati yon laptop oubyen yon telefòn, epi jeneralman li enposib pou mete yon aparèy gretap sou yo. Sepandan, malgre sa, mwen te genyen yon avantaj nan vitès transfè done ant apatman yo, epi itilizasyon VNC, pa egzanp, kounye a se san pwoblèm. Ping diminye yon ti kras men li vin pi estab:
Lè lè l sèvi avèk la 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è lè l sèvi avèk la 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 ogmante anpil. Kidonk, nan apatman ki gen routeur-sèvè a, mwen gen yon vitès koneksyon entènèt 30 Mbps, epi nan lòt apatman yo li se 5 Mbps. Anplis, pandan m ap itilize... OpenVPN Mwen pa t kapab rive nan yon vitès transfè done ant rezo ki pi gran pase 3,8 Mbps dapre lekti iperf yo, pandan ke WireGuard "ponpe" li jiska menm 5 Mbit/segonn lan.
Konfigirasyon WireGuard sou VPS[Interface]
Address = 192.168.30.1/24
ListenPort = 51820
PrivateKey = <ЗАКРЫТЫЙ_КЛЮЧ_ДЛЯ_VPS>
[Kanmarad]
Kle Piblik = <VPN_1_MS_KEY_PIBLIK>
AllowedIPs = 192.168.30.2/32
[Kanmarad]
Kle Piblik = <VPN_2_MK2_KEY_PIBLIK>
AllowedIPs = 192.168.30.3/32
[Kanmarad]
Kle Piblik = <VPN_2_MK3_KEY_PIBLIK>
AllowedIPs = 192.168.30.4/32
Konfigirasyon WireGuard 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'
Konfigirasyon WireGuard 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'
Konfigirasyon WireGuard 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 ki dekri pou dezyèm nivo VPN lan, mwen endike kliyan yo WireGuard Pò 51821. Sa pa ta dwe nesesè, paske kliyan an ap etabli yon koneksyon soti nan nenpòt pò gratis, san privilèj, men mwen te fè l konsa pou m te ka refize tout koneksyon k ap rantre sou koòdone wg0 tout routeurs yo, eksepte koneksyon UDP k ap rantre nan 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: .
Ajou: Konfigirasyon OpenVPN-sèvè ak kliyan
OpenVPN-sèvè
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-kliyan
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
