Wireguard IPv6 연결이 작동하지 않습니다.

Wireguard IPv6 연결이 작동하지 않습니다.

Ubuntu와 몇몇 클라이언트에서 실행되는 가상 머신에 Wireguard 서버를 설정했습니다. 또한 동일한 가상 머신에 Pi-Hole을 설치하고 공용 IP 주소를 사용하여 클라이언트에서 DNS 확인을 구성했습니다. IPv4는 제대로 작동하지만 IPv6은 그렇지 않습니다. 이것은 내 서버 구성입니다.

# Server Configuration
[Interface]
Address = 172.16.0.1/27, fc00:xxx:xxx::1/64
PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ListenPort = 51820
PreUp = iptables -t nat -A POSTROUTING -s 172.16.0.0/27  -o eth0  -j MASQUERADE; ip6tables -t nat -A POSTROUTING -s fc00:xxx:xxx::/64 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 172.16.0.0/27  -o eth0 -j MASQUERADE; ip6tables -t nat -D POSTROUTING -s fc00:xxx:xxx::/64 -o eth0 -j MASQUERADE

# Laptop 1
[Peer]
PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
AllowedIPs = 172.16.0.2/32, fc00:xxx:xxx::2/128

# Phone
[Peer]
PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
AllowedIPs = 172.16.0.3/32, fc00:xxx:xxx::3/128

# Laptop 2
[Peer]
PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
AllowedIPs = 172.16.0.4/32, fc00:xxx:xxx::4/128

내 고객의 구성은 다음과 같습니다.

[Interface]
PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Address = 172.16.0.4/27, fc00:xxx:xxx::4/64
DNS = <VM_Public_IP>, 2001:4860:4860::8888

[Peer]
PublicKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Endpoint = <VM_Public_IP>:51820
AllowedIPs = 0.0.0.0/0, ::/0

따라서 Wireguard 서버의 IPv6 주소에 대해 ping을 수행할 수 있지만 2001:4860:4860::8888클라이언트에서 IPv6 DNS 서버로 구성된 Google의 IPv6 DNS에 대해서는 ping을 수행할 수 없습니다( ). IPv6 구성 문제인 것 같습니다. 다음 명령을 사용하여 서버 측에서 ipv6 전달을 활성화했습니다.

$ sudo sysctl -p /etc/sysctl.d/wireguard.conf  
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

[편집]: 분명히 VM에는 별도의 IPv4 인터페이스와 IPv6 연결을 위한 또 다른 인터페이스가 있으므로 이렇게 했습니다. ping6 ipv6.google.com -I eth0/1/2그리고 eth2에는 IPv6 연결만 있음을 발견했습니다. 그래서 서버에서 IPv6 규칙을 변경 하고 iptables서버와 클라이언트 모두에서 -s fc00:xxx:xxx::/64 -o eth2Wireguard를 다시 시작한 후 IPv6 연결이 작동했습니다.sudo systemctl stop wg-quick@wg0 && sudo systemctl start wg-quick@wg0

이것이 미래에 누군가에게 도움이 되기를 바랍니다.

관련 정보