首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >连接到WireGuard,但无法访问互联网

连接到WireGuard,但无法访问互联网
EN

Ask Ubuntu用户
提问于 2022-03-27 09:08:16
回答 1查看 1.5K关注 0票数 0

我尝试使用以下配置在我的WireGuard 20.04LTS服务器上安装<#>Ubuntu:

代码语言:javascript
运行
复制
[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应用程序作为客户端使用此配置:

代码语言:javascript
运行
复制
[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.18.8.8.8以及4.2.2.4的ping,并得到了正确的响应。

当我将wg写到服务器终端时,就会发生这种情况:

代码语言:javascript
运行
复制
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改成了一个:

代码语言:javascript
运行
复制
ssh@ubuntu:~# cat /proc/sys/net/ipv4/ip_forward
1

这是我的ufw status

代码语言:javascript
运行
复制
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结果:

代码语言:javascript
运行
复制
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
EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2022-03-27 11:18:59

请将客户端(Windows)配置中的Address行更改如下:

代码语言:javascript
运行
复制
Address = 10.66.66.2/24, fd42:42:42::2/64

此外,要使用IPv6转发,应该将net.ipv6.conf.all.forwarding设置为1。若要使所有转发设置持久,请使用以下命令:

代码语言:javascript
运行
复制
$ sudo -i
# echo -e 'net.ipv4.ip_forward=1\nnet.ipv6.conf.all.forwarding=1' >>/etc/sysctl.d/10-wireguard.conf

由于iptablesip6tables命令可能很长,所以我为PostUpPostDown使用了以下脚本(在我的示例中名为/etc/wireguard/helper/add-rem_nat_routing.sh ):

Important:请在下面输入正确的IPv6子网地址,或删除与IPv6 6相关的内容:

代码语言:javascript
运行
复制
#!/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

并在服务器配置中这样调用它:

代码语言:javascript
运行
复制
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

请在服务器上测试以下内容:

代码语言:javascript
运行
复制
$ traceroute 1.1.1.1

并且在客户机上(在WireGuard连接之后)执行以下操作:

代码语言:javascript
运行
复制
C:\> tracert 1.1.1.1
票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1399483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档