服務器使用shorewall作為防火牆,實際上shorewall只是作為iptables的一個配置程序而已,實際上防火牆還是iptables;
首先是建立VPN,使用軟件包PPTPD,這樣做的好處是方便認證,也支持windows,安全性不如openvpn,但是簡單實用;
服務器環境:
OS:ubuntu server 8.10
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連接而報錯了