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
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1216526
Accepted
AivanF.
AivanF.
Asked: 2020-03-12 23:21:05 +0800 CST2020-03-12 23:21:05 +0800 CST 2020-03-12 23:21:05 +0800 CST

无法设置 WireGuard VPN

  • 772

我的目标是创建一个 VPN

  1. 客户端具有静态 IP 地址。
  2. 客户端能够相互通信和服务器,
  3. 客户端可以通过 VPN 访问全球互联网。
  4. 另外,我想设置 DNS 和私有域名(使用 NginX)。

这是服务器的配置:

[Interface]
Address = 10.0.0.1/24
ListenPort = 5555
PrivateKey = xxxxx

[Peer]
PublicKey = xxxxx
AllowedIPs = 0.0.0.0/0

和客户端的配置:

[Interface]
PrivateKey = xxxxx
ListenPort = 5555
Address = 10.0.0.2/32
DNS = 8.8.8.8

[Peer]
PublicKey = xxxxx
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = <server ip>:5555

但是当我尝试加载服务器的配置时wg setconf wg0 /etc/wireguard/wg0.conf,我收到了这个错误:

Line unrecognized: `Address=10.0.0.1/24'
Configuration parsing error

因此我评论了这一行。但这可能会使 WG 为服务器和客户端选择随机 IP 地址。

为了使 WireGuard 工作,我还运行了以下命令:

ip link add dev wg0 type wireguard
ip address add dev wg0 10.0.0.1/24
ip link set up dev wg0

毕竟,wg命令提供以下输出:

interface: wg0
  public key: xxxxx
  private key: (hidden)
  listening port: 5555

peer: xxxxx
  endpoint: <my IP address>:6228
  allowed ips: 0.0.0.0/0
  latest handshake: 2 minutes, 11 seconds ago
  transfer: 26.02 KiB received, 248 B sent

从客户端(带有 WireGuard GUI 的 MacOS)我可以连接,但是:

  • 我没有互联网连接。我什至无法通过全局 IP 地址 ping 服务器,尽管我可以使用私有的,10.0.0.1.
  • 即使我更改客户端配置中的端口,我也能够连接到 VPN。我认为这意味着它并没有真正联系起来。

那么,我怎样才能实现我的目标呢?我的配置有什么问题?

PS。服务器上既iptables没有安装防火墙,也没有安装防火墙,所以这不是问题。net.ipv4.ip_forward=1另外,我net.ipv6.conf.all.forwarding=1在/etc/sysctl.conf.
软件版本。操作系统是Ubuntu 18.04.4 LTS,内核:4.15.0-20-generic,WG wireguard-tools v1.0.20200206:。


更新

我Address从服务器的配置中删除,并设置AllowedIPs = 10.0.0.2/24在客户端的配置中,我终于通过私有 IP 从客户端连接到服务器的 NginX,并且能够访问 Internet(因为流量在 VPN 之外)。

但是如果我AllowedIPs = 0.0.0.0/0在客户端设置,我无法上网,但仍然可以通过VPN的IP地址10.0.0.1到达服务器。我尝试用 解决它ifconfig wg0 broadcast/multicast,但没有成功。现在该命令ip address show wg0提供以下输出:

4: wg0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.10.10.1/24 scope global wg0
       valid_lft forever preferred_lft forever
    inet 10.10.10.1 peer 10.10.10.2/32 scope global wg0
       valid_lft forever preferred_lft forever

另外,我无法从另一个客户端访问一个客户端,我认为这是同样的问题。如何修复 WireGuard 配置或服务器网络设置以解决问题?

networking server vpn wireguard
  • 2 2 个回答
  • 11263 Views

2 个回答

  • Voted
  1. piroux
    2020-03-13T08:42:52+08:002020-03-13T08:42:52+08:00

    的手册wg没有提到该set命令可以理解该Address指令,也没有提到其配置格式规范:

           The Interface section may contain the following fields:
    
           ·      PrivateKey — [...] Required.
    
           ·      ListenPort — [...] Optional; if not specified, chosen randomly.
    
           ·      FwMark — [...] Optional.
    
           The Peer sections may contain the following fields:
    
           ·      PublicKey  —  [...] Required.
    
           ·      PresharedKey — [...]
    
           ·      AllowedIPs — [...] May be specified multiple times.
    
           ·      Endpoint  — [...]  Optional.
    
           ·      PersistentKeepalive  — [...] Optional.
    

    相反,要使用包含 的配置文件设置界面Address,您应该使用一些名为的帮助程序wg-qucik:

    $ sudo wg-quick up /etc/wireguard/wg0.conf
    

    此命令将创建接口wg0本身,因此您可能希望使用ip命令清理已创建的接口。

    • 1
  2. Best Answer
    AivanF.
    2020-03-15T09:59:54+08:002020-03-15T09:59:54+08:00

    好吧,几天几夜,杀了服务器,我自己解决了所有问题:)

    • 首先,我想提一下,wg实用wg-quick程序对配置文件的处理方式不同。所以,我wg setconf wg0 /etc/wireguard/wg0.conf没有按预期的方式工作,我猜它使用旧的配置格式。现在我wg-quick通过systemctl.

    • 其次,即使我调用net.ipv4.ip_forward=1了. 我必须使用命令将配置与内核链接起来。这允许对等点相互通信并通过 VPN 访问 Internet。/etc/sysctl.confsystemctl daemon-reload ; systemctl restart systemd-networkdsysctl -p /etc/sysctl.conf

    • 值得一提的是,对于所有Address注释,最好使用 32 位子网掩码,这意味着确切的 IP,而不是范围。

    • 此外,我使用 BIND9 设置了自定义 DNS 以在网络中创建自己的域。NginX 会检查发件人的 IP 地址,以限制对 VPN 客户端的访问。

    目前,我的配置如下。

    服务器

    [Interface]
    PrivateKey = ___some_private_key___
    Address = 10.0.0.1/32
    ListenPort = 5555
    
    # The following is needed only if you have `ufw` installed
    PostUp = 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 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]
    # Specify each client info separately
    PublicKey = ___some_public_key___
    AllowedIPs = 10.0.1.1/32
    

    客户

    [Interface]
    PrivateKey = ___some_private_key___
    Address = 10.0.1.1/32
    ListenPort = 5555
    
    [Peer]
    PublicKey = ___some_public_key___
    AllowedIPs = 10.0.0.0/16
    Endpoint = ___server_ip_address_on_the_internet__:5555
    
    • 1

相关问题

  • 使用 dpkg 手动安装软件包是否会阻止未来的升级路径?

  • 如何从命令行刻录双层 dvd iso

  • 如果在服务器机器上运行 Ubuntu 桌面版,性能损失是多少?

  • 将桌面版剥离为服务器版的最简单方法是什么?

  • 如何与无头服务器进行图形交互?

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve