路由&NAT
需求描述如下:
- 假如您将 Linuxcc SSLVPN Web-GUI 管理系统部署在企业内部,而企业内部有 N 个网络,例如下面表格中的规划:
业务规划 | IP 地址 |
---|---|
数据库服务器集群 | 172.16.10.0/24 |
Web 服务器集群 | 172.16.20.0/24 |
存储服务器集群 | 172.16.30.0/24 |
办公网 | 172.16.100.0/24 |
那么您将如何实现 vpn 客户端成功拨入后可以访问这些网络呢,请您参考下面配置来添加静态路由以及 NAT 的配置!

开启路由转发
提示
默认安装后已经添加了路由转发,您需要使用sysctl -p
命令确认是否开启,没有开启再使用下面指令开启路由转发功能。
检查命令(我这边是开启的,能看到 net.ipv4.ip_forward = 1
表示开启成功)
[root@OPS ~]# sysctl -p
net.ipv4.ip_forward = 1
开启路由转发指令
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
测试路由
提示
需要在VPN客户端测试看是否可以访问10.0.10.1
,这个地址是VPN服务器tun0接口的IP地址。
[root@OPS ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 enp3s0
10.0.10.0 172.30.0.2 255.255.255.0 UG 0 0 0 br-c2d468787eea
[root@OPS ~]# ping 10.0.10.1
PING 10.0.10.1 (10.0.10.1) 56(84) bytes of data.
64 bytes from 10.0.10.1: icmp_seq=1 ttl=64 time=0.086 ms
64 bytes from 10.0.10.1: icmp_seq=2 ttl=64 time=0.057 ms
64 bytes from 10.0.10.1: icmp_seq=3 ttl=64 time=0.057 ms
64 bytes from 10.0.10.1: icmp_seq=4 ttl=64 time=0.056 ms
配置 NAT
注意
无论是哪一种防火墙,只需用一个即可,CentOS8/Anolis8 使用 firewalld,Debian/Ubuntu Server 使用 iptables即可
- firewalld 防火墙
firewall-cmd --add-masquerade
firewall-cmd --add-masquerade --permanent

- iptables 防火墙(核心配置就是第 4 行,这里是 ubuntu24.04 系统测试)其它系统请酌情修改。
# 安装iptables
apt install -y iptables iptables-persistent
# 开启VPN虚拟地址段的伪装
iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -o eth0 -j MASQUERADE
# 如果FORWARD链的默认规则是DROP,则需要配置一下转发,使用下面2条指令
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# 持久化保存配置
netfilter-persistent save
注意
eth0 是出接口网卡的名称,请根据实际情况调整修改,千万别照抄哦。
阿里云的一篇 NAT 文章:查看
推送路由给客户端
- 请修改 VPN 主配置文件,加入下面的路由信息
push "route 172.16.10.0 255.255.255.0"
push "route 172.16.20.0 255.255.255.0"
push "route 172.16.30.0 255.255.255.0"
push "route 172.16.100.0 255.255.255.0"

提示
记得重启 VPN 服务后才能生效,重启完成可以在客户端测试是否可以正常访问。