Wireguard, NixOS a IPv6

Wireguard, NixOS a IPv6
« kdy: 22. 06. 2023, 11:51:45 »
Zdravím. Jelikož ne vždy jsem tam, kde mám přístup k IPv6 internetu (ať žije KarTel), tak jsem si řekl že si nastavím na serveru Wireguard, abych se mohl připojit domů, kde mám veřejnou jen IPv6. Následoval jsem návod zde, https://nixos.wiki/wiki/WireGuard. Připojím se, ale přístup k IPv6 síti ven nemám, jen v rámci počítače, stejně je to i na OpenWrt routeru u kamaráda, tam také IPv6 jen po LANce.
Celkově tomuto tématu moc nerozumím, tak úplně nevím co dělat. V příloze posílám konfigurační soubor ze serveru. Díky.




Re:Wireguard, NixOS a IPv6
« Odpověď #1 kdy: 22. 06. 2023, 12:07:51 »
Málo informací. Potřebujeme vidět stav sítě na obou stranách. Bude tedy potřeba spustit tam příkazy:

Kód: [Vybrat]
# wg
# ip a
# ip rou

Těch šest výstupů sem pak pošli.

Re:Wireguard, NixOS a IPv6
« Odpověď #2 kdy: 22. 06. 2023, 14:41:46 »
wg
Kód: [Vybrat]
interface: wg0
  public key: ---
  private key: (hidden)
  listening port: 51820

peer: ---
  preshared key: (hidden)
  endpoint: xxx.xxx.xxx.xxx:17846
  allowed ips: fd00:9::/64, 10.100.9.0/24
  latest handshake: 33 seconds ago
  transfer: 19.90 KiB received, 181.09 KiB sent

ip a
Kód: [Vybrat]
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default qlen 1000
    link/gre 0.0.0.0 brd 0.0.0.0
3: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
4: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1450 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
5: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
6: venet0@if123: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether ae:c6:c5:b2:df:ec brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 185.8.165.172/32 scope global venet0
       valid_lft forever preferred_lft forever
    inet6 2a03:3b40:fe:12b::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::acc6:c5ff:feb2:dfec/64 scope link
       valid_lft forever preferred_lft forever
7: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 10.100.9.0/24 scope global wg0
       valid_lft forever preferred_lft forever
    inet6 fd00:9::/64 scope global
       valid_lft forever preferred_lft forever

ip rou
Kód: [Vybrat]
default via 255.255.255.254 dev venet0
10.100.9.0/24 dev wg0 scope link
10.100.9.0/24 dev wg0 proto dhcp scope link src 10.100.9.0 metric 1007
255.255.255.254 dev venet0 scope link

Vypadá to že mi možná chybí route? ale jak jsem říkal, sítím moc nerozumím.

ETNyx

Re:Wireguard, NixOS a IPv6
« Odpověď #3 kdy: 22. 06. 2023, 15:23:16 »
Vypadá to že mi možná chybí route? ale jak jsem říkal, sítím moc nerozumím.

Ne ten příkaz je chybně, pokud chcete IPv6 routy musíte si o ně říci s -6

https://tldp.org/HOWTO/Linux+IPv6-HOWTO/ch07s01.html

Edit: jinak já bych si tipnul, že chyba bude na straně serveru, pokud se nepletu tak se musí povolit v forward v /etc/sysctl.conf a pak ve wg.conf udělat pár pravidel pro firewall aby se paktery korektně předávaly z interface wg na eth
« Poslední změna: 22. 06. 2023, 15:30:36 od ETNyx »

Re:Wireguard, NixOS a IPv6
« Odpověď #4 kdy: 22. 06. 2023, 15:54:02 »
Vypadá to že mi možná chybí route? ale jak jsem říkal, sítím moc nerozumím.

Ne ten příkaz je chybně, pokud chcete IPv6 routy musíte si o ně říci s -6

https://tldp.org/HOWTO/Linux+IPv6-HOWTO/ch07s01.html

Edit: jinak já bych si tipnul, že chyba bude na straně serveru, pokud se nepletu tak se musí povolit v forward v /etc/sysctl.conf a pak ve wg.conf udělat pár pravidel pro firewall aby se paktery korektně předávaly z interface wg na eth

Kód: [Vybrat]
2a03:3b40:fe:12b::/64 dev venet0 proto kernel metric 256 pref medium
fd00:9::/64 dev wg0 proto kernel metric 256 pref medium
fd00:9::/64 dev wg0 metric 1024 pref medium
fe80::fcba:a7ff:fee8:b3e9 dev venet0 metric 1024 pref medium
fe80::/64 dev venet0 proto kernel metric 256 pref medium
default via fe80::fcba:a7ff:fee8:b3e9 dev venet0 metric 1024 pref medium


Re:Wireguard, NixOS a IPv6
« Odpověď #5 kdy: 22. 06. 2023, 17:19:35 »
Zdravím. Jelikož ne vždy jsem tam, kde mám přístup k IPv6 internetu (ať žije KarTel), tak jsem si řekl že si nastavím na serveru Wireguard, abych se mohl připojit domů, kde mám veřejnou jen IPv6. Následoval jsem návod zde, https://nixos.wiki/wiki/WireGuard. Připojím se, ale přístup k IPv6 síti ven nemám, jen v rámci počítače, stejně je to i na OpenWrt routeru u kamaráda, tam také IPv6 jen po LANce.
Celkově tomuto tématu moc nerozumím, tak úplně nevím co dělat. V příloze posílám konfigurační soubor ze serveru. Díky.
Pokud tomu moc nerozumíš, doporučuju radši nainstalovat Cloudflare WARP, který dělá přesně to, o co se snažíš. Ale samozřejmě, pokud na řešení přijdeš sám, určitě se víc naučíš.

Re:Wireguard, NixOS a IPv6
« Odpověď #6 kdy: 22. 06. 2023, 23:00:57 »
Stačilo nastavit sysctl net.ipv6.conf.all.forwarding=1 :D

(což by mělo dle konfigurace být, ale nějak se to neaplikuje)
« Poslední změna: 22. 06. 2023, 23:04:11 od ondra05 »

Re:Wireguard, NixOS a IPv6
« Odpověď #7 kdy: 22. 06. 2023, 23:11:47 »
Aktualizace: NixOS VPSAdmin šablona má maskovaný systemd-sysctl, budu si to muset nějak obejít.

dzavy

Re:Wireguard, NixOS a IPv6
« Odpověď #8 kdy: 23. 06. 2023, 10:30:04 »
Tak hlavně tam asi musí být nějaký NAT6, který přeloží fd00:9::/64 na veřejnou. Není lepší rovnou pro wg vyhradit jednu veřejnou /64, teda za předpokladu, že ISP dává víc než /64?

Re:Wireguard, NixOS a IPv6
« Odpověď #9 kdy: 23. 06. 2023, 10:49:06 »
Záleží na tom, co je cílem. Pokud se jen dostat do vnitřní sítě, pak budou stačit ty ULA adresy. Pokud je potřeba projít skrz tu síť ven, pak je potřeba přiřadit klientovi veřejnou adresu. Vůbec to nemusí být celý rozsah (třeba /64), ale přes tunel stačí poslat jednu adresu, kterou si koncový klient přidělí na rozhraní WG a projde s ní do sítě i pak ven.