Jas*_*ite 4 server vpn networking 20.04 wireguard
我的wireguard 设置有问题。设置完成后,我可以连接到我的设备。握手没问题,但我无法访问互联网和局域网。
设备:树莓派 4b 8gb RAM 操作系统:Ubuntu 服务器 ARM x64 20.04 LTS
我的 wg0.conf 文件内容
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = (hidden)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = oqL4CC4Y572iOvVtpDbASiajjgJPAjJhDODffMezcxA=
PresharedKey = (hidden)
AllowedIPs = 10.0.0.2/32
[Peer]
PublicKey = a6z779DYdezo/TMLbC7AJuenHpseaIqUr/gRx97D4Rw=
PresharedKey = (hidden)
AllowedIPs = 10.0.0.3/32
[Peer]
PublicKey = Fe4Nv3Ef8T5bc1p7sDCfNkLO/pTv5cIgHMJ0XCMa8Gg=
PresharedKey = (hidden)
AllowedIPs = 10.0.0.4/32
[Peer]
PublicKey = IdKkIYDctdHYwMx+ULlgntVllaBkIP8G8eIRxEQ9QWQ=
PresharedKey = (hidden)
AllowedIPs = 10.0.0.5/32
[Peer]
PublicKey = qdpWjwlnUuwVxqKnCfta+W/B4XyxZT868aOPtmSOek8=
PresharedKey = (hidden)
AllowedIPs = 10.0.0.6/32
Run Code Online (Sandbox Code Playgroud)
第一个客户端配置文件:
[Interface]
Address = 10.0.0.2/24
ListenPort = 51820
PrivateKey = OPgCJeBSPevFR+oleTbDqVCNyn+7G0mhSA0QRHqnklg=
[Peer]
PublicKey = W6B77KxgOpshDLX7gc0Jz10Z/WfUl4zVCLrIL/luoR4=
PresharedKey = tI3YFvK195G257yQBAYx+bS9S1j2qkZZOgsdoN3/yPI=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = {my_external_ip_address}:51820
Run Code Online (Sandbox Code Playgroud)
我的路由器设置说明。我有一个 UPC Connect Box 设备,其 IP:192.168.0.1。UPC Connect Box 是我的网关。我已将其他路由器连接到此 UPC 连接盒。IP地址:192.168.1.1。我可以从我的所有路由器访问其他子网。我还可以访问我的局域网内任何子网中的所有计算机。我还可以从安装了wireguard的设备访问我的网络和子网上的所有内容,但当我作为客户端连接时它不起作用。
端口转发在我的 upc 连接盒上正确设置,端口 51820 到我的其他路由器 192.168.1.1,并从该设备到我的树莓派 ubuntu 设备,内部 IP:192.168.1.12。
我做了什么 ?允许使用以下命令进行 ipv4 端口转发:
sudo sysctl -w net.ipv4.ip_forward=1
Run Code Online (Sandbox Code Playgroud)
还做了:
sudo ufw allow 51820/tcp
sudo ufw allow 51820/udp
sudo ufw allow in on wg0 to any
sudo ufw allow out on wg0 to any
Run Code Online (Sandbox Code Playgroud)
UFW状态:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
51820 ALLOW Anywhere
51820/tcp ALLOW Anywhere
51820/udp ALLOW Anywhere
OpenSSH ALLOW Anywhere
51821/udp ALLOW Anywhere
51821/tcp ALLOW Anywhere
446/tcp ALLOW Anywhere
993/tcp ALLOW Anywhere
8080/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
5900/tcp ALLOW Anywhere
Anywhere on wg0 ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
51820 (v6) ALLOW Anywhere (v6)
51820/tcp (v6) ALLOW Anywhere (v6)
51820/udp (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
51821/udp (v6) ALLOW Anywhere (v6)
51821/tcp (v6) ALLOW Anywhere (v6)
446/tcp (v6) ALLOW Anywhere (v6)
993/tcp (v6) ALLOW Anywhere (v6)
8080/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
5900/tcp (v6) ALLOW Anywhere (v6)
Anywhere (v6) on wg0 ALLOW Anywhere (v6)
22/tcp ALLOW OUT Anywhere
Anywhere ALLOW OUT Anywhere on wg0
22/tcp (v6) ALLOW OUT Anywhere (v6)
Anywhere (v6) ALLOW OUT Anywhere (v6) on wg0
Run Code Online (Sandbox Code Playgroud)
我可以从 iOS、Android 或 macOS 设备进行连接,但无法访问互联网和 LAN。连接成功后我无法 ping 通任何内容。甚至无法 ping 通子网和当前网络上的设备。无法 ping 任何外部内容,例如:8.8.8.8 或 1.1.1.1 一切看起来都很好 - 握手没问题。请指导我哪里错了。
我需要通过wireguard VPN 访问LAN 和互联网。
解决了!看来这不正确。将“%i”替换为“wg0”解决了问题。
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
应该:
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
LAN 访问工作正常。互联网接入正常!
感谢视频中的这个人: https://www.youtube.com/watch ?v=bVKNSf1p1d0