有没有办法让 Wireguar 监听多个端口?就像在 80,53 和 4444 上收听一样。
我希望在不运行多个电线保护单独接口的情况下实现这一点,以防止必须为同一事物创建不同的子网。
这背后的原因是为了确保我的服务器在公共网络上的最大可达性,有时会打开不同的端口。
如果软件中没有包含,我正在考虑用 iptable 做一些事情,但我不确定如何“重定向”这个端口。
我查看了wireguard文档,但无济于事。
我的设备很少:VDS、Linux 上的定制 NAS、笔记本电脑。所有这些都成功连接到一个本地子网 10.1.1.0/24
服务器配置:
[Interface]
Address = 10.1.1.1/24
ListenPort = 5182
PrivateKey = ***
[Peer]
PublicKey = ***
AllowedIPs = 10.1.1.2/32
[Peer]
PublicKey = ***
AllowedIPs = 10.1.1.12/32
Run Code Online (Sandbox Code Playgroud)
典型客户:
[Interface]
Address = 10.1.1.2/32
PrivateKey = ***
[Peer]
PublicKey = ***
AllowedIPs = 10.1.1.0/24,224.0.0.0/4
Endpoint = host.name:5182
Run Code Online (Sandbox Code Playgroud)
客户端接口(服务器相同)
wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.1.1.2/24 scope global hub0
valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)
服务器监听任意地址和端口
UNCONN 0 0 239.255.255.250:1900 0.0.0.0:* users:((minidlnad,pid=456,fd=5))
Run Code Online (Sandbox Code Playgroud)
无法发现 DLNA 服务器,当我使用 …
我有一个 VPN 服务器,上面装有 Wireguard 和 OpenVPN。我的大部分隧道都是 OpenVPN,但我正在努力过渡到 Wireguard。Wireguard 服务器位于主位置,我在同一远程站点有 3 个客户端。其中两个具有 Wireguard 隧道,一个具有 OpenVPN 隧道。OpenVPN 隧道上的客户端没有看到数据包丢失。我从根本没有隧道的站点上的系统运行 ping,并且没有看到从该站点到 VPN 服务器的数据包丢失。
但两个 Wireguard 客户端每 2 小时就会看到大约 5-10 分钟的数据包丢失。我提供了一张包含 3 个客户端的冒烟结果的图像,最上面的图是 OpenVPN,下面的两个是 Wireguard 客户端。

