我正在运行 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
Run Code Online (Sandbox Code Playgroud)
这是 的内容/etc/openvpn/ccd/W7LocalVM
,其中 W7LocalVM 是我的客户端的通用名称。我不太明白这个指令的作用,但我认为第一个 IP 应该是我客户端所需的静态 IP,第二个 IP 应该是我服务器的 IP。
ifconfig-push 10.5.24.210 10.5.24.209
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用此服务器配置连接客户端时,出现以下错误:
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
Run Code Online (Sandbox Code Playgroud)
我认为 IP 10.5.24.210 将在服务器端定义的子网内,我不明白为什么会收到此错误。有人可以帮我解决这个问题吗?
产生此问题的原因是 openvpn 尝试将您的 ifconfig 选项解析为 ip 后跟子网掩码。
根据手册页:
--拓扑模式
...
子网 -- 通过使用本地 IP 地址和子网掩码配置 tun 接口,使用子网而不是点对点拓扑,类似于 --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 subnet 会将 --ifconfig 参数的解释更改为“地址网络掩码”,不再是“本地远程”。
--ifconfig l rn
设置 TUN/TAP 适配器参数。l 是本地 VPN 端点的 IP 地址。对于点对点模式的 TUN 设备,rn 是远程 VPN 端点的 IP 地址。对于 TAP 设备或与 --topology subnet 一起使用的 TUN 设备,rn 是正在创建或连接到的虚拟网段的子网掩码。对于促进虚拟点对点 IP 连接(在 --topology net30 或 p2p 模式下使用时)的 TUN 设备, --ifconfig 的正确用法是使用两个不属于任何现有子网成员的私有 IP 地址正在使用中。IP 地址可以是连续的,并且在远程对等点上应颠倒其顺序。VPN 建立后,通过 ping rn,您将可以 ping 通 VPN。
对于 TAP 设备,它提供......
在服务器代码中,将拓扑设置为subnet
,然后使用该server
语句将其推送到客户端。
根据上述文档,您需要将以下内容添加到“/etc/openvpn/ccd/W7LocalVM”,而不是使用“本地”、“远程”地址推送 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
Run Code Online (Sandbox Code Playgroud)
最后一行可能不需要,但作为示例 ifconfig-push “应该”在服务器端执行以使连接工作。
归档时间: |
|
查看次数: |
10314 次 |
最近记录: |