AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1886091
Accepted
Tech21101
Tech21101
Asked: 2025-03-14 10:33:58 +0800 CST2025-03-14 10:33:58 +0800 CST 2025-03-14 10:33:58 +0800 CST

无论有没有 DNS 条目,Wireguard 对等体都无法访问互联网

  • 772

首先,我并不完全精通网络或服务器管理,所以如果这对你们中的一些人来说似乎很简单,请耐心听我说。

我使用 Debian 在 VPS 上设置了一个 Wireguard 实例。我打算用它来保护互联网隐私,因为我目前可用的选项不够。

我尝试过多次让 Wireguard 正常运行,但都失败了,因为我的客户端设备无法连接到互联网。我可以正常连接到服务器,Wireguard 显示客户端已连接,并且无论何时连接,我都能够从客户端设备顺利通过 SSH 进入服务器。我尝试添加 DNS,特别是 Google 的 DNS(8.8.8.8、8.8.4.4),但这也无济于事。设置 DNS 后,我甚至无法 ping 通它。

以下是我当前的服务器和客户端配置:

客户:

[Interface]
PrivateKey = [redacted]
Address = 10.0.0.2/32

[Peer]
PublicKey = [redacted]
Endpoint = [redacted]:51820
AllowedIPs = 0.0.0.0/0

服务器:

PrivateKey = [redacted]
Address = 10.0.0.1/24
ListenPort = 51820

[Peer]
PublicKey = [redacted]
AllowedIPs = 10.0.0.2/32

任何对此的帮助都将不胜感激,我为此已经绞尽脑汁一段时间了。

服务器路由表:

1: lo: <LOOPBACK,UP,LOWER_UP> 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 [redacted]/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether [redacted] brd ff:ff:ff:ff:ff:ff
    inet [redacted]/25 brd [redacted] scope global dynamic enp1s0
       valid_lft 73624sec preferred_lft 73624sec
    inet6 [redacted]/64 scope link
       valid_lft forever preferred_lft forever
5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 10.0.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

服务器 IP 表输出:

Chain INPUT (policy DROP 989 packets, 54363 bytes)
 pkts bytes target     prot opt in     out     source               destination
 630K  320M ufw-before-logging-input  0    --  *      *       0.0.0.0/0
   0.0.0.0/0
 630K  320M ufw-before-input  0    --  *      *       0.0.0.0/0            0.0.0.0/0
 213K   12M ufw-after-input  0    --  *      *       0.0.0.0/0            0.0.0.0/0
 212K   12M ufw-after-logging-input  0    --  *      *       0.0.0.0/0
  0.0.0.0/0
 212K   12M ufw-reject-input  0    --  *      *       0.0.0.0/0            0.0.0.0/0
 212K   12M ufw-track-input  0    --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     0    --  eth0   *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     0    --  eth1   *       0.0.0.0/0            0.0.0.0/0
         state RELATED,ESTABLISHED
Chain FORWARD (policy DROP 5286 packets, 1038K bytes)
 pkts bytes target     prot opt in     out     source               destination
 7518 1184K ufw-before-logging-forward  0    --  *      *       0.0.0.0/0
     0.0.0.0/0
 7518 1184K ufw-before-forward  0    --  *      *       0.0.0.0/0            0.0.0.0/0
 5286 1038K ufw-after-forward  0    --  *      *       0.0.0.0/0            0.0.0.0/0
 5286 1038K ufw-after-logging-forward  0    --  *      *       0.0.0.0/0
    0.0.0.0/0
 5286 1038K ufw-reject-forward  0    --  *      *       0.0.0.0/0            0.0.0.0/0
 5286 1038K ufw-track-forward  0    --  *      *       0.0.0.0/0            0.0.0.0/0
