我现在遇到了一些麻烦,使用一个前同事设置的 OpenVPN 服务器(我不太喜欢 ATM)。我们将 OpenVPN 用于约 200 个客户端的专用网络(更具体地说,只有 15 个客户端,其中有虚拟机,桥接到同一网络 192.168.1.0/24)。
多年来它运行良好,但有几个星期,它表现得很奇怪。我在这个网络中有一台笔记本电脑,它曾经拥有 IP 192.168.1.156。这是我的 OpenVPN 服务器配置的有趣部分:
ifconfig-pool-persist ipp.txt
ifconfig-pool 192.168.1.1 192.168.1.254 255.255.255.0
Run Code Online (Sandbox Code Playgroud)
在我的 ipp.txt 文件中:
gfenollar.xxxxx.local,192.168.1.156
Run Code Online (Sandbox Code Playgroud)
但是当我重新启动我的 openvpn 客户端时,我得到了另一个 IP,总是不同的。当然,它给我分配了一个已经被另一个 OpenVPN 客户端使用的 IP,这太疯狂了!这是我的客户的日志:
Wed Feb 6 12:36:29 2013 SENT CONTROL [xxx]: 'PUSH_REQUEST' (status=1)
Wed Feb 6 12:36:29 2013 PUSH: Received control message: 'PUSH_REPLY,dhcp-option DNS 192.168.1.5,ping 8,ping-restart 20,ifconfig 192.168.1.24 255.255.255.0'
Wed Feb 6 12:36:29 2013 OPTIONS IMPORT: timers and/or timeouts modified
Wed Feb 6 12:36:29 2013 OPTIONS IMPORT: --ifconfig/up options modified …Run Code Online (Sandbox Code Playgroud) 在我的 CentOS 7 上,我cat /proc/<pid>/limits用来查看实际限制设置。我确认这个方法在这里是完全准确的,因为我在 MySQL 上使用它,它不能转储一个包含 >8000 个表的特定数据库。如果使用prlimit我将其设置为 10000,则转储成功完成。
现在,我想避免使用 prlimit,所以我配置了 /etc/security/limits.conf 文件以满足我的需求,如果我使用相应的用户(mysql)运行 bash,我可以看到正确的限制值配置运行时ulimit -a。
问题是mysql用户运行的mysqld进程仍然设置为默认值(这里是1024),导致转储数据库失败。我唯一的解决方案是在运行时运行 prlimit 但我想了解缺少的内容,以便我的进程在启动时遵守限制配置。