安装 iptables,写入策略
[root@openvpn ~]# yum -y install iptables iptables-services [root@openvpn ~]# iptables -t nat -A POSTROUTING -s 17.166.221.0/24 -o ens192 -j MASQUERADE #NAT [root@openvpn ~]# systemctl enable iptables.service Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service. [root@openvpn ~]# systemctl start iptables.service [root@openvpn ~]# iptables -L -n [root@openvpn ~]# iptables -t nat -L -n
我上面的操作只是单纯的添加了一个 nat
,端口没做任何限制,全部开放,如果你的服务器 iptables
已经装好了,而且还有一系列的规则,你的操作就是放行 vpn
端口,添加 NAT
,以上两项完成之后看一下现有的规则,看 FORWARD
链,如果发现这一个,就还需要添加 FORWARD
规则。
Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
现在是拒绝全部 FORWARD
,如果不添加 FORWARD
规则,连接 vpn
之后,不会发现你的电脑断网了,只能访问到提供 vpn
服务的服务器,其他都访问不通,大概酱子。
这个问题的解决办法两种,第一种是编辑 iptables
配置文件,删除下面的规则重启 iptables
即可,这个比较简单。
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
第二种就是添加规则了,允许 tun0
网卡进行 FORWARD
,两条规则
[root@openvpn ~]# iptables -I FORWARD -i tun0 -j ACCEPT [root@openvpn ~]# iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT [root@openvpn ~]# iptables -L -n Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
root@10-9-128-245:~# iptables-save > /etc/iptables-rules #保存配置
root@10-9-128-245:~# vim /etc/iptables-rules #编辑保存的配置文件,不要的删掉
root@10-9-128-245:~# iptables-restore < /etc/iptables-rules #恢复配置文件
开启转发
[root@openvpn ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 [root@openvpn ~]# sysctl -p
重启 openvpn,然后 ifconfig 看一下,会多一个 tun0 虚拟网卡
root@10-9-128-245:~# /etc/init.d/openvpn restart [ ok ] Stopping virtual private network daemon: server. [ ok ] Starting virtual private network daemon: server. root@10-9-128-245:~# ifconfig
客户端配置