现在,由于它只是处于测试阶段,我的 Wireguard 客户端有一个基本配置,基本上没有路由。我将工作组设置为几个点对点隧道。
客户端/服务器之间的隧道之一的配置如下所示。Smokeping 正在 VPN 服务器上运行,并对隧道的远端 IPv4 地址执行 ping 操作
VPN 服务器配置
[Interface]
PrivateKey = ...
ListenPort = 32012
Address = 10.3.199.24
Address = fd6c:d0ed:2749:20c7::18
[Peer]
AllowedIPs = 10.3.199.24/31
AllowedIPs = fd6c:d0ed:2749:20c7::18/127
PublicKey = ...
PersistentKeepalive = 120
Run Code Online (Sandbox Code Playgroud)
VPN 客户端配置
[Interface]
PrivateKey = ...
Address = 10.3.199.25
Address …Run Code Online (Sandbox Code Playgroud) 我有两个 Debian GNU/Linux 系统(bullseye/sid),都在端口 23456 上运行wireguard,都在 NAT 之后。两者都运行内核版本 > 5.6(Wireguard 主线)。
系统 A 是服务器,它动态更新其 Internet 域的权威名称服务器中的专用“A 记录”,并为其面向 Internet 的路由器 A(ZyWALL USG 100 防火墙)分配了正确的公共 IP 地址。它每分钟执行一次,但公共 IP 地址实际上仅在路由器/防火墙重新启动时更改,这基本上不会发生。
系统 B 位于 VDSL 路由器 B 后面,它充当有线保护客户端,指向动态更新的“A 记录”和端口 33456。路由器 B 是消费级 VDSL 路由器,它允许出站方向的所有内容,仅回复入站。
路由器/防火墙 A (ZyWALL USG 100) 被配置为允许端口 23456 上的 UDP 数据包通过它并将它们转发到服务器 A。这是相关的配置屏幕:
这是服务器 A 线保护配置文件(此代码段中的密钥尽管有效,但不是真实的):
[Interface]
Address = 10.31.33.100/24, fc00:31:33::1/64
ListenPort = 23456
PrivateKey = iJE/5Qy4uO55uUQg8nnDKQ/dFT1MEq+tDfFXrGNj3GY=
# PreUp = iptables -t nat -A POSTROUTING -s 10.31.33.0/24 -o enp1s0 -j MASQUERADE; ip6tables …Run Code Online (Sandbox Code Playgroud) 我在 Debian 上运行带有附加接口的 Wireguard wg0。有了这个 ufw 规则,我希望 ufw 能够通过我的流量:
ufw allow in on wg0 to any
Run Code Online (Sandbox Code Playgroud)
但 ufw 却阻塞了流量:
[14674.950320] [UFW BLOCK] IN=wg0 OUT=eth0 MAC= SRC=10.0.0.2 DST=54.xx.xx.xx LEN=64 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=TCP SPT=54263 DPT=443 WINDOW=65535 RES=0x00 SYN URGP=0
[14675.451891] [UFW BLOCK] IN=wg0 OUT=eth0 MAC= SRC=fd00:0000:0000:0000:0000:0000:0000:0002 DST=2a05:xxx LEN=84 TC=0
Run Code Online (Sandbox Code Playgroud)
有人知道这里发生了什么事吗?
我正在尝试按照WireGuard 网站的说明在我的新香草 Ubuntu 18.04.1 机器上安装 WireGurad 。但是当我尝试执行第一个命令时:
sudo add-apt-repository ppa:wireguard/wireguard
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Cannot add PPA: 'ppa:~wireguard/ubuntu/wireguard'.
ERROR: '~wireguard' user or team does not exist.
Run Code Online (Sandbox Code Playgroud)
尽管 launchpad.net 上有 WireGuard 页面:https ://launchpad.net/~wireguard/+archive/ubuntu/wireguard 。
关于如何安装它的任何建议?
谢谢!
更新:问题出在代理设置中(正如已接受答案中的链接所暗示的那样)。导出 HTTP_PROXY 和 HTTPS_PROXY 环境变量后,一切正常。
我有多台计算机(Win10 pro)放置在不同的远程位置(我的合作伙伴),我需要管理。我需要从中心位置访问它们。所以我有一个中央VPN服务器,我想要多个Win10专业版实例连接到它。我正在使用 L2TP,但我想迁移到wireguard。使用 L2TP,可以从任务计划程序在后台启动 rasdial.exe。主要目标是在计算机启动时立即启动隧道,并在隧道出现故障时自动重新连接。我需要在任何用户登录计算机之前(例如在后台)。我想知道wireguard是否可以做到同样的事情?
我注意到有一个名为 C:\Program Files\Wireguard\wg.exe 的程序,其命令行选项与 wg (linux) 程序非常相似:
C:\Program Files\WireGuard>wg.exe --help
Usage: wg.exe <cmd> [<args>]
Available subcommands:
show: Shows the current configuration and device information
showconf: Shows the current configuration of a given WireGuard interface, for use with `setconf'
set: Change the current configuration, add peers, remove peers, or change peers
setconf: Applies a configuration file to a WireGuard interface
addconf: Appends a configuration file to a WireGuard interface
syncconf: Synchronizes a configuration file to a …Run Code Online (Sandbox Code Playgroud) 因此,我有一个在 Amazon Lightsail 上运行的 VPS,并在其上安装了wireguard;我这样设置界面:
[Interface]
Address = 10.255.128.1/24
MTU = 1420
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = ********************************************
Run Code Online (Sandbox Code Playgroud)
然后发生了一些非常奇怪的事情:我将 iface UP 并运行sudo ip addr,然后我得到这个输出
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8921 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet …Run Code Online (Sandbox Code Playgroud) 即使没有设置隧道 IP 地址,Wireguard 也可以工作,即设置允许的 IP、端点地址、私钥和公钥就足够了。
在OpnSense的文档中,有以下警告:
注意:隧道地址必须采用 CIDR 表示法,并且必须是您的网络的唯一 IP 和子网。[..]请勿使用 /32 (IPv4) 或 /128 (IPv6) 隧道地址
pfSense 有一个可能的解释:
注意:系统路由表中不会自动创建路由。除隧道网络本身之外的其他网络的路由必须使用静态或动态路由单独配置。
在网上搜索并没有得到太多解释:
该子网似乎没有任何功能,我们做了一些测试:
那么,隧道ip中的子网掩码有什么作用呢?
QNAP 的 QTS 版本 5 现在将 Wireguard 作为 QVPN 中的协议。然而,与 OpenVPN 不同的是,没有选项可以下载易于设置的配置文件来快速将客户端连接到您的 NAS。
看来用户需要创建自己的 Wireguard 配置文件才能运行它。由于我不知道这些文件的语法,我需要做什么才能从 OpenVPN 切换到 Wireguard?
我的问题与网络路由和 iptables 的基础知识有关,可能是因为我对如何设置它缺乏了解。
我使用wireguard 在主机之间建立了一个覆盖网络,其中一个位于路由器/NAT 后面。到目前为止,覆盖网络运行良好,每个主机都可以与其他主机通信。
现在,我想让主机 A 成为专用网络的网关,但遗憾的是我未能做到这一点。
你能帮我解开 iptables 转发之谜吗?
VPN 的覆盖网络是169.254.0.0/24,路由器后面的专用网络是192.168.0.0/24。
169.254.0.0/24,在 Wireguard 上运行)192.168.0.0/24)VPN服务器
wg0: 169.254.0.1
客户
wg0: 169.254.0.2
主机A
wg0: 169.254.0.3
eth0: 192.168.0.33
主机B
eth0: 192.168.0.53
为了说明真实的网络,下面是这张图:

这是覆盖网络:

此时,我的客户端无法通过主机 A 向主机 B 发送数据包。
我之前问过如何在运行wireguard服务的VPS上转发端口,以ufw和iptables作为管理。
我必须这样做:
(56000是我选择的随机端口)(10.66.66.2是wireguard的内部ip)
ufw route allow proto tcp to 10.66.66.2 port 56000
Run Code Online (Sandbox Code Playgroud)
然后我会这样做来实际使用 iptables 转发端口:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 56000 -j DNAT --to-destination 10.66.66.2
Run Code Online (Sandbox Code Playgroud)
我有办法实现这一firewalld目标吗?这样我就不必将转发分成两个地方?
这里是否使用伪装/是否需要?因为我不知道它有什么作用,也不知道它有什么用。
VPSwireguardwg0conf供参考:
Address = 10.66.66.1/24,fd42:42:42::1/64
ListenPort = 49503
PrivateKey = ***
[Peer]
PublicKey = ***
PresharedKey = ***
AllowedIPs = 10.66.66.2/32,fd42:42:42::2/128
Run Code Online (Sandbox Code Playgroud) 我有一个可用的 VPN 连接,但它已导入 WireGuard,我需要在 OpenVPN 客户端上使用相同的配置并将其导入那里。有没有办法将wireguard.conf文件转换为.ovpn文件并在OpenVPN 客户端上使用它?