linux L2TP部署

部署前提条件

- 1个具有至少1个公共IP地址和root访问权限的CentOS 6服务器
- 1个(或更多)运行支持IPsec / L2tp vpn的操作系统(Ubuntu,Mac OS,Windows,Android)的客户端。
- 防火墙中打开了端口1701 TCP,4500 UDP和500 UDP。

部署安装L2TP相关软件

yum install -y epel-release
yum install -y ppp iptables make gcc gmp-devel xmlto bison flex xmlto libpcap-devel lsof
yum install openswan
yum -y install wget bind-utils
yum -y install epel-release
yum install openswan xl2tpd ppp lsof
#openswan用于ipsec,xl2tpd用于l2tp,ppp用于身份验证,其他软件是前置软件。

配置Openswan

编辑/etc/ipsec.conf 注意将$VPS_IP替换成你机器的公网IP(用户L2TP接入的IP)。

# which IPsec stack to use. auto will try netkey, then klips then mast
# protostack=auto
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=$VPS_IP # 替换IP
        leftid=$VPS_IP # 替换IP
        leftprotoport=17/1701
        right=%any
        rightid=%any
        rightprotoport=17/%any

编辑/etc/ipsec.secrets,添加内容如下,依然需要替换$VPS_IP为你机器的IP,替换$PASS为你想指定的密钥。

#用户连接时需要提供此密钥
$VPS_IP %any: PSK "$PASS"

iptables配置

  • iptables中帮助用户进行了NAT(可选),如果流量能引导别的Gateway则不需要NAT。
  • iptables中打开了端口1701 TCP,4500 UDP和500 UDP。

系统配置

编辑/etc/sysctl.conf文件,在文件尾部追加如下内容。

# added for xl2tpd
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 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.default.accept_source_route = 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指令,使修改生效。

验证IPSEC的基础配置

/etc/init.d/ipsec restart
ipsec verify
#返回如下结果就算成功。
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                                 [OK]
Linux Openswan U2.6.24/K2.6.32.16-linode28 (netkey)
Checking for IPsec support in kernel                            [OK]
NETKEY detected, testing for disabled ICMP send_redirects       [OK]
NETKEY detected, testing for disabled ICMP accept_redirects     [OK]
Checking for RSA private key (/etc/ipsec.secrets)               [OK]
Checking that pluto is running                                  [OK]
Pluto listening for IKE on udp 500                              [OK]
Pluto listening for NAT-T on udp 4500                           [OK]
Two or more interfaces found, checking IP forwarding            [OK]
Checking NAT and MASQUERADEing
Checking for 'ip' command                                       [OK]
Checking for 'iptables' command                                 [OK]
Opportunistic Encryption Support                                [DISABLED]
#出现问题:SAref kernel support [N/A]
#解决办法:修改 /etc/xl2tpd/xl2tpd.conf 文件:
; ipsec saref = yes
ipsec saref = no
#更改完成后,不会影响verify的返回结果,但是已可以无视此问题。
#出现问题:Two or more interfaces found, checking IP forwarding [FAILED]
#解决办法:只要cat /proc/sys/net/ipv4/ip_forward返回结果是1,就忽略这个问题。

配置xL2TPD

编辑/etc/xl2tpd/xl2tpd.conf文件。

;#如下的IP range为用户VPN使用的地址的IP Range,请根据需求更改。
ip range = 192.168.100.128-192.168.100.254
local ip = 192.168.100.1

编辑/etc/ppp/options.xl2tpd文件,确保整个文件内容如下,注释除外。

require-mschap-v2
ipcp-accept-local
ipcp-accept-remote
ms-dns 8.8.4.4
ms-dns 8.8.8.8
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000

编辑/etc/ppp/chap-secrets文件,一行代表一个用户。

#添加L2TP账号和密码
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
name1           *       pass1                   *
name2           *       pass2                   *

启动服务

/etc/init.d/ipsec restart
/etc/init.d/xl2tpd restart
posted @ 2020-03-26 00:21  IamJet  阅读(1555)  评论(0编辑  收藏  举报