最好为每个客户端设置单独的 IP。
主要配置(/etc/openvpn/server.conf
):
local MAIN_IP
port 1194
dev tun
user nobody
group $NOGROUP
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.0.0
client-config-dir /etc/openvpn/ccd
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 80.67.169.12"
push "dhcp-option DNS 80.67.169.40"
push "redirect-gateway def1 bypass-dhcp"
具有个人设置的目录,i_client
| /etc/openvpn/ccd/i_client
:
ifconfig-push 10.8.33.1 10.8.33.2
iroute 10.8.33.0 255.255.255.0
对于每个新客户,只有子网格会发生变化 -10.8.*.0
IPTables规则:
接受-_iptables -I FORWARD -s 10.8.0.0/16 -j ACCEPT
对于没有特殊配置的客户ccd
-iptables -t nat -A POSTROUTING -o ens3 -s 10.8.0.0/24 -j SNAT --to-source PRIMARY_EXTERNAL_IP
个人客户——iptables -t nat -A POSTROUTING -s "10.8.33.0/255.255.255.0" -o ens3 -j SNAT --to-source INDIVIDUAL_EXTERNAL_IP
该决定来自http://unix-notes.ru/2010/04/19/raznye-vneshnie-ip-dlya-raznykh-openvpn-klientov/几乎是唯一的来源。
使用没有单独配置的标准配置时,VPN可以正常工作。反之亦然,授权通过,但尝试打开某些站点失败。
如果你真的需要它,请离开 iroute。但是根据我的经验, ifconfig-push 东西不是很可靠。带走。它仅在隧道的一侧公开 IP,它对水龙头很方便,因为 tun 最好来自池。
我已经在配置中看到了必要的参数:
ifconfig-pool-persist ipp.txt
转到 ipp.txt 文件并在那里为每个名称指定子网。OpenVPN 从那里获取地址。在配置中指定文件的完整路径或在 /etc/openvpn/ 中查找