我尝试使用以下配置在我的WireGuard 20.04LTS服务器上安装<#>Ubuntu:
[Interface]
Address = 10.66.66.1/24,fd42:42:42::1/64
ListenPort = 64129
PrivateKey = xxxxx
PostUp = iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;
PostDown = iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE;
[Peer]
PublicKey = xxxxx
AllowedIPs = 10.66.66.2/32,fd42:42:42::2/128
然后,在我的Windows中,尝试将WireGuard应用程序作为客户端使用此配置:
[Interface]
PrivateKey = xxxxx
Address = 10.66.66.2/32, fd42:42:42::2/128
[Peer]
PublicKey = xxxxx
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = xx.xx.xx.xx:64129
PersistentKeepalive = 25
另外,在我的客户端,我检查了10.66.66.1
和8.8.8.8
以及4.2.2.4
的ping,并得到了正确的响应。
当我将wg
写到服务器终端时,就会发生这种情况:
interface: wg0
public key: xxxxxx
private key: (hidden)
listening port: 64129
peer: xxxxxx
endpoint: xx.xx.xx.xx:56698
allowed ips: 10.66.66.2/32, fd42:42:42::2/128
latest handshake: 9 minutes, 23 seconds ago
transfer: 33.54 KiB received, 13.87 KiB sent
我把ip_forward
改成了一个:
ssh@ubuntu:~# cat /proc/sys/net/ipv4/ip_forward
1
这是我的ufw status
:
ssh@ubuntu:~# ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
64129/udp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
64129/udp (v6) ALLOW Anywhere (v6)
Anywhere on eth0 ALLOW FWD Anywhere on wg0
Anywhere on wg0 ALLOW FWD Anywhere on eth0
Anywhere (v6) on eth0 ALLOW FWD Anywhere (v6) on wg0
Anywhere (v6) on wg0 ALLOW FWD Anywhere (v6) on eth0
但是,我仍然不能在浏览器中打开任何URL。
这是ip a
结果:
1: lo: 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: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:50:56:0c:b8:2c brd ff:ff:ff:ff:ff:ff
inet xx.xx.xx.xx/32 brd xx.xx.xx.xx scope global eth0
valid_lft forever preferred_lft forever
inet6 xxx::xx:xx:xx:xxx/64 scope link
valid_lft forever preferred_lft forever
12: wg0: mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.66.66.1/24 scope global wg0
valid_lft forever preferred_lft forever
inet6 fd42:42:42::1/64 scope global
valid_lft forever preferred_lft forever
发布于 2022-03-27 11:18:59
请将客户端(Windows)配置中的Address
行更改如下:
Address = 10.66.66.2/24, fd42:42:42::2/64
此外,要使用IPv6转发,应该将net.ipv6.conf.all.forwarding
设置为1
。若要使所有转发设置持久,请使用以下命令:
$ sudo -i
# echo -e 'net.ipv4.ip_forward=1\nnet.ipv6.conf.all.forwarding=1' >>/etc/sysctl.d/10-wireguard.conf
由于iptables
和ip6tables
命令可能很长,所以我为PostUp
和PostDown
使用了以下脚本(在我的示例中名为/etc/wireguard/helper/add-rem_nat_routing.sh
):
Important:请在下面输入正确的IPv6子网地址,或删除与IPv6 6相关的内容:
#!/bin/bash
OPT="$1"
case "$OPT" in
"-I" )
OPT2="1"
;;
"-D" )
OPT2=""
;;
* )
echo "Unknown option: $OPT" >&2
exit 2
;;
esac
IPT="/usr/sbin/iptables"
IPT6="/usr/sbin/ip6tables"
IN_FACE="eth0" ## NIC connected to the internet
WG_FACE="$2" ## WG NIC
SUB_NET="10.66.66.0/24" ## WG IPv4 sub/net aka CIDR
WG_PORT="64129" ## WG udp port
SUB_NET_6="fd42:42:42::/112" ## WG IPv6 sub/net CORRECT THIS!!!
### IPv4 ###
$IPT -t nat $OPT POSTROUTING $OPT2 -s $SUB_NET -o $IN_FACE -j MASQUERADE
$IPT $OPT INPUT $OPT2 -i $WG_FACE -j ACCEPT
$IPT $OPT FORWARD $OPT2 -i $IN_FACE -o $WG_FACE -j ACCEPT
$IPT $OPT FORWARD $OPT2 -i $WG_FACE -o $IN_FACE -j ACCEPT
$IPT $OPT INPUT $OPT2 -i $IN_FACE -p udp --dport $WG_PORT -j ACCEPT
### IPv6 (comment these if you DO NOT have IPv6) ###
$IPT6 -t nat $OPT POSTROUTING $OPT2 -s $SUB_NET_6 -o $IN_FACE -j MASQUERADE
$IPT6 $OPT INPUT $OPT2 -i $WG_FACE -j ACCEPT
$IPT6 $OPT FORWARD $OPT2 -i $IN_FACE -o $WG_FACE -j ACCEPT
$IPT6 $OPT FORWARD $OPT2 -i $WG_FACE -o $IN_FACE -j ACCEPT
$IPT6 $OPT INPUT $OPT2 -i $IN_FACE -p udp --dport $WG_PORT -j ACCEPT
并在服务器配置中这样调用它:
PostUp = /etc/wireguard/helper/add-rem_nat_routing.sh -I "%i"
PostDown = /etc/wireguard/helper/add-rem_nat_routing.sh -D "%i"
注意:您应该在更改服务器配置后运行systemctl restart wg-quick@wg0
。
请在服务器上测试以下内容:
$ traceroute 1.1.1.1
并且在客户机上(在WireGuard连接之后)执行以下操作:
C:\> tracert 1.1.1.1
https://askubuntu.com/questions/1399483
复制相似问题