RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1093701
Accepted
AivanF.
AivanF.
Asked:2020-03-12 15:31:41 +0000 UTC2020-03-12 15:31:41 +0000 UTC 2020-03-12 15:31:41 +0000 UTC

设置 VPN WireGuard 的问题

  • 772

我需要创建一个VPN,这样

  1. 客户端具有静态 IP 地址。
  2. 客户端可以相互通信,也可以与服务器通信,
  3. 客户端可以通过 VPN 访问 Internet。
  4. 另外,我想设置自己的 DNS 和私有域(由 NginX 处理)。

我的配置服务器是:

[Interface]
Address = 10.0.0.1/24, fd86:ea04:1115::1/64
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

但是当我尝试通过加载服务器配置时wg setconf wg0 /etc/wireguard/wg0.conf出现此错误:

Line unrecognized: `Address=10.0.0.1/24,fd86:ea04:1115::1/64'
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)我可以连接,但是:

  • 没有网络连接。我什至无法在全局地址上 ping 服务器,尽管它可以在私有地址上运行10.0.0.1。
  • 即使我在客户端配置中指定了不同的端口,我也可以连接到 VPN。我想这意味着它实际上并没有连接。

如何让 WireGuard 以我想要的方式工作?我的配置有什么问题?

PS。服务器上iptables没有防火墙,所以这不是问题。另外,在文件中,/etc/sysctl.conf我指定了net.ipv4.ip_forward=1and net.ipv6.conf.all.forwarding=1,并执行了systemctl restart systemd-networkd.
软件版本。操作系统:Ubuntu 18.04.1 LTS,内核:4.15.0-20-generic,WG wireguard-tools v1.0.20200206:。

ubuntu
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    AivanF.
    2020-03-15T07:44:15Z2020-03-15T07:44:15Z

    所以,经过几天,几夜和杀死服务器后,我终于弄清楚了一切:)

    • 首先,值得注意的是实用程序wg和wg-quick使用配置的方式不同(显然,wg它们不支持最新的配置格式)。所以wg setconf wg0 /etc/wireguard/wg0.conf我开始wg-quick使用systemctl.

    • 其次,即使在net.ipv4.ip_forward=1执行. 我还必须使用命令将配置发送到操作系统内核。这最终允许客户端相互通信并从 VPN 下访问互联网。/etc/sysctl.confsystemctl daemon-reload ; systemctl restart systemd-networkdsysctl -p /etc/sysctl.conf

    • 值得注意的是,对于所有应用程序,Address最好指定 32 位的子网掩码,因为它表示特定的 IP 地址,而不是范围。

    • 此外,我还能够使用 BIND9 设置我自己的 DNS,以便在我的网络上创建一个自定义域。并通过监听本地网络上的地址和额外验证发件人 IP 来提高 NginX,以限制仅 VPN 客户端的访问。

    结果,我的配置变成了这样:

    服务器

    [Interface]
    Address = 10.0.0.1/32
    ListenPort = 5555
    PrivateKey = ___some_private_key___
    
    # Это нужно только если на сервере установлен `ufw`
    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]
    PublicKey = ___some_public_key___
    AllowedIPs = 10.0.0.1/32
    

    客户

    [Interface]
    PrivateKey = ___some_private_key___
    ListenPort = 5555
    Address = 10.0.0.1/32
    
    [Peer]
    PublicKey = ___some_public_key___
    AllowedIPs = 10.0.0.0/24
    Endpoint = ___some_ip_address__:5555
    
    • 3

相关问题

  • Fishshell 在加载时写入错误

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

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

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5