Chain OUTPUT (policy ACCEPT 225 packets, 20892 bytes)
 pkts bytes target     prot opt in     out     source               destination
 370K   75M ufw-before-logging-output  0    --  *      *       0.0.0.0/0
    0.0.0.0/0
 370K   75M ufw-before-output  0    --  *      *       0.0.0.0/0            0.0.0.0/0
 3564  350K ufw-after-output  0    --  *      *       0.0.0.0/0            0.0.0.0/0
 3564  350K ufw-after-logging-output  0    --  *      *       0.0.0.0/0
   0.0.0.0/0
 3564  350K ufw-reject-output  0    --  *      *       0.0.0.0/0            0.0.0.0/0
 3564  350K ufw-track-output  0    --  *      *       0.0.0.0/0            0.0.0.0/0
  363 36318 ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0
Chain ufw-after-input (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ufw-skip-to-policy-input  17   --  *      *       0.0.0.0/0
   0.0.0.0/0            udp dpt:137
    0     0 ufw-skip-to-policy-input  17   --  *      *       0.0.0.0/0
   0.0.0.0/0            udp dpt:138
    2    84 ufw-skip-to-policy-input  6    --  *      *       0.0.0.0/0
   0.0.0.0/0            tcp dpt:139
    6   308 ufw-skip-to-policy-input  6    --  *      *       0.0.0.0/0
   0.0.0.0/0            tcp dpt:445
    0     0 ufw-skip-to-policy-input  17   --  *      *       0.0.0.0/0
   0.0.0.0/0            udp dpt:67
    0     0 ufw-skip-to-policy-input  17   --  *      *       0.0.0.0/0
   0.0.0.0/0            udp dpt:68
    4  8908 ufw-skip-to-policy-input  0    --  *      *       0.0.0.0/0
   0.0.0.0/0            ADDRTYPE match dst-type BROADCAST
Chain ufw-after-logging-forward (1 references)
 pkts bytes target     prot opt in     out     source               destination
  327 46259 LOG        0    --  *      *       0.0.0.0/0            0.0.0.0/0
         limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW BLOCK] "
Chain ufw-after-logging-input (1 references)
 pkts bytes target     prot opt in     out     source               destination
  219 11136 LOG        0    --  *      *       0.0.0.0/0            0.0.0.0/0
         limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW BLOCK] "
Chain ufw-before-forward (1 references)
 pkts bytes target     prot opt in     out     source               destination
 1927  126K ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0
         ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     1    --  *      *       0.0.0.0/0            0.0.0.0/0
         icmptype 3
    0     0 ACCEPT     1    --  *      *       0.0.0.0/0            0.0.0.0/0
         icmptype 11
    0     0 ACCEPT     1    --  *      *       0.0.0.0/0            0.0.0.0/0
         icmptype 12
  305 19540 ACCEPT     1    --  *      *       0.0.0.0/0            0.0.0.0/0
         icmptype 8
 5286 1038K ufw-user-forward  0    --  *      *       0.0.0.0/0            0.0.0.0/0
