ubuntu linux 下建立L2TP 服务端

一、ipsec

1、源码下载 openswan 使服务器支持ipsec

https://download.openswan.org/openswan/

2、安装 openswan-2.6.50.tar.gz

a、tar -vxf openswan-2.6.50.tar.gz

b、从文件中openswan-2.6.50 README的
1. The GNU Math Precision Library:

   Debian package names: libgmp3, libgmp3-dev
   Rpm package names:    gmp, gmp-devel
   
知道要安装几个库,这里只安装了一个libgmp3-dev

c、apt-get install libgmp3-dev

3、编译

make programs install

4、配置文件

a、备份
mv /etc/ipsec.conf /etc/ipsec.conf.back 
修改

vi /etc/ipsec.conf

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=xxx.xxx.xxx.xxx 
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

上面有一行是left=xxx.xx.xx.xx,这里要把left的值改为你的服务器的ip地址,外网可以访问的IP地址。

b、添加文件/etc/ipsec.secrets 

xxx.xxx.xxx.xxx %any: PSK "YourPsk"
上面的xxx.xxx.xxx.xxx是服务器的公网IP,而后面的"YourPsk"中的YourPsk就是密钥。L2TP比PPTP多了一个密钥项,这也是它比PPTP更安全的原因之一。这个密钥其实就是一个密码,不同于用户的登录密码,它相当于一个设备之间通信的密钥

你可以改为自己的任意字符串。客户端登录VPN的时候,需要这个PSK。

c、vi /etc/sysctl.conf 添加 

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1

执行生效 

sysctl -p

5、启动

ipsec setup restart

ipsec verify

root@ubuntu16:/etc# ipsec verify
Checking if IPsec got installed and started correctly:

Version check and ipsec on-path                         [OK]
Openswan U2.6.50/K4.4.0-127-generic (netkey)
See `ipsec --copyright' for copyright information.
Checking for IPsec support in kernel                    [OK]
 NETKEY: Testing XFRM related proc values
         ICMP default/send_redirects                    [OK]
         ICMP default/accept_redirects                  [OK]
         XFRM larval drop                               [OK]
Hardware random device check                            [N/A]
Checking rp_filter                                      [ENABLED]
 /proc/sys/net/ipv4/conf/all/rp_filter                  [ENABLED]
 /proc/sys/net/ipv4/conf/ens33/rp_filter                [ENABLED]
Checking that pluto is running                          [OK]
 Pluto listening for IKE on udp 500                     [OK]
 Pluto listening for IKE on tcp 500                     [NOT IMPLEMENTED]
 Pluto listening for IKE/NAT-T on udp 4500              [OK]
 Pluto listening for IKE/NAT-T on tcp 4500              [NOT IMPLEMENTED]
 Pluto listening for IKE on tcp 10000 (cisco)           [NOT IMPLEMENTED]
Checking NAT and MASQUERADEing                          [TEST INCOMPLETE]
Checking 'ip' command                                   [OK]
Checking 'iptables' command                             [OK]

ipsec verify: encountered errors

这个时候,你可能就已经可以看到正常的信息了

二、ppp

一般服务器安装了,没有执行下面安装命令

apt-get install pptpd

修改

vi /etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
2018    *       123     *
2017    *       456     *

2018 、2017 是客户端填写的登录名,123 、456是客户端填写的登录密码。每个空格都要用Tab键隔开。

三、xd

1、安装

就像pptp和pptpd一样,L2TP也依赖于xd。

apt-get install xd

如果更新不了,下载源码(xd-1.3.10.tar.gz)自己安装。

https://www.xelerance.com/archives/147

编译出错,需要安装下面的库。

apt-get install libpcap0.8-dev libpcap0.8 libcap-dev

make install 要修改makefile 文件的安装路径  xd /etc/init.d/ ,还有其他的一些文件,这边我没有试过,直接是

apt-get install xd ,这个安装完xd 是在 /etc/init.d/ 目录里。

2、修改配置

a、vi /etc/xd/xd.conf

[global]
ipsec saref = yes
listen-addr = xxx.xxx.xxx.xxx
[lns default]
ip range = 192.168.223.100-192.168.223.200
local ip = 192.168.223.10
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xd
length bit = yes

xxx.xxx.xxx.xxx也要改成你自己的服务器外网IP ;这个主要在使用命令DEBUG: xd -D (debug 模式),可以监听客户端的登录。

b、vi /etc/ppp/options.xd

ipcp-accept-local
ipcp-accept-remote
ms-dns  114.114.114.114
ms-dns  8.8.8.8
ms-wins 192.168.1.2
ms-wins 192.168.1.4
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000

3、启动

service xd restart

4、iptables

iptables -A INPUT -m policy --dir in --pol ipsec -j ACCEPT
iptables -A FORWARD -m policy --dir in --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -m policy --dir out --pol none -j MASQUERADE
iptables -A FORWARD -i ppp+ -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m policy --dir in --pol ipsec -p udp --dport 1701 -j ACCEPT
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.223.0/24 -o eth0 -j MASQUERADE

可以直接在终端执行每条命令,也可以把它写入文件vi /etc/rc.local

最后执行

service iptables save
service iptables restart

到这里所有的配置完成。

四、通过下面命令可以控制 serve

Start: /etc/init.d/xd start
Stop: /etc/init.d/xd stop
Restart: /etc/init.d/xd restart
DEBUG: xd -D (debug 模式)

五、总结

openswan(ipsec) : 提供一个密钥
ppp :提供用户名和密码
xd : 提供L2TP服务
sysctl : 提供服务器内部转发

iptables : 提供请求从服务器内部转向外部,外部响应转向服务器内部

六、window 客户端的配置

1、首先在Windows上建立这个客户端。


2、双击

ubuntu linux 下建立L2TP 服务端_第1张图片

3、点击属性

ubuntu linux 下建立L2TP 服务端_第2张图片

框框里的是服务器的ip地址

4、点击安全

ubuntu linux 下建立L2TP 服务端_第3张图片

VPN:类型选择L2TP,在点击高级设置

ubuntu linux 下建立L2TP 服务端_第4张图片

密钥,添加刚才服务器配置的 YourPsk,这个值可随便更改,只要跟服务器保存一致就行,点击确定。

5、连接

ubuntu linux 下建立L2TP 服务端_第5张图片

用户名:2018或2017 填写服务器中有配置的就行。

密码:相同操作。

参考文章:https://segmentfault.com/a/1190000006125737


你可能感兴趣的:(ubuntu linux 下建立L2TP 服务端)