在ubuntu上搭建L2PT/IPsec服務器


為什么要搭建L2PT呢、最簡單的一點理由就是支持移動網絡

 

首先安裝好編譯環境

apt-get -y install build-essential

然后再安裝OpenSwan依賴包

apt-get -y install libgmp3-dev flex bison

編譯安裝OpenSwan

wget -c http://www.openswan.org/download/openswan-2.6.33.tar.gz
tar -zxf openswan-2.6.33.tar.gz
cd openswan-2.6.33
make programs install

 

然后配置IPSec文件

cp /etc/ipsec.conf /etc/ipsec.conf.bak
vim /etc/ipsec.conf

 在里面輸入以下內容

version 2.0

config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
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=192.168.1.102
leftprotoport=17/1701
right=%any
rightprotoport=17/%any

注意縮進格式、否則啟動服務器會發生錯誤、left=這一行要換成邇的公網IP、記得是當前服務器公網IP、別使用localhost這些冬冬、不然客戶端會找不到邇的服務器的!

 

接着設置PSK預共享密碼、在/etc/目錄下創建ipsec.secrets文件

vim /etc/ipsec.secrets

輸入以下內容

192.168.1.102 %any: PSK "123456"

同樣、192.168.1.102要切換成邇的服務器公網IP、123456為邇的預共享密碼、請更改成邇喜歡的安全碼


然后修改網絡策略

for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done

這里使用了shell的循環語法、邇要一句一句的輸入、大致的意思就是把/proc/sys/net/ipv4/conf/目錄下的所有目錄的accept_redirects和send_redirects用0來填充、意思就是把這些屬性都關閉吧、

然后重啟IPSec服務、再驗證是否已經正常了

/etc/init.d/ipsec restart
/usr/local/sbin/ipsec verify

如果遇到有ERROR或者WANGRING、則參看這個文章:http://www.cnblogs.com/klobohyz/archive/2012/02/04/2337775.html

還有ipsec並不會自動啟動、如果重新啟動請手機啟動ipsec服務器或者寫自動運行腳本

 

以上就已經把IPSec部署好了、接下來部署L2TP

首先獲取l2tp-control、並安裝

wget http://nchc.dl.sourceforge.net/project/rp-l2tp/rp-l2tp/0.4/rp-l2tp-0.4.tar.gz
tar zxvf rp-l2tp-0.4.tar.gz
cd rp-l2tp-0.4
./configure
make
cp handlers/l2tp-control /usr/local/sbin/
mkdir /var/run/xl2tpd/
ln -s /usr/local/sbin/l2tp-control /var/run/xl2tpd/l2tp-control

注意一下最后兩句、由於xl2tpd是建立在/var/run/上面、意味着服務器重啟會把里面的這些冬冬都刪除掉、所以為了以后方便、最好把后面兩句命令寫成自動執行的shell、這樣重啟服務器就自動在run目錄里建立xl2tpd目錄、然后再搞鏈接、

 

然后安裝xl2tpd、先安裝依賴包

apt-get -y install libpcap-dev 

再安裝xl2tpd、

wget -c http://www.xelerance.com/wp-content/uploads/software/xl2tpd/xl2tpd-1.2.8.tar.gz
tar -zxf xl2tpd-1.2.8.tar.gz
cd xl2tpd-1.2.8
make install

再進行xl2tpd的配置、在etc目錄下新建xl2tpd目錄、再往里面新建一個xl2tpd.conf文件

mkdir /etc/xl2tpd
vim /etc/xl2tpd/xl2tpd.conf

在里面輸入以下內容

[global]
ipsec saref = yes

[lns default]
local ip = 10.10.11.1
ip range = 10.10.11.2-10.10.11.245
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

注意這里、如果邇剛剛執行ipsec verify命令時是不支持saref的話、這里的ipsec saref請設置為no、而local ip和ip range請不要與當前網絡發生沖突、local ip就是當服務器與客戶端建立了VPN時服務器端的虛擬IP、下面的ip range則是客戶端在VPN里的IP

然后再安裝ppp包和設置VPN用戶、如果邇之前安裝過pptp、請略過這些步驟

安裝ppp包

apt-get -y install ppp

配置xl2tpd文件、在/etc/ppp/下新建options.xl2tpd文件

vim /etc/ppp/options.xl2tpd

輸入以下內容

require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

ms-dns那兩個為google提供的公共DNS服務器、邇可以改成電信提供的DNS也可以

 

添加VPN用戶、這個VPN用戶是和pptp共用同一個文件的、邇可以使同一個用戶同時作用於pptp和l2tp、也可以將兩個用戶分開來設定、編輯chap-secrets文件

vim /etc/ppp/chap-secrets

輸入以下內容

user * 123456 *

建立一個用戶名為user、密碼為123456的vpn用戶、第一個星號表示同時支持pptp和l2tp、邇可以寫成pptpd或者xl2tpd、這樣就只支持其中一種協議了、后面一個星號表示由VPN服務器自動分配IP地址

 

然后設置數據包轉發、同樣如果在pptp里已經設置過了這里可以不再設置

sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sysctl -p

這里的意思就是把存在/etc/sysctl.conf文件里包含#net.ipv4.ip_forward=1的行統一都取消掉注釋、然后執行sysctl -p使修改后的sysctl.conf立即生效

 

然后設置iptables的轉發

iptables -t nat -A POSTROUTING -s 10.10.11.0/24 -o eth0 -j MASQUERADE

注意這里的10.10.11.0的填寫是與xl2tpd.conf里的IP設定有關的、因為之前已經設定了local ip為10.10.11.1所以這里才設定成10.10.11.0、后面的24表示子網掩碼為255.255.255.0、因為前面設置的分配IP就是以C類子網來划分的

 下面就只要啟動xl2tpd服務就大功造成了

/usr/local/sbin/xl2tpd
/usr/local/sbin/xl2tpd -D #以調式模式啟動

 

注意iptables會在重啟后失效的、請使用iptables-save先保存一份規則然后在網絡啟動時再使用iptables-restore來加載這個文件、

至於l2tp與freeradius的整合、只需要在options.xl2tpd的尾部加上

plugin /usr/lib64/pppd/2.4.5/radius.so
plugin /usr/lib64/pppd/2.4.5/radattr.so
radius-config-file /usr/local/etc/radiusclient/radiusclient.conf

具體方法請參看這文章的PART II:http://www.cnblogs.com/klobohyz/archive/2012/02/04/2338675.html

 

另外如果


 

參考文章:

https://wangyan.org/blog/debian-l2tp-ipsec-vpn.html

http://zyj.me/article/ipv6-l2tp-vpn

http://ttz.im/blog/2011/04/577

 

至於windows客戶端L2TP/IPSec的連接方式就不詳細講了、主要在安全那里更改協議成L2TP/IPSec、並在高級設置里填寫上預共享密鑰就可以了

 



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM