更改 openvpn dhcp 池

Zol*_*abo 6 networking dhcp vpn routing openvpn

我现在有一个配置,它几乎可以正常工作,直到某些客户端连接,服务器开始将客户端从服务器上踢掉或类似的东西。因为我已经检查过每个客户端都获得了一个好的 IP 地址,并且没有 IP 地址冲突。客户端使用不同的证书进行连接。但是我想更改此配置以分隔 dhcp 范围。

当前的服务器配置是这样的:

port 1194
proto udp

dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh2048.pem

server 10.8.0.0 255.255.255.0
topology subnet

push "route 10.8.0.1 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

ifconfig-pool-persist ipp.txt

client-config-dir /etc/openvpn/ccd

client-to-client

keepalive 10 300
comp-lzo
user nobody
group nobody

persist-key
persist-tun

status /etc/openvpn/openvpn-status.log
verb 6
Run Code Online (Sandbox Code Playgroud)

我想从这个范围分配动态 IP:
10.8.1.0 - 10.8.1.254

为此,我想使用 /23,所以 255.255.254.0

我将从这个范围内分配静态 IP:
10.8.0.3 - 10.8.1.255 作为 0.1 和 0.2 可能分配给服务器。

我将使用它向客户端推送静态 ip:

ifconfig-push 10.8.0.5 255.255.254.0
Run Code Online (Sandbox Code Playgroud)

你能帮我修改我的配置来实现这个吗?

所以将我的 10.8.0.0-10.8.1.255 范围拆分为两个:

  • 静态 IP:10.8.0.4-10.8.0.255
  • 动态 IP:10.8.1.0-10.8.1.254

我也会有 Linux 和 Windows 客户端。

小智 9

为了借鉴 Zoltan Szabo 的答案并满足评论中要求的澄清,以下是我对答案的看法。

如何修改DHCP地址池?

首先,回答最初的问题。你的配置中可能有类似的东西server 10.8.0.0 255.255.255.0。该指令将自动分配一个 DHCP 池ifconfig-pool 10.8.0.4 10.8.0.251。如果您尝试ifconfig-pool自己指定,OpenVPN 会抱怨您无法使用server并且ifconfig-pool一起使用。现在有两种方法可以自定义DHCP地址池。

a)使用nopool

有一个选项可以强制 OpenVPN 不分配 DHCP 地址池。nopool只需在服务器指令末尾添加参数,您就可以自己指定池。

server 10.8.0.0 255.255.255.0 nopool
ifconfig-pool 10.8.0.100 10.8.0.200
Run Code Online (Sandbox Code Playgroud)

serverb)自己声明和自定义扩展指令

这个解决方案是 Zoltan 使用的,有点棘手,但让您可以自定义服务器的更多方面。OpenVPN 手册显示了该server指令是如何扩展的。在此基础上,您可以自己声明所有必要的选项。这高度依赖于拓扑以及您是否使用dev tundev tap

topology subnet我只是根据问题(和)中的配置添加一个示例dev tun

mode server
tls-server
push "topology subnet"
ifconfig 10.8.0.1 255.255.255.0
ifconfig-pool 10.8.0.2 10.8.0.253 255.255.255.0
push "route-gateway 10.8.0.1"
route-gateway 10.8.0.1
Run Code Online (Sandbox Code Playgroud)

请参阅下面的注释和手册以获取更多信息。

如何为客户端分配静态IP地址?

问题的第二部分是关于分配静态IP。OP 似乎已经解决了这个问题,而且互联网上已经有很多 关于这个主题的资源 尽管如此,我还是想添加一小段关于为某些客户端分配静态 IP 地址的内容。

解决方案是使用客户端配置目录并为其中的每个客户端添加一个文件。

将其添加到您的 OpenVPN 服务器配置中:

client-config-dir /etc/openvpn/ccd
Run Code Online (Sandbox Code Playgroud)

例如,如果您想将 IP 10.8.0.5 分配给通用名称为 的客户端client1,请创建一个包含以下内容的文件/etc/openvpn/ccd/client1(注意:这是针对topology subnet):

ifconfig-push 10.8.0.5 255.255.255.0
Run Code Online (Sandbox Code Playgroud)

还要记住OpenVPN 手册中的注释ifconfig-pushroute我在 Zoltan 的回答中发布的配置中找不到该指令。

还要记住在包含 local 的主 OpenVPN 配置文件中包含 --route 指令,以便内核知道将其路由到服务器的 TUN/TAP 接口。

笔记

为了完整起见,这是OpenVPN 手册中有关服务器指令扩展的部分。

例如--server 10.8.0.0 255.255.255.0展开如下:

mode server
tls-server
push "topology [topology]"
if dev tun AND (topology == net30 OR topology == p2p):
  ifconfig 10.8.0.1 10.8.0.2
  if !nopool:
    ifconfig-pool 10.8.0.4 10.8.0.251
  route 10.8.0.0 255.255.255.0
  if client-to-client:
    push "route 10.8.0.0 255.255.255.0"
  else if topology == net30:
    push "route 10.8.0.1"

if dev tap OR (dev tun AND topology == subnet):
  ifconfig 10.8.0.1 255.255.255.0
  if !nopool:
    ifconfig-pool 10.8.0.2 10.8.0.253 255.255.255.0
  push "route-gateway 10.8.0.1"
  if route-gateway unset:
    route-gateway 10.8.0.2
Run Code Online (Sandbox Code Playgroud)


Zol*_*abo 7

好的,最后它通过对配置文件的一些更改解决了:

port 1194
proto udp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh2048.pem

mode server
tls-server
topology subnet
push "topology subnet"
ifconfig 10.8.0.1 255.255.254.0
ifconfig-pool 10.8.1.0 10.8.1.253
route-gateway 10.8.0.1
push "route-gateway 10.8.0.1"

client-config-dir /etc/openvpn/ccd

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

client-to-client

keepalive 10 300
comp-lzo

user nobody
group nobody
persist-key
persist-tun

status /etc/openvpn/openvpn-status.log
verb 6
Run Code Online (Sandbox Code Playgroud)

  • 很高兴您分享了您的配置。但是如果你能解释你改变了什么以及为什么改变,它会对其他人更有帮助。 (2认同)
  • ...作为conf文件中的注释! (2认同)