背景问题
当前 openvpn 服务端配置了参数来尝试持久化客户端ip
ifconfig-pool-persist /etc/openvpn/ipp-udp.txt
如果客户端第一次获取到 ip 地址,会记录到此文件以实现持久话,下次登录会继续使用此ip。但存在一个问题,当服务器重启后此文件会被清空,所有的客户端都会从头开始分配ip地址,并没有实现真正的持久话客户端ip。
如何解决
经过了解可以使用下面参数解决
client-config-dir /etc/openvpn/ccd
目录内可以定义每个客户端的配置文件,为客户端单独推送配置,比如更多的路由,静态ip地址,由此文件配置的ip会在客户端登录的时候主动推送
具体配置方法是在此目录下写入客户端 common-name(CN) 的文件即可,内容如下:
[root@localhost ccd]# more yuc
ifconfig-push 192.168.9.2 255.255.255.0
push "route 192.168.100.0 255.255.255.0"
根据格式为需要持久话分配ip的客户端配置即可,或者为此客户端单独添加一条路由
最后-自动化
如果我们的目标是为每个客户端都持久话ip地址,那么每个文件都手动创建明显很费力,那么通过openvpn提供的用户登录后执行脚本来自动化创建,后续自行了解,这里不举例子
批量配置脚本
如果有一批用户要配置持久化,需要提供两列,分别是 用户名、ip,脚本如下:
while read line;do
read name ip <<< $(echo $line | awk '{print $1,$2}'); echo "ifconfig-push $ip 255.255.252.0" > $name;
done < /tmp/name
评论