最新消息:阿啰哈,本人90后,目前单身,欢迎妹子们来撩!.(。→‿←。) 微信:frank01991

Linux搭建L2TP/IPSec VPN

CentOS 林志斌 1038浏览

yum install -y ppp iptables make gcc gmp-devel xmlto bison flex xmlto libpcap-devel lsof
wget http://download.openswan.org/openswan/openswan-2.6.38.tar.gz
tar zxf openswan-2.6.38.tar.gz
cd openswan-2.6.38
make programs install

CentOS/RHEL 6
rpm -hiv 'http://mirrors.ustc.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm'
yum install xl2tpd -y

cp /etc/ipsec.conf /etc/ipsec.conf.original

修改第一个地方: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=publicip
leftid=publicip
leftprotoport=17/1701
right=%any
rightid=%any
rightprotoport=17/%any

这个文件不存在,需要在里面写入IPSec密钥
/etc/ipsec.secrets
#前面是公网IP        kashu是预共享密钥
publicip %any: PSK "kashu"

在/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
service ipsec start
ipsec verify

把下面这行加入到/etc/rc.local使其开机自动执行
echo 1 > /proc/sys/net/core/xfrm_larval_drop

许多人在执行ipsec verify的时候会出现错误,这里说两个我遇到最郁闷的状况。
1.如只有出现以下两行Failed,别的全部OK

Pluto listening for NAT-T on udp 4500 [Failed]
Two or more interfaces found, checking IP forwarding [Failed]

这个问题曾经困扰了我很久,最后在朋友和高手协助下修复了。

修改ipsec.conf。

left=1.2.3.4  //你的服务器IP
leftprotoport=17/1701
中间加上一行:

leftid=1.2.3.4  //你的服务器IP

right=%any
rightprotoport=17/%any
中间加上一行

rightid=%any
即可解决这个问题。

2.比上面的问题更郁闷的还有在ipsec verify的时候全部OK,却不能用没有密钥连接的情况。(不使用密钥可以正常连接。)
这个问题翻来覆去,和朋友检查了所有有关的配置文件和系统环境。还是没有结果,终于在看manpage中看到了相关内容。
简单解释下:系统的esp模块是需要加密。而默认的加密模块我的内核里没有,所以内核报错了。那么固定一种加密方式,就解决问题了。
是不是很纠结。但是解决起来却非常简单。(有用户报告32位系统无法解决,请大家自行测试)

在ipsec.conf中的

pfs=no
auto=add
两行之间加上

esp=3des-sha1-96
这样就定义了加密模块!问题就解决了
同时还有
esp=3des-md5-96
esp=3des
可供选择

转载请注明:林志斌 » Linux搭建L2TP/IPSec VPN

发表评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址