Chain ufw-before-input (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     0    --  lo     *       0.0.0.0/0            0.0.0.0/0
 211K  188M ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0
         ctstate RELATED,ESTABLISHED
   56 19597 ufw-logging-deny  0    --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
   56 19597 DROP       0    --  *      *       0.0.0.0/0            0.0.0.0/0
         ctstate INVALID
    0     0 ACCEPT     1    --  *      *       0.0.0.0/0            0.0.0.0/0
         icmptype 3
    0     0 ACCEPT     1    --  *      *       0.0.0.0/0            0.0.0.0/0
         icmptype 11
    0     0 ACCEPT     1    --  *      *       0.0.0.0/0            0.0.0.0/0
         icmptype 12
   11   626 ACCEPT     1    --  *      *       0.0.0.0/0            0.0.0.0/0
         icmptype 8
    0     0 ACCEPT     17   --  *      *       0.0.0.0/0            0.0.0.0/0
         udp spt:67 dpt:68
20848 1252K ufw-not-local  0    --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     17   --  *      *       0.0.0.0/0            224.0.0.251
         udp dpt:5353
    0     0 ACCEPT     17   --  *      *       0.0.0.0/0            239.255.255.250      udp dpt:1900
20848 1252K ufw-user-input  0    --  *      *       0.0.0.0/0            0.0.0.0/0
Chain ufw-before-output (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     0    --  *      lo      0.0.0.0/0            0.0.0.0/0
 193K   42M ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0
         ctstate RELATED,ESTABLISHED
 1960  219K ufw-user-output  0    --  *      *       0.0.0.0/0            0.0.0.0/0
Chain ufw-logging-allow (0 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 LOG        0    --  *      *       0.0.0.0/0            0.0.0.0/0
         limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW ALLOW] "
Chain ufw-logging-deny (2 references)
 pkts bytes target     prot opt in     out     source               destination
   56 19597 RETURN     0    --  *      *       0.0.0.0/0            0.0.0.0/0
         ctstate INVALID limit: avg 3/min burst 10
    0     0 LOG        0    --  *      *       0.0.0.0/0            0.0.0.0/0
         limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW BLOCK] "
Chain ufw-not-local (1 references)
 pkts bytes target     prot opt in     out     source               destination
20844 1243K RETURN     0    --  *      *       0.0.0.0/0            0.0.0.0/0
         ADDRTYPE match dst-type LOCAL
    0     0 RETURN     0    --  *      *       0.0.0.0/0            0.0.0.0/0
         ADDRTYPE match dst-type MULTICAST
    4  8908 RETURN     0    --  *      *       0.0.0.0/0            0.0.0.0/0
         ADDRTYPE match dst-type BROADCAST
    0     0 ufw-logging-deny  0    --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 3/min burst 10
    0     0 DROP       0    --  *      *       0.0.0.0/0            0.0.0.0/0
Chain ufw-skip-to-policy-forward (0 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       0    --  *      *       0.0.0.0/0            0.0.0.0/0
Chain ufw-skip-to-policy-input (7 references)
 pkts bytes target     prot opt in     out     source               destination
   12  9300 DROP       0    --  *      *       0.0.0.0/0            0.0.0.0/0
Chain ufw-skip-to-policy-output (0 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0
Chain ufw-track-output (1 references)
 pkts bytes target     prot opt in     out     source               destination
   10   600 ACCEPT     6    --  *      *       0.0.0.0/0            0.0.0.0/0
         ctstate NEW
 1362  162K ACCEPT     17   --  *      *       0.0.0.0/0            0.0.0.0/0
         ctstate NEW
Chain ufw-user-forward (1 references)
 pkts bytes target     prot opt in     out     source               destination
Chain ufw-user-input (1 references)
 pkts bytes target     prot opt in     out     source               destination
19757 1175K ACCEPT     6    --  *      *       0.0.0.0/0            0.0.0.0/0
         tcp dpt:22
   90 13764 ACCEPT     17   --  *      *       0.0.0.0/0            0.0.0.0/0
         udp dpt:51820
Chain ufw-user-limit (0 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 LOG        0    --  *      *       0.0.0.0/0            0.0.0.0/0
         limit: avg 3/min burst 5 LOG flags 0 level 4 prefix "[UFW LIMIT BLOCK]
"
    0     0 REJECT     0    --  *      *       0.0.0.0/0            0.0.0.0/0
         reject-with icmp-port-unreachable
Chain ufw-user-limit-accept (0 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     0    --  *      *       0.0.0.0/0            0.0.0.0/0

根据用户 Davidgo 的建议,添加iptables -t nat -A POSTROUTING -o [YOUR ETHERNET INTERFACE] -j MASQUERADE(enp1s0我的情况是界面)和添加iptables -I FORWARD -j ACCEPT暂时解决了该问题。服务器重启后,这些更改将被恢复。我将尝试研究如何永久添加这些规则。

networking
  • 2 2 个回答
  • 75 Views

2 个回答

  • Voted
  1. davidgo
    2025-03-14T13:53:57+08:002025-03-14T13:53:57+08:00

    Traceroute(或更好的)MTR 等工具可以帮助诊断问题。问题可能出在多个方面(也可能出在以下多个方面)

    最有可能的 3 个是

    1. 服务器未配置为进行数据包转发。您可以通过运行以下命令检查服务器上的 ip 转发是否正常工作,并检查 VPS 上的 ip 转发是否设置为 1。如果没有,您需要启用 ip_forwarding。

      sysctl net.ipv4.ip_forward
      
    2. 服务器可能未配置为将数据包重写为来自它。这是通过 NAT 完成的。除非我们知道您的 VPS 是如何设置的,否则很难建议如何设置 NAT,但是您可以使用以下命令检查是否设置了 NAT(并且应该将输出添加到您的问题以及服务器和客户端的路由表旁边):

      sudo iptables -vnL -t nat 
      

    如果 NAT 未运行,如何永久设置它取决于你的发行版,但你可以至少暂时添加一个命令(用 eth0 替换你的以太网接口),命令如下

       sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    
    1. 可能是您的客户端没有将数据包路由出 WAN 接口。这种情况不太可能发生,因为您的配置允许这样做。(您有更具体/更高优先级的路由覆盖此情况,这是可能的,但可能性不大)。如果您使用 Traceroute 并检查它是否提供第一跳 - 如果第一跳是 10.0.0.1,那么您应该在这方面没问题。

    如果所有这些都失败了,您需要拿出大炮 - 下一步是登录路由器并嗅探进出路由器的流量以查看发生了什么。您可以使用 tcpdump 执行此操作 - 但希望我们不需要这样做。

    • 1
  2. Best Answer
    Tech21101
    2025-03-19T23:10:54+08:002025-03-19T23:10:54+08:00

    首先,确保您的sysctl.conf已net.ipv4.ip_forward取消注释,并读取net.ipv4.ip_forward = 1。如果您使用 ipv6,则同样如此。使用 在 Debian 或 Ubuntu 上编辑文件sudo nano /etc/sysctl.conf,或使用您选择的编辑器(如 VIM)。

    UFW 还必须允许通过您选择的任何侦听端口使用 UDP wg0。我的是默认的ListenPort = 51820,因此该命令sudo ufw allow 51820/udp有效。

    我结合用户 Davidgo 的回答想出了这个解决方案。使用他们的解决方案后,我遇到的问题是,在服务器重启时,NAT IP 转发规则将被删除。查看我的 VPS 提供商关于在 Ubuntu 上配置 Wireguard 的文档(我之前查看的是 Debian 相关文档),我注意到在设置部分wg0.conf,您可以使用以下几行将 IP 转发设置为自动启用[Interface]:

    # IP Forwarding. Modify network interface name "eth0"
    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
    

    使用 将服务器设置为wg0在启动时启用sudo systemctl enable wg-quick@wg0,这意味着转发在启动时始终启用。因此,wg0.conf应该如下所示:

    [Interface]
    PrivateKey = [Server Private Key]
    Address = 10.0.0.1/24
    ListenPort = 51820
    
    # IP Forwarding. Modify network interface name "eth0"
    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
    
    [Peer]
    PublicKey = [Client Public Key]
    AllowedIPs = 10.0.0.2/32
    

    请记住,eth0可能需要将其更改为您的服务器以太网接口的名称,可以使用以下方式识别sudo ifconfig(例如:我的服务器的接口是enp1s0,而不是eth0。)

    • 0

相关问题

  • 三台电脑,没有路由器/交换机怎么组网?

  • 用户使用 FileZilla 连接到 SFTP 服务器拒绝连接

  • NAT 后面的 NAT 如何工作(路由器的 NAT 和 ISP 的 NAT)?

  • Win10 1803:如何让移动热点成为专用网络?

  • nc如何识别服务名称

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve