linux之ipsec vpn搭建(内外测试通过, 外网存在疑问)

回复 收藏
本帖最后由 田埂上的梦 于 2015-6-26 12:40 编辑

一、简介
     第二次隧道协议L2TP(Layer 2 Tunneling Protocol)是一种工业标准的Internet隧道协议, 它使用UDP的1701端口进行通信。 L2TP本身并没有任何加密, 但是我们可以是用IPSec对L2TP包进行加密。 L2TP VPN比PPTP VPN搭建复杂一些。

二、安装IPsec, Openswan是Linux系统上IPsec的一个实现
     1. 查看系统版本及内核, 关闭selinux
[root@L2TP ~]# uname -r && cat /etc/redhat-release
2.6.32-358.el6.x86_64
CentOS release 6.4 (Final)

[root@L2TP ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
[root@L2TP ~]# reboot

     2. 用yum安装L2TP所需软件包
[root@L2TP ~]# yum -y install gcc gmp-devel bison flex lsof openswan

     3. 编辑ipsec配置文件
[root@L2TP ~]# vim /etc/ipsec.conf
================在文件末尾行添加如下================
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=
服务器公网IPV4地址
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

===================结           束===================

     4. 设置PSK预共享密钥
[root@L2TP ~]# vim /etc/ipsec.secrets
=====在文件末尾行添加如下=====
服务器公网IPV4地址 %any: PSK "123.com"
=========结      束=========

     5. 修改包转发设置
[root@L2TP ~]# vim /etc/rc.local
=====在文件末尾行添加如下=====
for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/accept_redirects
    echo 0 > $each/send_redirects
done

=========结      束=========
[root@L2TP ~]# source !$

[root@L2TP ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1          #将0改为1
[root@L2TP ~]# sysctl -p

     6. 重启IPSec测试
[root@L2TP ~]# /etc/init.d/ipsec start
[root@L2TP ~]# ipsec verify
1.png

http://file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image.png
没有报[FAILED]就可以了。

     7. 可以尝试新建一个ipsec+l2tp的连接, 填好服务器地址和共享秘钥,但连接拨号查看
2.png


3.png
4.png

5.png

6.png

7.png


http://file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(1).png
http://file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(2).png
http://file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(3).png
http://file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(4).png
http://file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(5).png
http://file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(6).png
查看Linux服务器日志
[root@L2TP ~]# tail -f /var/log/secure
192.168.15.20 #4: STATE_QUICK_R2: IPsec SA established transport mode  
如果出现了类似记录即正常。


二、安装L2TP(xl2tpd和rp-l2tp)
     1. 安装关联包
[root@L2TP ~]# yum -y install libpcap-devel ppp

     2. 安装L2TP
[root@L2TP ~]# cd /usr/local/src/
[root@L2TP src]# wget http://downloads.sourceforge.net ... /rp-l2tp-0.4.tar.gz
[root@L2TP src]# tar -zxvf rp-l2tp-0.4.gz
[root@L2TP src]# cd rp-l2tp-0.4
[root@L2TP rp-l2tp-0.4]# ./configure
[root@L2TP rp-l2tp-0.4]# echo $?
0
[root@L2TP rp-l2tp-0.4]# make
[root@L2TP rp-l2tp-0.4]# echo $?
0
[root@L2TP rp-l2tp-0.4]# cp handlers/l2tp-control /usr/local/sbin/
[root@L2TP rp-l2tp-0.4]# mkdir /var/run/xl2tpd
[root@L2TP rp-l2tp-0.4]# ln -s /usr/local/sbin/l2tp-control /var/run/xl2tpd/l2tp-control
[root@L2TP rp-l2tp-0.4]# cd ../

[root@L2TP src]# wget  http://www.xelerance.com/software/xl2tpd/xl2tpd-1.2.4.tar.gz
[root@L2TP src]# tar -zxvf xl2tpd-1.2.4.tar.gz

[root@L2TP src]# cd xl2tpd-1.2.4
[root@L2TP xl2tpd-1.2.4]# make install


     3. 配置
[root@L2TP xl2tpd-1.2.4]# mkdir /etc/xl2tpd
[root@L2TP xl2tpd-1.2.4]# vim /etc/xl2tpd/xl2tpd.conf

注意, ip range不要和你的lan ip冲突。
=====在文件末尾行添加如下=====
[global]
ipsec saref = yes

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

=========结      束=========


     4. 修改ppp配置
[root@L2TP xl2tpd-1.2.4]# 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

=========结      束=========


     5. 添加用户名/密码
[root@L2TP xl2tpd-1.2.4]# vim /etc/ppp/chap-secrets
=====在文件末尾行添加如下=====
# client          server     secret                  IP addresses
  vpnuser       l2tpd     vpnpasswd                 *
=========结      束=========


     6. 启用包转发
[root@L2TP xl2tpd-1.2.4]# iptables --table nat --append POSTROUTING --jump MASQUERADE
[root@L2TP xl2tpd-1.2.4]# /etc/init.d/iptables save

     7.启动l2tp
[root@L2TP xl2tpd-1.2.4]# /usr/local/sbin/xl2tpd -D     #以debug方式启动l2tp
显示如下:
8.png

http://file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(7).png
说明已经在监听端口了。
[root@L2TP xl2tpd-1.2.4]# /usr/local/sbin/xl2tpd -s start          #启动l2tp
[root@L2TP xl2tpd-1.2.4]# lsof -i udp:1701                               #检查l2tp端口
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
xl2tpd  3324 root    3u  IPv4  19295      0t0  UDP *:l2tp


     8.扫尾工作
[root@L2TP xl2tpd-1.2.4]# vim /etc/rc.local
===============在文件末尾行添加如下===============
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart
/usr/local/sbin/xl2tpd

===================结      束===================



     9.客户端验证
开启windows主机上的ipsec服务
http://file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(8).png
http://file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(9).png
http://file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(10).png
现在两个客户端都连接到vpn。 在服务端查看IP地址
[root@L2TP ~]# ifconfig
http://file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/Image(11).png
9.png
10.png
11.png
12.png


udp500、1701,TCP/UDP4500映射到外网端口上, 从外网vpn拨号提示789错误。(坐等大神来帮忙)


2015-06-26 11:33 举报
已邀请:
0

田埂上的梦

赞同来自:

问题已解决..  客户端需要修改注册表{:4_91:}
0

阿铭 管理员

赞同来自:

图文并茂,不错。
0

模范棒棒糖

赞同来自:

君涵大神 开始实战了啊。
0

田埂上的梦

赞同来自:

阿铭 发表于 2015-6-26 18:26
图文并茂,不错。

{:4_98:}谢谢铭哥
0

田埂上的梦

赞同来自:

模范棒棒糖 发表于 2015-6-26 21:56
君涵大神 开始实战了啊。

{:4_102:}好长时间没发帖了..昨天刚好公司搭建VPN了
0

言尽

赞同来自:

服务器公网IPV4地址 %any: PSK "123.com"


这里面的123.com是随便填的吗?具体是什么意思
0

田埂上的梦

赞同来自:

言尽 发表于 2016-4-21 11:15
服务器公网IPV4地址 %any: PSK "123.com"

123.com是共享密钥
0

言尽

赞同来自:

搭建ipsec VPN的网卡最低需要几块?
0

田埂上的梦

赞同来自:

言尽 发表于 2016-4-23 18:47
搭建ipsec VPN的网卡最低需要几块?

一块网卡都能搞定.  我用的是一块网卡,内网ip,映射到路由器

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: