VPS IPv6 tartomány továbbosztása otthonra

Fórumok

Üdvözlet mindenkinek

Szükségem lenne némi iránymutatásra IPv6 témában: Előfizettem rackforestnél egy kissebb VPS-re, és kértem/kaptam egy /56 IPv6 címet. Azt szeretném elérni hogy ebből egy /60 vagy /64-es tartományt a saját itthoni hálózatomon tudjak használni tunnel-en keresztül. Odáig jutottam hogy hogy a VPS-en beállítottam egy Wireguard szervert és itthon egy VMWare VM-ben egy Wireguard klienst. Ez idáig remekül működik, a Wireguard csatlakozik, az itthoni (router) VM-ben van IPV6, tudok is pingelni bármilyen V6-os címet. A wireguard interface-ek címei a kapott tartományból statikusan beállított IP címek.

Kapott tartomány: 2aaa:bbbb:1::/56

VPS eth0        : 2aaa:bbbb:1:0::cccc:1/64
VPS wg0         : 2aaa:bbbb:1:1::1/64
Router VM  wg0  : 2aaa:bbbb:1:1::2/64
Router VM  eth0 : /WAN, Nincs csak ipv4 cím/
Router VM  eth1 : /Ide mi kellene megadnom?/

A VM-ben felvettem egy második hálózati csatolót (eth1) amely bridge-elve van az adott host egy fizikai interface-ével. Azt szeretném hogy ami erre az interface-re kerül csatlakoztatásra fizikailag, az kapjon V6-os címet. És itt akadtam el. Azt nem sikerül elérni hogy a VM-ben a wg0 csatolót "bridge"-eljem (tudom egyik layer2 másik layer3 tehát bridge nem lehet) a másik (eth1) csatolóval.

Egész nap ezzel kísérleteztem, keresgéltem és már valószínűleg nem látom a fától az erdőt. Próbáltam static route-al, NDP proxy, IP forwarding engedélyezve van. A VPS és a helyi VM is Debian 11.

Tehát alap kérdés: hogyan tudok a (router/kliens) VM-ben a wg0 és az eth1 között kapcsolatot teremteni?

PS: Átolvastam vagy 10x, sorry ha még így is kusza, ha szükséges még pontosítok.

Hozzászólások

