在Ubuntu下搭建VPN伺服器,我們分別搭建PPTP和L2TP兩種類型。
首先我們搭建PPTP伺服器。
下載安裝pptpd:
1 2 |
sudo apt-get update sudo apt-get install pptpd |
接下來修改配置腳本,首先在/etc/ppp/options中配置DNS。
將以下兩行的注釋符號刪除並改為你需要的外網DNS:
1 2 |
ms-dns 8.8.8.8 ms-dns 8.8.4.4 |
然後修改pptp配置文件/etc/ppp/pptpd-options,除注釋行外的內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 proxyarp nodefaultroute lock nobsdcomp novj novjccomp nologfd |
以及另一個用於pptp分配ip的配置文件/etc/pptpd.conf,在該文件結尾加入:
1 2 |
localip 192.168.8.1 remoteip 192.168.8.2-180 |
給pptp連接分配的內部ip地址段請根據需要填寫。
接下來打開路由轉發功能,在/etc/sysctl.conf中找到以下內容將數值改為1:
net.ipv4.ip_forward=1
保存後運行命令生效:
sysctl -p
修改iptable規則NAT轉發以及設置MTU
1 2 |
iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -o eth0 -j MASQUERADE iptables -I FORWARD -s 192.168.8.0/24 -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356 |
以上兩行重啟後會失效,很多人的做法是將其保存為iptable rules添加到pre-up中
我的做法比較簡單,直接將這兩行寫入/etc/rc.local結尾(exit之前)。
(注意:eth0是你的公網網卡名稱,請通過ifconfig確認)
然後在/etc/ppp/chap-secrets中添加用戶和密碼。
格式為[用戶名\t連接類型\t密碼\t用戶IP],例如:
1 |
test * test * |
使用/etc/init.d/pptpd restart重啟pptpd服務。
至此pptp類型VPN搭建完畢。
接下來搭建L2TP類型VPN。
因為L2TP需要通過IPSec加密,同樣我們下載安裝需要的組建服務:
1 2 3 |
sudo apt-get update sudo apt-get install openswan sudo apt-get install xl2tpd |
然後修改配置文件/etc/ipsec.conf,除注釋行外的內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
version 2.0 config setup dumpdir=/var/run/pluto/ nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10 oe=off protostack=netkey conn L2TP-PSK-NAT rightsubnet=vhost:%priv also=L2TP-PSK-noNAT conn L2TP-PSK-noNAT authby=secret pfs=no auto=add keyingtries=3 rekey=no ikelifetime=8h keylife=1h type=transport left=88.88.88.88 leftprotoport=17/1701 right=%any rightprotoport=17/%any dpddelay=10 dpdtimeout=90 dpdaction=clear |
left處請填寫您本伺服器的IP位址!
接下來修改/etc/xl2tpd/xl2tpd.conf,除注釋行外的內容如下:
1 2 3 4 5 6 7 8 9 10 11 |
[global] ipsec saref = yes [lns default] ip range = 192.168.8.181-192.168.8.254 local ip = 192.168.8.1 length bit = yes require chap = yes refuse pap = yes require authentication = yes ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd |
ip range處請填寫您需要給l2tp連接分配的內部ip網段。
再修改/etc/ppp/options.xl2tpd,如果沒有可以新建,內容如下:
1 2 3 4 5 6 7 8 9 10 |
require-mschap-v2 ms-dns 8.8.8.8 ms-dns 8.8.4.4 auth crtscts hide-password name l2tpd proxyarp lcp-echo-interval 30 lcp-echo-failure 4 |
DNS處可設置您需要分配的DNS地址。
再修改/etc/ipsec.secrets文件設置預設共享密鑰:
1 |
88.88.88.88 %any: PSK "kujourin" |
前面為本伺服器IP地址,引號內的為您要設置的密鑰
修改網路策略使ipsec能正常運行:
1 2 3 4 5 |
for each in /proc/sys/net/ipv4/conf/* do echo 0 > $each/accept_redirects echo 0 > $each/send_redirects done |
順便也加入到/etc/rc.local中(exit之前)。
以上配置全部完畢後,可以通過ipsec verify命令檢測ipsec運行是否正常。
如果出現Checking for IPsec support in kernel [FAILED],您可能未啟動ipsec服務,通過/etc/init.d/ipsec start啟動。
如果出現NETKEY: Testing XFRM related proc values [FAILED],您可能未修改網路策略。
如果出現Pluto listening for IKE on udp 500 [FAILED],您可能需要安裝apt-get install lsof。
如果沒有出現[FAILED]表示運行正常。
Ubuntu使用apt-get安裝openswan一定會出現Two or more interfaces found, checking IP forwarding [FAILED]。
而且客戶端無法連接,且在/var/log/auth日誌中出現
ERROR: netlink XFRM_MSG_DELPOLICY response for flow eroute_connection delete included errno 2: No such file or directory
那麼原因應該是apt-get到的openswan版本並不能在該Ubuntu上運行,建議去openswan的官網下載2.6.34版本手動編譯安裝。
或在此下載源碼:ftp://ro:[email protected]/openswan_lilith.pro.tar.gz
(這實在非常噁心,因為源碼編譯安裝不是誰都能完成的,注意必須把源碼解壓在/usr/src下並apt-get install libgmp3-dev,以及bison,flex等然後再編譯安裝)
L2TP將和PPTP一樣使用/etc/ppp/chap-secrets作為帳戶密碼文件。
重啟所有服務:
1 2 3 |
/etc/init.d/pptpd restart /etc/init.d/xl2tpd restart /etc/init.d/ipsec restart |
大功告成!
======
kujou_rin
2 thoughts on “Ubuntu搭建PPTP/L2TP類型VPN伺服器”