周星驰和十三妹:OpenVPN Server不是网关的情况下登陆内网服务器

来源:百度文库 编辑:中财网 时间:2024/04/20 18:23:46

昨天一个下午的时间,包括晚上加班,都没有把OpenVPN的问题搞定,从网上查的资料也都讲得不太明确,openVPN的HowTo读了N遍,也没有达到我的目的。昨晚躺在床上,突然想起,是不是防火墙的问题呢?早上来了,把Forward默认策略改为ACCEPT,搞定了,迅速调整了防火墙策略,搞定。
我要实现的目标很简单:在外网,可以用Openvpn登陆进来,并且可以访问内网内的所有服务器,并且VPN Server不是网关,而VPN Server有两块网卡,一块连接公网,一块连接公司内网。
各方资料显示只要做一个SNAT就可以了,不过怎么搞都是只能联通OpenVPN Server而不能联通VPN Server所在内网网段的其他服务器!
我设置的VPN的网络段是172.31.0.0/24,服务起来之后,在服务端路由表里面显示服务器tun的IP为172.31.0.1,网关为172.31.0.2;而在
客户端获得了一个172.31.0.6的地址,路由表里面显示网关为172.31.0.5.但是却无法ping通172.31.0.2还有172.31.0.5,之前从来没有用过OpenVPN,但是根据以前对路由表的理解,觉得这个网关怪怪的,所以晚上找资料就是找网关的问题。
晚上把思路理了一下,觉得是不是这两个是个openVPN的虚拟的网关?这么一想,那么就把注意力放到了防火墙的设置上。下面把防火墙关于VPN的设置总结一下:

#eth0 -- internet connection
#eth1 -- intranet connection
#turnoff all the connection first
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#open udp port for the openvpn
#allow client connect to the openvpn server
iptables -A INPUT -i eth0 -p udp --dport openvpn -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --sport openvpn -j ACCEPT
#allow tun in and out
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A OUTPUT -o tun+ -j ACCEPT
#allow vpn to the intranet
iptables -A FORWARD -i tun+ -o eth1 -j ACCEPT
#the following one is very important
#if you miss this one, you will not connection
#to the servers in you intranet
iptables -A FORWARD -i eth1 -o tun+ -j ACCEPT
#DO NAT
iptables -t nat -A POSTROUTING -s 172.31.0.0/24 -o eth1 -j MASQUERADE