A WG-n nincs lehetőség auto címkonfigurálásra. Amerre én elindulnék (csak spekuláció, nem tudom tesztelni): Kijelölnék egy teljes /64-es blokkot ami csak a saját LAN oldalam lesz, ebből osztogatnék címeket a klienseknek RADVD-vel vagy DHCPv6-tal (igazából ízlés dolga, hogy melyik, mert fix a prefix). Eztán a teljes \/64-re csinálnék egy routing-ot a megfelelő irányba a VPS-en, tehát, hogy ami abba a tartományba érkezik, azt tolja a saját eszközödre. Innen meg - elvileg - már a te routered routolja a forgalmat. Ami kérdés számomra, hogy a WireGuard jelentette L3 tényező miatt ez menni fog-e, vagy kell valamilyen L2 összeköttetés (pl. L2TP), ezt le kéne tesztelni. Amit írtam tényleg csak egy elképzelés, nincs /56-os VPS-em:(

TheAdam

Elindultam ebbe az irányba. Az is probléma volt hogy rackforest-nél elsőre tévedésből /112-es címet kaptam. Miután nagyon nem akart semmi úgy működni ahogy kellene, írtam nekik és korrigálták a hibát.
Most viszont a routolásnál vagyok elakadva. A RouterVM-ben nem tudom elérni hogy a forgalom vissza találjon a LAN oldalról a wg0-felé.

+--------+            +----------+           +--------+
| VPS    | WAN  WAN   | RouterVM |           |  Home  |
|        |  |    |    |          |           | Router |
|eth0    | =+    +==> | eth0     |           |        |
| ||     |            |  ||      |           |        |
| \/     |  Tunnel    |  \/      |           | (LAN)  |
| wg0    | ~~~~~~~~~> | wg0      |           | eth1   |
|        |            |  ||      |           |        |
|        |            |  \/      |           | (WAN)  |
|        |            | eth1     | ========> | eth0   |
+--------+            +----------+           +--------+

eth0: (pref:0::)      eth0: (pref:IPv4WAN)   eth1: (pref:3::1)
wg0:  (pref:1::1)     wg0:  (pref:1::2)      eth0: (pref:2::2)
                      eth1: (pref:2::1)

Ha pingelem a lan oldalról a VM eth1 portját már elakad a dolog. tcpdump a RouterVM-en:

10:18:52.426182 ens34 In  IP6 pref:3::2 > pref:2::1: ICMP6, echo request, id 31095, seq 0, length 64
10:18:52.426286 ens34 Out IP6 pref:2::1 > ff02::1:ff00:2: ICMP6, neighbor solicitation, who has pref:3::2, length 32
10:18:53.433468 ens34 Out IP6 pref:2::1 > ff02::1:ff00:2: ICMP6, neighbor solicitation, who has pref:3::2, length 32
10:18:54.457243 ens34 Out IP6 pref:2::1 > ff02::1:ff00:2: ICMP6, neighbor solicitation, who has pref:3::2, length 32
10:18:55.481407 lo    In  IP6 pref:2::1 > pref:2::1: ICMP6, destination unreachable, unreachable address pref:3::2, length 112
10:19:10.862385 ens34 In  IP6 fe80::290:7fff:fed8:4386 > pref:2::1: ICMP6, neighbor solicitation, who has pref:2::1, length 32

Ha ugyanezt a router-ről teszem, működik:

10:53:16.012131 ens34 In  IP6 pref:2::2 > pref:2::1: ICMP6, echo request, id 1454, seq 2, length 64
10:53:16.012173 ens34 Out IP6 pref:2::1 > pref:2::2: ICMP6, echo reply, id 1454, seq 2, length 64
10:53:17.011615 ens34 In  IP6 pref:2::2 > pref:2::1: ICMP6, echo request, id 1454, seq 3, length 64
10:53:17.011372 ens34 Out IP6 pref:2::1 > pref:2::2: ICMP6, echo reply, id 1454, seq 1, length 64

Ha a VPS-ről, szintén működik:

11:06:04.884273 wg0   In  IP6 pref:1::1 > pref:2::1: ICMP6, echo request, id 37987, seq 14, length 64
11:06:04.884318 wg0   Out IP6 pref:2::1 > pref:1::1: ICMP6, echo reply, id 37987, seq 14, length 64
11:06:05.885349 wg0   In  IP6 pref:1::1 > pref:2::1: ICMP6, echo request, id 37987, seq 15, length 64
11:06:05.885390 wg0   Out IP6 pref:2::1 > pref:1::1: ICMP6, echo reply, id 37987, seq 15, length 64

Ha egy másik random VPS-ről a vilgáhálón, szintén működik:

11:06:49.950000 wg0   In  IP6 2xxx:xxxx:xxxx:xxxx::1 > pref:2::1: ICMP6, echo request, id 2463, seq 3, length 64
11:06:49.950036 wg0   Out IP6 pref:2::1 > 2xxx:xxxx:xxxx:xxxx::1: ICMP6, echo reply, id 2463, seq 3, length 64
11:06:50.950374 wg0   In  IP6 2xxx:xxxx:xxxx:xxxx::1 > pref:2::1: ICMP6, echo request, id 2463, seq 4, length 64
11:06:50.950416 wg0   Out IP6 pref:2::1 > 2xxx:xxxx:xxxx:xxxx::1: ICMP6, echo reply, id 2463, seq 4, length 64

Szóval leginkább még mindig az a bajom hogy a RouterVM-en milyen route-okat kellene beállítanom.
A jelenlegi routing tábla, ahol ens34 = eth1, ens192 = eth0:

 

Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
[::]/0                         [::]                       U    1024 1     0 wg0
localhost/128                  [::]                       U    256 2     0 lo
pref:1::/64                    [::]                       U    256 1     0 wg0
pref:2::/64                    [::]                       U    256 6     0 ens34
pref:3::/64                    [::]                       U    1024 3     0 ens34
pref:4::/64                    [::]                       U    1024 1     0 ens34
fe80::/64                      [::]                       U    256 2     0 ens192
fe80::/64                      [::]                       U    256 1     0 ens34
[::]/0                         fe80::20c:29ff:fe13:53cd   UGDAe 1024 3     0 ens34
localhost/128                  [::]                       Un   0   5     0 lo
pref:1::/128                   [::]                       Un   0   3     0 wg0
pref:1::2/128                  [::]                       Un   0   3     0 wg0
pref:2::/128                   [::]                       Un   0   3     0 ens34
pref:2::1/128                  [::]                       Un   0   6     0 ens34
fe80::/128                     [::]                       Un   0   3     0 ens192
fe80::/128                     [::]                       Un   0   3     0 ens34
fe80::20c:29ff:fe64:82d8/128   [::]                       Un   0   5     0 ens192
fe80::20c:29ff:fe64:82e2/128   [::]                       Un   0   4     0 ens34
ff00::/8                       [::]                       U    256 2     0 ens192
ff00::/8                       [::]                       U    256 2     0 ens34
ff00::/8                       [::]                       U    256 1     0 wg0
[::]/0                         [::]                       !n   -1  1     0 lo

Lassan 2023 lesz szoval ip -6 route show kimenetet osszal meg kerlek (mind3 geprol) a netstat-ot pedig dobd ki:), egyebkent az a gond hogy a RouterVM VM-en felvetted a pref:3::/64 es pref:4::/64 hogy az a ens34-en van, de ez nem igaz.

RouterVM,
ip -6 r a pref:3::/64 via pref:2::2

Home Router,
ip -6 r a ::/0 via pref:2::1

A pref:0,1,2,3 egyebkent mind /64?

ip -6 r a pref:3::/64 via pref:2::2

Igen, igen. Ez lesz az. Aztán én is rájöttem hogy nem volt jó a route-om gateway nélkül. Szuper észrevétel, köszönöm. Nos, most úgy néz ki működik minden, úgy ahogyan szeretném, DE! (Erről majd a végén)

A pref:0,1,2,3 egyebkent mind /64?

Igen, minden subnet /64. Bár már sok jelentősége nincs, de a routerVM útvonalai:

::1 dev lo proto kernel metric 256 pref medium
pref:2::/64 dev ens34 proto kernel metric 256 pref medium
pref:3::/64 via pref:2::2 dev ens34 metric 1024 pref medium
pref:4::/64 via pref:2::2 dev ens34 metric 1024 pref medium
fe80::/64 dev ens192 proto kernel metric 256 pref medium
fe80::/64 dev ens34 proto kernel metric 256 pref medium
default via fe80::20c:29ff:fe13:53cd dev ens34 proto ra metric 1024 expires 1639sec hoplimit 64 pref medium

A "DE" rész:
Úgy néz ki hogy a fizikai routerem ami egy Watchguard M200-as 8 portos tűzfal, első 3 portját kivéve mindegyik-el van valami gond. Ugye a routerVM eth1 portja bridgelve van a host egy fizikai ethernet
portjával. Ezt csatlakoztatom a Watchguard-on egy szabad porthoz amit kijelölök "IPv6 only external" -ként. Már korábban is gyanítottam hogy nem 100-as az eszköz de most már szinte biztos vagyok benne. A RouterVM és a Watchguard között olyan packet loss-ok vannak amiket nem tudok hw hibán kívül mire vélni. A ping van hogy másodpercekig szépen fut utána másodpercekig szünet, teljesen változó intenzitással. Ezt leteszteltem úgy, hogy egy laptoppal rácsatlakoztam sorban a watchguard egyes portjaira amiket előtte optional-nek konfiguráltam és csak egy sima IPv4-et kaptak és nem vettek részt a routing-ban. A laptopról pingelve az egyes IP-ket is ugyanaz volt a helyzet, eth3-eth7 -ig. Érdekes módon az eth0-eth2 teljesen rendben van. Azok viszont már foglaltak más célra. Szóval beállítottam mindent, jól is működik, de kelleni fog egy új eszköz ha IPv6-ozni akarok.

Más:
Észrevettem ha LAN-on lévő gépről érem el a világhálót, akkor publikus IPv6 címem megegyezik a VPS eth0 IPV6 címével. Ez feltételezem a tunneling miatt van. Egyébként az összes IPV6 címem pingelhető kívülről. Megoldható valahogy hogy minden LAN-on lévő eszköz a saját címével legyen látható a WAN oldalon?

Nekem fenti scenario van azaz VPS -en /56 otthon meg csak ipv4, és VPS ről tunneleztem v6 -ot. Viszont ehhez 6to4 tunnel-t használok. 

Fedora 40, Thinkpad x280

Szintén zenész csak nekem egy /60 van a gépem mögé routeolva és abból osztok ki több "telephelynek" egy-egy /64-et. A tunnelre OpenVPN/TAP-ot használok, mert akkor nem volt más lehetőség és még a Mikrotik szappantartók is támogatták. Ha most csinálnám vetnék egy pillantást a WG-re hogy azzal megoldható-e. Routing protokollként BGP-t használok - de ilyen kicsi setup menne statikusan is.

Annyival fejeltem meg hogy több kliens is van és volt egy időszak amikor pár kliens közvetlenül csatlakozott egymáshoz, ez BGP felett teljesen triviális volt beállítani és ott GRE-t használtam, de mivel az ISP ezért annyira nem lelkesedett és nem is volt gyorsabb így hagytam a francba.

Szerkesztve: 2022. 12. 31., szo – 15:22

subscribe

Szerkesztve: 2023. 01. 01., v – 16:44

Rokonságban volt szerencsém kipróbálni a Telekom IPv6 szolgáltatását.
A telekom által lerakott IPv6-ot adó WiFi eszközre rácsatlakoztam egy Mikrotik routerrel az alábbi IPv6 kiegészítéssel:

Mikrotik:
/ipv6 dhcp-client add interface=wlan1 pool-name=telekom-ipv6 request=prefix
/ipv6 address add from-pool=telekom-ipv6 interface=bridge

Kapott IPv6 prefixet, de valami nem kerek, mert mintha ugyanazt a prefixet kapta volna, mint a másik router.
Hogyan kell úgy csatlakozni, hogy az általuk mondott /56 lakossági prefixből másik /64-et kaphasson ez az eszköz a mögöttes hálózatára?