为什么OpenVPN中的客户端静态IP分配失败?


8

我正在运行OpenVPN服务器,并且想为特定的客户端分配静态IP。

这是我的server.conf。我认为这会将虚拟IP池配置为从10.5.24.209到10.5.24.223。

port 443
proto tcp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-auth ta.key 0
topology subnet
server 10.5.24.208 255.255.255.240
#This netmask should span IPs .208-.223.
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 168.xx.xx.xx"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
client-to-client
client-config-dir ccd

这是的内容/etc/openvpn/ccd/W7LocalVM,其中W7LocalVM是我的客户端的通用名称。我不太了解该指令的作用,但我认为第一个IP应该是客户端所需的静态IP,第二个IP应该是服务器的IP。

ifconfig-push 10.5.24.210 10.5.24.209

但是,当我尝试使用此服务器配置连接客户端时,出现以下错误:

Mon Aug 07 14:07:34 2017 Set TAP-Windows TUN subnet mode network/local/netmask = 10.5.24.208/10.5.24.210/10.5.24.209 [SUCCEEDED]
Mon Aug 07 14:07:34 2017 MANAGEMENT: Client disconnected
Mon Aug 07 14:07:34 2017 ERROR: --ip-win32 dynamic [offset] : offset is outside of --ifconfig subnet
Mon Aug 07 14:07:34 2017 Exiting due to fatal error

我以为IP 10.5.24.210将在服务器端定义的子网内,并且我不明白为什么会收到此错误。有人可以帮我吗?


1
我建议在Server Fault上询问此问题,因为该站点专门处理服务器管理问题,因此可能会得到更多反馈意见。
EJoshuaS-恢复莫妮卡

好。谢谢。不知道那个社区。我应该重新发布,还是有一些功能可以让我迁移发布?
Magnus

1
您可以标记主持人干预并要求他们迁移。(对于某些站点,例如超级用户,社区可以投票决定要迁移,但是迁移到该站点必须由主持人完成)。
EJoshuaS-恢复莫妮卡

Answers:


4

出现此问题是因为openvpn尝试将ifconfig选项解析为ip,然后是子网掩码。

根据手册页:

-拓扑模式

...

子网-通过为tun接口配置本地IP地址和子网掩码来使用子网而不是点对点拓扑,类似于--dev tap和以太网桥接模式中使用的拓扑。此模式为每个连接的客户端分配一个IP地址,并且也适用于Windows。仅在服务器和客户端为OpenVPN 2.1或更高版本,或已通过--topology指令代码手动修补的OpenVPN 2.0.x时可用。在Windows上使用时,需要8.2或更高版本的TAP-Win32驱动程序。在* nix上使用时,要求tun驱动程序支持ifconfig(8)命令,该命令设置子网而不是远程端点IP地址。

此选项存在于OpenVPN 2.1或更高版本中。

注意:使用--topology子网会将--ifconfig参数的解释更改为“地址网络掩码”,而不再是“本地远程”。

--ifconfig l rn

设置TUN / TAP适配器参数。l是本地VPN端点的IP地址。对于处于点对点模式的TUN设备,rn是远程VPN端点的IP地址。对于TAP设备或用于--topology子网的TUN设备rn是要创建或连接到的虚拟网段的子网掩码。对于方便虚拟点对点IP连接的TUN设备(在--topnet net30或p2p模式下使用时),--ifconfig的正确用法是使用两个不属于任何现有子网的私有IP地址正在使用中。IP地址可能是连续的,并且应该在远程对等方上颠倒其顺序。建立VPN后,通过ping rn,您将在VPN上ping通。

对于提供以下功能的TAP设备:...

在服务器代码内部,将拓扑设置为subnet,然后使用该server语句将其推送到客户端。

根据上述文档,您无需在“ / etc / openvpn / ccd / W7LocalVM”中添加以下内容,而不是使用“ local”,“ remote”地址推送ifconfig:

ifconfig-push 10.5.24.210 255.255.255.252
push route 10.5.24.210 255.255.255.252
# ifconfig 10.5.24.209 255.255.255.252

最后一行可能是不需要的,但仅作为示例,ifconfig-push应该在服务器端执行以使连接正常工作。


我在这里写了一条评论,询问为什么您建议为每个客户端分配四个IP,但是我很努力地在FAQ中找到答案。谢谢您解开谜语!
Magnus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.