服务器使用shorewall作为防火墙,实际上shorewall只是作为iptables的一个配置程序而已,实际上防火墙还是iptables。首先是建立VPN,使用软件包PPTPD,这样做的好处是方便认证,也支持windows,安全性不如openvpn,但是简单实用。
服务器环境:
OS:ubuntu server 8.04.1
firewall:shorewall
IP:192.168.2.100
安装:
sudo apt-get install pptpd
修改配置相关文件:/etc/pptpd.conf
修改localip remoteip
localip 192.168.250.1
remoteip 192.168.250.234-238,192.168.250.245
这里随便找了个IP段localip差不多于拨号后的服务器地址,可以写成本机IP,或者和remoteip的IP段相同的一个IP地址
remoteip是客户机分配的IP段,这里分配了12个IP地址,也就只允许12个机器同时通过VPN连接,再增加就不能分配到IP地址了
修改配置相关文件:/etc/ppp/chap-secrets
这个文件里面设置登陆用的账号密码等信息
设置格式是:
# client server secret IP addresses
abc * 123456
第一个是用户名,然后是服务器地址,然后是登陆所用的密码,最后是为客户拨号后分配的IP地址,不指定的话就是系统自动分配。
以上过程之后,咱的PPTPD就配置好了哈
由于服务器采用了shorewall防火墙,需要开放端口1723,47和gre协议
编辑/etc/shorewall/rules
增加:
ACCEPT net $FW gre
ACCEPT net $FW tcp 1723
ACCEPT net $FW tcp 47
然后重启下shorewall:
sudo shorewall restart
开始测试在windows上VPN拨号吧
windows下VPN连接建立方法就不多说了哈
OK,测试VPN可以拨通了,但是还不能通过服务器的网络连接互联网,可能你会发现,除了访问服务器,其他你什么都干不了
接下来来做NAT,不过这个地方我也没做得很好,还有点缺陷,希望以后能解决这个问题
拨通VPN后,在服务器上使用ifconfig可以看到多了一个PPP*的网络连接,例如我这里是ppp0
做NAT我也使用shorewall来做
修改/etc/shorewall/interface
增加:
ppp0 ipv4
修改/etc/shorewall/zones
增加:
ppp ppp0
修改/etc/shorewall/masq
增加:
eth0 ppp0
OK,然后重启shorewall
sudo shorewall restart
NAT配置好了!
这里要注意的是ppp0一定要存在,否则shorewall要报错,这个就是shorewall不足的地方了,不够灵活。
一旦你不用shorewall 防火墙,直接使用iptables指令进行dnat操作,就不会因为没有ppp0连接而报错了。