
Gusto nakong ipaambit ang akong kasinatian sa paghiusa sa mga network sa tulo ka mga apartment nga layo sa geograpiya, ang matag usa niini naggamit sa mga router nga adunay OpenWRT isip ganghaan, ngadto sa usa ka komon nga network. Kung nagpili usa ka pamaagi alang sa paghiusa sa mga network tali sa L3 nga adunay subnet routing ug L2 nga adunay bridging, kung ang tanan nga mga node sa network naa sa parehas nga subnet, gipalabi ang gihatag sa ikaduha nga pamaagi, nga labi ka lisud nga i-configure, apan naghatag daghang mga oportunidad, tungod kay transparent. Ang paggamit sa mga teknolohiya giplano sa gibuhat nga network nga Wake-on-Lan ug DLNA.
Bahin 1: Background
Ang protocol nga gipili aron ipatuman kini nga buluhaton sa sinugdanan OpenVPN, tungod kay, una, makahimo kini og tap device nga mahimong idugang sa taytayan nga walay bisan unsang problema, ug ikaduha, OpenVPN Gisuportahan niini ang TCP, nga importante usab, kay walay usa sa mga apartment ang adunay dedicated IP address. Wala nako magamit ang STUN kay ang akong ISP, sa wala mahibal-i nga hinungdan, nagbabag sa mga mosulod nga koneksyon sa UDP gikan sa mga network niini. Gitugotan ako sa TCP nga i-forward ang VPN server port ngadto sa giabangan nga VPS gamit ang SSH. Samtang kini nga pamaagi nagmugna og dakong gasto, tungod kay ang datos doble nga gi-encrypt, dili nako gusto nga i-integrate ang VPS sa akong pribadong network, tungod kay adunay risgo nga ang mga ikatulo nga partido makakuha sa kontrol niini. Busa, ang pagbaton sa ingon nga device sa akong home network dili gyud maayo, mao nga nakahukom ko nga mobayad og dakong gasto alang sa seguridad.
Para i-forward ang port sa router diin giplano nga i-deploy ang server, gigamit nako ang sshtunnel program. Dili na nako idetalye ang configuration niini—sayon ra kaayo. Akong timan-an lang nga ang katuyoan niini mao ang pag-forward sa TCP port 1194 gikan sa router ngadto sa VPS. Sunod, akong gi-configure ang server. OpenVPN Sa tap0 device, nga konektado sa br-lan bridge. Human sa pagsulay sa koneksyon sa bag-ong gibuhat nga server gikan sa akong laptop, nahimo kining klaro nga ang ideya sa port forwarding nagtrabaho, ug ang akong laptop nahimong miyembro sa network sa router, bisan dili kini pisikal nga bahin niini.
Ang nahibilin na lang buhaton mao ang pag-apod-apod sa mga IP address sa lain-laing mga apartment aron dili kini magkasumpaki ug i-configure ang mga router sama sa OpenVPN-mga kliyente.
Ang mosunod nga mga router IP address ug DHCP server ranges gipili:
- 192.168.10.1 nga adunay usa ka range 192.168.10.2 - 192.168.10.80 para sa server
- 192.168.10.100 nga adunay usa ka range 192.168.10.101 - 192.168.10.149 alang sa usa ka router sa apartment No. 2
- 192.168.10.150 nga adunay usa ka range 192.168.10.151 - 192.168.10.199 alang sa usa ka router sa apartment No. 3
Kinahanglan usab nga i-assign kini nga mga adres ngadto sa mga client router. OpenVPN-server, pinaagi sa pagdugang sa mosunod nga linya sa iyang configuration:
ifconfig-pool-persist /etc/openvpn/ipp.txt 0ug pagdugang sa mosunod nga mga linya sa /etc/openvpn/ipp.txt file:
flat1_id 192.168.10.100
flat2_id 192.168.10.150
diin ang flat1_id ug flat2_id mao ang mga ngalan sa device nga gitino sa paghimo og mga sertipiko para sa pagkonektar sa OpenVPN
Sunod, gi-configure ang mga router OpenVPN- mga kliyente, ang mga tap0 device sa duha gidugang sa br-lan bridge. Niining puntoha, daw maayo ra ang tanan, kay ang tanang tulo ka network makakita sa usag usa ug molihok isip usa ka unit. Apan, usa ka dili maayo nga detalye ang mitumaw: usahay ang mga device makadawat og IP address gikan sa sayop nga router, uban sa tanang mosunod nga mga sangputanan. Sa wala mahibal-i nga hinungdan, ang router sa usa sa mga apartment napakyas sa pagtubag sa DHCPDISCOVER sa tukmang oras, ug ang device nakadawat sa sayop nga address. Nakaamgo ko nga kinahanglan nakong i-filter ang maong mga hangyo sa tap0 sa matag router, apan sa nahimo, ang mga iptable dili makagana sa usa ka device kon kini kabahin sa usa ka bridge, mao nga kinahanglan nakong gamiton ang ebtables. Ikasubo, ang akong firmware wala maglakip niini, mao nga kinahanglan nakong tukuron pag-usab ang mga imahe alang sa matag device. Human sa pagbuhat niini ug pagdugang sa mosunod nga mga linya sa /etc/rc.local sa matag router, nasulbad ang problema:
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
Kini nga configuration milungtad sulod sa tulo ka tuig.
Bahin 2: Pag-ila-ila WireGuard
Karong bag-o, nagkadaghan ang mga estorya sa internet bahin sa WireGuard, nga nakadayeg sa kasayon sa pag-configure, taas nga transfer speed, ubos nga ping, ug susamang seguridad. Ang pagpangita og dugang nga impormasyon bahin niini nagpadayag nga wala kini nagsuporta sa suporta sa bridge member o TCP protocol, nga nakapahunahuna nako nga wala nay laing alternatibo. OpenVPN para nako wala pa gihapon. Mao nga gilangan nako ang pag-ila-ila WireGuard.
Pipila ka adlaw ang milabay, ang balita mikaylap pinaagi sa mga kapanguhaan nga may kalabotan sa IT sa usa o lain nga paagi nga WireGuard sa katapusan maapil na sa kernel Linux, sugod sa bersyon 5.6. Ang mga artikulo sa balita, sama sa kanunay, gidayeg WireGuardNibalik ko sa pagpangita og mga paagi aron mapulihan ang daan nga maayo OpenVPNNiining higayona nasugatan nako . Naghisgot kini bahin sa paghimo og Ethernet tunnel sa L3 gamit ang GRE. Kining artikuloha naghatag kanakog paglaom. Nagpabilin nga dili klaro kung unsa ang buhaton sa protocol sa UDP. Ang pagpangita nagdala kanako sa mga artikulo bahin sa paggamit sa socat inubanan sa usa ka tunel sa SSH aron ipasa ang usa ka pantalan sa UDP, bisan pa, nahibal-an nila nga kini nga pamaagi magamit lamang sa usa ka mode nga koneksyon, nga nagpasabut nga daghang mga kliyente sa VPN ang imposible. Nakahunahuna ko sa pag-set up sa usa ka VPN server sa usa ka VPS, ug pag-set up sa GRE alang sa mga kliyente, apan ingon nga kini nahimo, ang GRE wala mosuporta sa encryption, nga mosangpot sa kamatuoran nga kung ang mga ikatulo nga partido makaangkon og access sa server , ang tanan nga trapiko tali sa akong mga network naa sa ilang mga kamot nga dili gyud angay kanako.
Pag-usab, ang desisyon gihimo pabor sa sobra nga pag-encrypt, pinaagi sa paggamit sa VPN sa VPN sumala sa mosunod nga pamaagi:
Layer XNUMX VPN:
VPS Kini mao ang server uban sa internal nga adres 192.168.30.1
MS Kini mao ang kliyente VPS nga adunay internal nga adres 192.168.30.2
MK2 Kini mao ang kliyente VPS nga adunay internal nga adres 192.168.30.3
MK3 Kini mao ang kliyente VPS nga adunay internal nga adres 192.168.30.4
Layer XNUMX VPN:
MS Kini mao ang server nga adunay eksternal nga adres 192.168.30.2 ug internal nga 192.168.31.1
MK2 Kini mao ang kliyente MS nga adunay adres nga 192.168.30.2 ug adunay internal nga IP nga 192.168.31.2
MK3 Kini mao ang kliyente MS nga adunay adres nga 192.168.30.2 ug adunay internal nga IP nga 192.168.31.3
* MS - router-server sa apartment 1, MK2 - router sa apartment 2, MK3 - router sa apartment 3
* Ang mga pag-configure sa aparato gipatik sa spoiler sa katapusan sa artikulo.
Ug busa, ang mga ping sa taliwala sa mga node sa network 192.168.31.0/24 moadto, panahon na nga magpadayon sa pag-set up sa GRE tunnel. Sa wala pa kana, aron dili mawad-an sa pag-access sa mga router, angay nga i-set up ang SSH tunnels aron ipasa ang port 22 sa VPS, aron, pananglitan, ang usa ka router gikan sa apartment 10022 magamit sa port 2 sa VPS, ug usa ka Ang router gikan sa apartment 11122 mahimong magamit sa port 3 sa VPS. router gikan sa apartment XNUMX. Labing maayo nga i-configure ang pagpasa sa parehas nga sshtunnel, tungod kay kini ibalik ang tunnel kung kini mahulog.
Ang tunel gi-configure, mahimo nimong makonektar sa SSH pinaagi sa gipasa nga pantalan:
ssh root@МОЙ_VPS -p 10022Sunod kinahanglan nimo nga i-disable OpenVPN:
/etc/init.d/openvpn stopKaron magbutang kita og GRE tunnel sa router gikan sa apartment 2:
ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.2
ip link set grelan0 up
Ug idugang ang gibuhat nga interface sa tulay:
brctl addif br-lan grelan0
Himoon nato ang susamang pamaagi sa server router:
ip link add grelan0 type gretap remote 192.168.31.2 local 192.168.31.1
ip link set grelan0 up
Ug, usab, idugang ang gibuhat nga interface sa tulay:
brctl addif br-lan grelan0
sugod niini nga higayon, ang mga ping nagsugod nga malampuson nga moadto sa bag-ong network ug ako, uban ang katagbawan, moadto sa pag-inom og kape. Dayon, aron makita kung giunsa ang network sa pikas tumoy sa wire nagtrabaho, gisulayan nako ang SSH sa usa sa mga kompyuter sa apartment 2, apan ang kliyente sa ssh nag-freeze nga wala mag-aghat kanako alang sa usa ka password. Gisulayan nako ang pagkonektar niini nga kompyuter pinaagi sa telnet sa port 22 ug tan-awa ang usa ka linya diin imong masabtan nga ang koneksyon gitukod, ang SSH server nagtubag, apan sa pipila ka rason wala kini magtanyag kanako sa pagsulod.
$ telnet 192.168.10.110 22
SSH-2.0-OpenSSH_8.1
Gisulayan nako ang pagkonektar niini pinaagi sa VNC ug nakita nako ang usa ka itom nga screen. Gikombinsir nako ang akong kaugalingon nga ang butang naa sa hilit nga kompyuter, tungod kay dali akong makonektar sa router gikan sa kini nga apartment gamit ang internal nga adres. Bisan pa, nakahukom ko nga i-SSH kini nga kompyuter pinaagi sa router ug natingala ako nga ang koneksyon nagmalampuson ug ang hilit nga kompyuter nagtrabaho nga maayo apan napakyas usab sa pagkonektar sa akong computer.
Gikuha nako ang grelan0 device gikan sa bridge ug gipadagan kini OpenVPN Sa router sa apartment 2, akong gikumpirma nga ang network nagtrabaho na usab sa husto ug ang mga koneksyon wala mohinay. Samtang nangita, nakakita ko og mga forum diin ang mga tawo nagreklamo bahin sa parehas nga mga isyu, ug diin gitambagan sila nga ipataas ang MTU. Wala madugay pagkahuman sa pagsulti. Bisan pa, hangtod nga ang MTU gibutang sa igo nga taas—7000 para sa mga gretap device—nakasinati ako og mga nahulog nga koneksyon sa TCP o ubos nga tulin sa pagbalhin. Tungod sa taas nga MTU para sa gretap, ang MTU para sa mga koneksyon WireGuard Ang una ug ikaduhang lebel gitakda sa 8000 ug 7500 matag usa.
Gibuhat nako ang susama nga pag-setup sa router gikan sa apartment 3, nga ang bugtong kalainan mao nga ang ikaduha nga gretap interface nga ginganlag grelan1 gidugang sa server router, nga gidugang usab sa br-lan bridge.
Ang tanan nagtrabaho. Karon mahimo nimong ibutang ang gretap assembly sa autoload. Alang niini:
Gibutang kini nga mga linya sa /etc/rc.local sa router sa 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
Gidugang kini sa /etc/rc.local sa router sa 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
Ug sa server router:
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
Human sa pag-reboot sa mga client router, akong nadiskobrehan nga sa wala mahibal-i nga hinungdan wala sila nakakonekta sa server. Human sa pagkonektar sa ilang SSH (maayo na lang kay na-configure na nako kaniadto ang sshtunnel para niini), akong nadiskobrehan nga WireGuard Sa wala mahibal-i nga hinungdan, naghimo kini og ruta para sa endpoint, apan dili kini husto. Pananglitan, para sa 192.168.30.2, ang route table nagtino og ruta pinaagi sa pppoe-wan interface, i.e., pinaagi sa internet, bisan kung ang ruta padulong niini kinahanglan nga gi-direkta pinaagi sa wg0 interface. Human sa pagtangtang niini nga ruta, ang koneksyon napahiuli. Makakita ba ko og mga instruksyon bisan asa kung unsaon pagpugos WireGuard Dili nako malikayan ang paghimo niining mga ruta. Dugang pa, wala gani ko kasabot kung kini ba usa ka bahin sa OpenWRT o sa WireGuardNga wala mag-usik ug daghang oras sa pagsulbad sa problema, nagdugang lang kog linya sa timer-based script sa duha ka router nga nagtangtang niini nga ruta:
route del 192.168.30.2
Pagsumada
Bug-os nga pagsalikway OpenVPN Wala pa nako kini mahimo, kay usahay kinahanglan kong mokonektar sa bag-ong network gikan sa laptop o telepono, ug ang pag-set up og gretap device niini kasagaran imposible. Apan, bisan pa niini, nakakuha kog bentaha sa gikusgon sa pagbalhin sa datos tali sa mga apartment, ug ang paggamit sa VNC, pananglitan, karon walay problema. Ang Ping mikunhod gamay apan nahimong mas lig-on:
Sa paggamit 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
Sa paggamit 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
Kasagaran kini apektado sa taas nga ping sa VPS nga gibana-bana nga 61.5ms
Apan, ang katulin misaka pag-ayo. Mao nga, sa apartment nga adunay router-server, ang akong koneksyon sa internet kay 30 Mbps, ug sa ubang mga apartment kay 5 Mbps. Dugang pa, samtang gigamit OpenVPN Wala ko nakaabot sa gikusgon sa pagbalhin sa datos tali sa mga network nga labaw sa 3,8 Mbps sumala sa mga pagbasa sa iperf, samtang WireGuard "gibomba" kini hangtod sa parehas nga 5 Mbit/sec.
Pagsalig WireGuard sa VPS[Interface]
Address = 192.168.30.1/24
ListenPort = 51820
PrivateKey = <ЗАКРЫТЫЙ_КЛЮЧ_ДЛЯ_VPS>
[Kauban]
PublicKey = <VPN_1_MS_PUBLIC_KEY>
Gitugotan nga mga IP = 192.168.30.2/32
[Kauban]
PublicKey = <VPN_2_MK2_PUBLIC_KEY>
Gitugotan nga mga IP = 192.168.30.3/32
[Kauban]
PublicKey = <VPN_2_MK3_PUBLIC_KEY>
Gitugotan nga mga IP = 192.168.30.4/32
Pagsalig WireGuard sa MS (gidugang sa /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'
Pagsalig WireGuard sa MK2 (gidugang sa /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'
Pagsalig WireGuard sa MK3 (gidugang sa /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'
Sa gihulagway nga mga configuration para sa ikaduhang lebel sa VPN, akong gipakita sa mga kliyente WireGuard Port 51821. Dili kini kinahanglan, kay ang kliyente mohimo og koneksyon gikan sa bisan unsang libre ug walay pribilehiyo nga port, apan gibuhat nako kini niining paagiha aron akong ma-deny ang tanang mosulod nga koneksyon sa wg0 interfaces sa tanang routers, gawas sa mosulod nga UDP connections ngadto sa port 51821.
Nanghinaut ko nga ang artikulo mahimong mapuslanon sa usa ka tawo.
PS Usab, gusto nakong ipaambit ang akong script nga nagpadala kanako og PUSH notification sa akong telepono sa WirePusher nga aplikasyon kon adunay bag-ong device nga makita sa akong network. Ania ang usa ka link sa script: .
UPDATE: Pagsalig OpenVPN-mga server ug kliyente
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-kliyente
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 Gigamit nako ang sayon-rsa aron makamugna og mga sertipiko.
Source: www.habr.com
