搭建環境:
1.檢測搭建的環境要求
#cat /dev/net/tun
如果這條指令顯示結果為下面的文本,則表明通過:
cat: /dev/net/tun: File descriptor in bad state
2.安裝pptp
apt-get install pptpd
3.編輯 vi /etc/pptpd.conf
此地方地設置的IP在後面會用到。。。。注意。。。。`
去掉文件最末端的 localip 和 remoteip 兩個參數的注釋(可以進行相應地修改,可我沒有)
localip 10.100.0.1
remoteip 10.100.0.2-10
localip 是 VPN 連通後服務器的 ip 地址,而 remoteip 則是客戶端的可分配 ip 地址。
4.編輯 vi /etc/ppp/pptpd-options
需要改變其中的 ms-dns 選項,為 VPN 客戶端指派 DNS 服務器地址
ms-dns 8.8.8.8
ms-dns 8.8.4.4
解析:ms-dns 8.8.8.8, ms-dns 8.8.4.4是使用google的dns服務器。
5.編輯 vi /etc/ppp/chap-secrets
存放著VPN的用戶名和密碼
如文件中注釋所示,第一列是用戶名,第二列是名(默認寫 pptpd 即可,如果在 pptpd-options 文件中更改過的話,注意這裡保持一致),第三列是密碼,第四列是 IP 限制(不做限制寫 * 即可)
例子:
vpn1 pptpd "123456789" *
6.我們需要重啟 pptpd 服務使新配置生效
/etc/init.d/pptpd restart
至此,如果我們建立連接之後,將會發現除了可以訪問服務器的資源,其余內外和互聯網的內容均無法訪問。如果需要訪問這些內容的話,我們還需要進一步設置: 首先,開啟 ipv4 forward 。方法是,修改 /etc/sysctl.conf,找到類似下面的行並取消它們的注釋(*.ipv4.* = 1的都要去掉注釋哦):
7.編輯 vi /etc/sysctl.conf
取消如下注釋:(有問題酒吧的話, *.ipv4.* = 1 的都去掉注釋)
net.ipv4.ip_forward=1
使配置生效:
sysctl -p
作用:修改內核設置,使其支持轉發
有些時候,經過這樣設置,客戶端機器就可以上網了(我在虛擬機上這樣操作後就可以了)。 但我在實驗室的服務器上這樣操作後仍然無法訪問網絡,這樣我們就需要建立一個 NAT。這裡我們使用強大的 iptables 來建立 NAT。首先,先安裝 iptables:
8.添加iptables轉發規則等操作
啟動iptables和nat轉發功能,很關鍵的呀
1.安裝iptables
apt-get intall iptables
2.為了客戶端能夠順利連接到VPN服務器,還需主機防火牆開放VPN端口(默認為1723)
sudo iptables -I INPUT -p tcp --dport 1723 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 47 -j ACCEPT
sudo iptables -I OUTPUT -p tcp --dport 1723 -j ACCEPT
sudo iptables -I OUTPUT -p tcp --dport 47 -j ACCEPT
3.然後,我們向 nat 表中加入一條規則:
設置iptables NAT轉發
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
這裡的設置與之前的 /etc/pptpd.conf有關聯,詳細查閱:http://www.dabu.info/centos6-4-structures-pptp-vpn.html裡地 第四步:啟動pptp vpn服務和iptables
4.這樣操作後,客戶端機器應該就可以上網了。 但是,只是這樣,iptables 的規則會在下次重啟時被清除,所以我們還需要把它保存下來,方法是使用 iptables-save 命令:
iptables-save > /etc/iptables-rules
按著教程走,應該到了這裡了
5.編輯vi /etc/network/interfaces
找到 eth0 那一節,在對 eth0 的設置最末尾加上下面這句:
pre-up iptables-restore < /etc/iptables-rules
可是我這裡我的文件裡面沒有此eth0,估計網卡名稱不一樣,可用ifconfig查看
詳細可查閱:http://www.dabu.info/centos6-4-structures-pptp-vpn.html
6.設置MTU來確保過大的包不會被丟棄(這個可以不做)
iptables -I FORWARD -s 192.168.0.0/24 -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1300
9.啟動服務
/etc/init.d/pptpd restart