服务器上的 wireguard 配置缺失了某些内容

服务器上的 wireguard 配置缺失了某些内容

尝试让 wireguard vpn 测试工作,但我卡住了。任何关于下一步检查的建议都将不胜感激。

服务器是一个运行 Ubuntu 3.13.0-141 内核的 D​​O droplet,客户端是运行 Mint 4.4.0-112 内核的桌面 kvm 客户机,并在 nat 路由器后面桥接网络连接。客户端可以正常 ping 服务器,但其他数据包类型似乎都丢失了,尽管 tcpdump 显示大量数据包到达服务器上的 wg0。服务器上已按照建议启用 ip_forward 和 proxy_arp在这篇文章中. 服务器上的 ufw 已打开隧道端口。该服务器还在其他端口上运行 openvpn。

将 wg-quick 与这些配置文件结合使用。

客户:

[Interface]
Address = 10.0.0.200
DNS = 8.8.8.8
PrivateKey = UJeiJJvi5NdqiBrgBfsim+ZS4c69M5EP5fUNNIXMy08=
[Peer]
PublicKey = MreTtFUDB5bQfkegxX2cvz3BLC9sybK4y0loTKhVunU=
AllowedIPs = 0.0.0.0/0
Endpoint = 159.203.227.235:51820

sudo wg-quick up ./wg0.conf 
[sudo] password for jim: 
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip address add 10.0.0.200 dev wg0
[#] ip link set mtu 1420 dev wg0
[#] ip link set wg0 up
[#] resolvconf -a tun.wg0 -m 0 -x
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0

服务器:

[Interface]
Address = 10.0.0.201
SaveConfig = true
ListenPort = 51820
PrivateKey = 6GBAE7bFjrOfEp1uWiPvoW+5CyfpjsBmK0/vCIWbGl0=
[Peer]
PublicKey = furwAmh4vbKrLAGZG/QDIUT2a1GLi0WxDY6YdQKzIHE=
AllowedIPs = 10.0.0.200/32

sudo wg-quick up ./wg0.conf
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip link set mtu 1420 dev wg0
[#] ip link set wg0 up
[#] ip route add 10.0.0.200/32 dev wg0

ip route show table all

default via 159.203.224.1 dev eth0 
10.0.0.200 dev wg0  scope link 
10.12.0.0/16 dev eth0  proto kernel  scope link  src 10.12.0.5 
159.203.224.0/20 dev eth0  proto kernel  scope link  src 159.203.227.235 
172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1 
broadcast 10.12.0.0 dev eth0  table local  proto kernel  scope link  src 10.12.0.5 
local 10.12.0.5 dev eth0  table local  proto kernel  scope host  src 10.12.0.5 
broadcast 10.12.255.255 dev eth0  table local  proto kernel  scope link  src 10.12.0.5 
broadcast 127.0.0.0 dev lo  table local  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  table local  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  table local  proto kernel  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  table local  proto kernel  scope link  src 127.0.0.1 
broadcast 159.203.224.0 dev eth0  table local  proto kernel  scope link  src 159.203.227.235 
local 159.203.227.235 dev eth0  table local  proto kernel  scope host  src 159.203.227.235 
broadcast 159.203.239.255 dev eth0  table local  proto kernel  scope link  src 159.203.227.235 
broadcast 172.17.0.0 dev docker0  table local  proto kernel  scope link  src 172.17.0.1 
local 172.17.0.1 dev docker0  table local  proto kernel  scope host  src 172.17.0.1 
broadcast 172.17.255.255 dev docker0  table local  proto kernel  scope link  src 172.17.0.1 
fe80::/64 dev eth0  proto kernel  metric 256 
fe80::/64 dev veth215195c  proto kernel  metric 256 
fe80::/64 dev docker0  proto kernel  metric 256 
unreachable default dev lo  table unspec  proto kernel  metric 4294967295  error -101
local ::1 dev lo  table local  proto none  metric 0 
local fe80::42:2fff:fec9:400 dev lo  table local  proto none  metric 0 
local fe80::601:d8ff:febf:4701 dev lo  table local  proto none  metric 0 
local fe80::84ce:13ff:feaf:f628 dev lo  table local  proto none  metric 0 
ff00::/8 dev eth0  table local  metric 256 
ff00::/8 dev veth215195c  table local  metric 256 
ff00::/8 dev docker0  table local  metric 256 
unreachable default dev lo  table unspec  proto kernel  metric 4294967295  error -101

答案1

我在这个非常有用的帮助下完成了这项工作博客文章 其中还介绍了如何设置 DNS 服务器以防止客户端 DNS 流量泄漏到隧道外。

主要问题是服务器上的过滤器/nat 设置不完整。这篇文章介绍了必要的 iptables 命令。由于 ufw 已经用于 ssh 等简单操作,而且我不想尝试将所有内容转换为一种格式,所以我只是将它们合并在一起。这适用于运行 Ubuntu 16.04 的新 droplet。还在我的原始 Ubuntu 14.04 系统上进行了测试,我必须在其中添加一条额外的 ufw 规则:

ufw 路由允许从 10.200.200.2 进入 wg0,然后从 eth0 出去

显然是因为某种原因,输入和转发的默认策略被设置为 DROP。

相关内容