在学习的道路上免不了需要花钱的时候。经过这两年断断续续自学,对linux有了一点初步的认识,然后在几天前买了一个月的VPS来练练手,这是在几年前我不敢想的事,但现在我做了。
经过两天的换系统,装软件,各种设置和百度,我的VPS终于稳定下来了。又用了两天时间装好了VPN服务,现在用刚连上网的VPN把这两天的经过记录下来。
其实像我这种菜鸟这两天的经过就是不断的百度,不断的实践。网上的资料太多,大多数都不是很详细,所有没有什么基础的话很难从中分辨出对自己有用的信息。期间我又耐下心学习了iptables的配置,因为VPN终于可以连上的时候却发现上不了网。
当然最终问题解决了,解决的方法是我在百度的时候找到了我正需要的。先发上链接,再看看要不要把内容COPY过来.
http://iqdutao.blog.51cto.com/2597934/1436671
Linux VPS CentOS 安装L2TP-VPN
第二层隧道协议L2TP(Layer 2 Tunneling Protocol)是一种工业标准的Internet隧道协议,它使用UDP的1701端口进行通信。L2TP本身并没有任何加密,但是我们可以使用IPSec对L2TP包进行加密。
L2TP VPN比PPTP VPN搭建复杂一些。
第一阶段
Openswan是Linux系统上IPsec的一个实现,我跟大家一样也用了Openswan
1、安装必备软件(基本应该都已默认安装)
# yum install make gcc gmp-devel bison flex lsof
make,gcc应该知道是什么吧
gmp-devel: Development tools for the GNU MP arbitrary precision library.
bison: A GNU general-purpose parser generator.
flex: A tool for creating scanners (text pattern recognizers).
看上去好像都和编译器有关
2、安装Openswan
依次输入以下命令,将Openswan 2.6.35安装在/tmp文件夹下
# cd /tmp
# wget http://www.openswan.org/download/openswan-2.6.35.tar.gz
(如果链接失效,请到官方网站openswan下载)
# tar -zxvf openswan-2.6.35.tar.gz
# cd openswan-2.6.35
# make programs install
3、配置IPSec
(1)备份配置文件
# cp /etc/ipsec.conf /etc/ipsec.conf.bak
(2)编辑配置文件
# vi /etc/ipsec.conf
查找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=YOUR.SERVER.IP.ADDRESS
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
其中一些设置的含义可以参考/etc/ipsec.d/examples/l2tp-psk.conf文件的内容。
4、设置共享密钥PSK
编辑配置文件
# vi /etc/ipsec.secrets
输入以下内容:
YOUR.SERVER.IP.ADDRESS %any: PSK “YourSharedSecret”
如:178.18.17.30 %any: PSK “123456abcdef”
(需要将YOUR.SERVER.IP.ADDRESS换成VPS的外网IP)
5、 修改/etc/sysctl.conf,开启路由功能
vi /etc/sysctl.conf
将下面两项找到:
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
改为:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
之后先让修改后的配置生效,再测试一下,
sysctl -p
service ipsec start
ipsec verify
查看系统IPSec安装和启动的正确性
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]
这样的状态就是正常的了、已经通过了验证
如果没有问题,可以直接跳过,如果有问题,请参照下面的解决方案一个一个解决
vi /etc/sysctl.conf
可以直接在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 verify
6、重启IPSec
# /etc/init.d/ipsec restart
ipsec verify
ipsec安装好后运行ipsec verify命令发现错误的解决方案
=========================================
如果迩发现这行是WARNING的话
Checking /bin/sh is not /bin/dash ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [WARNING]
因为ubtuntu和debian系统已经使用dash来代替bash脚本执行器、虽然dash更快更方便、但在某些脚本兼容性上还是不太稳定、莪们可以将ubuntu默认的脚本执行方式改回bash来执行、执行以下命令
sudo dpkg-reconfigure dash
按英文提示、选择no、就可以把dash切换成bash、再执行ipsec verify就不会出现WARNING的提示了
=========================================
Pluto listening for IKE on udp 500 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[FAILED]
Cannot execute command “lsof -i UDP:500”: No such file or directory
Pluto listening for NAT-T on udp 4500 ? ? ? ? ? ? ? ? ? ? ? ? ? [FAILED]
Cannot execute command “lsof -i UDP:4500”: No such file or directory
如果出现以上的问题、就是没安装lsof的命令啦、安装就可以了
apt-get install lsof
=========================================
checking for IPsec support in kernel ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[FAILED]
whack:Pluto is not running(no “/var/run/pluto/pluto.ctl”) ? ? ? ?[FAILED]
如果出现的是这个问题,有三个可以尝试的解决方案,因为出现这个问题的原因不是一个问题造成的。
1)修改/etc/ipsec.conf文件,加进去一句话,version 2.0。(说实话,这有可能,但是一般openswan2.6.X的版本创建ipsec.conf的时候都会自动有2.0的说明)
2)执行ipsec setup start。如果执行完之后你再去看ipsec verify的结果,FAILED选项消失了,恭喜你,你没有遇到令人厌恶的第三种情况。
解释一下出现第二种情况的原因:ipsec 如果没有启动,它是暂时不会知道自己将会使用哪种内核栈的,有三种KLIPS,netkey和no stack。选择的依据是你的ipsec.conf文件里的protostack后边的选项,如果是auto,那么首选netkey,然后是KLIPS。否则就是protostack的结果。
如果还是出现其他问题,自行google搜索解决!
以上为第一阶段,可以正常安装完成没有问题后,进行第二阶段的安装
第二阶段
1、下载编译安装
cd /usr/src
wget http://downloads.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
cd /usr/src
wget ?http://www.xelerance.com/software/xl2tpd/xl2tpd-1.2.4.tar.gz
tar zxvf xl2tpd-1.2.4.tar.gz
cd xl2tpd-1.2.4
make install
(如果链接失效,请到寻找新的连接地址进行替换下载)
2、修改相应的配置
mkdir /etc/xl2tpd
vi /etc/xl2tpd/xl2tpd.conf
内容,注意 ip range 不要和你的 lan ip 冲突。。。
[global]
ipsec saref = yes
[lns default]
ip range = 10.1.2.2-10.1.2.254
local ip = 10.1.2.1
#连接vpn后,本地获取到的虚拟vpn地址
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
3、修改配置
ppp 配置文件
vi /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
4、设置拨号用户名以及密码
vi /etc/ppp/chap-secrets
内容格式
# user ? ? ?server ? ? ?password ? ? ? ? ? ?ip
username ? ? * ? ? ?userpass ? ? ? ?*
比如
vpn * password *
===========================================
以上为第二阶段的配置
配置完成后,命令
Xl2tpd –D
启用
[root@localhost ~]# xl2tpd -D
xl2tpd[9637]: Enabling IPsec SAref processing for L2TP transport mode SAs
xl2tpd[9637]: IPsec SAref does not work with L2TP kernel mode yet, enabling forceuserspace=yes
xl2tpd[9637]: setsockopt recvref[22]: Protocol not available
xl2tpd[9637]: This binary does not support kernel L2TP.
xl2tpd[9637]: xl2tpd version xl2tpd-1.2.4 started on localhost.localdomain PID:9637
xl2tpd[9637]: Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc.
xl2tpd[9637]: Forked by Scott Balmos and David Stipp, (C) 2001
xl2tpd[9637]: Inherited by Jeff McAdams, (C) 2002
xl2tpd[9637]: Forked again by Xelerance (www.xelerance.com) (C) 2006
xl2tpd[9637]: Listening on IP address 61.187.98.31, port 1701
cat /var/log/secure
类似于这样,为正常情况
root@panshan:~# xl2tpd -D
xl2tpd[880]: Enabling IPsec SAref processing for L2TP transport mode SAs
xl2tpd[880]: IPsec SAref does not work with L2TP kernel mode yet, enabling forceuserspace=yes
xl2tpd[880]: init_network: Unable to bind socket: Address already in use. Terminating.
此问题显示为你的xl2tpd已经已经启动,不用处理
做完上面这堆步骤之后,客户端建个连接就可以验证进入vpn主机了。但是无法访问内外网。
正常启动后, vpn可以正常连接了,但是不能访问外网,需要进行第三阶段配置
第三阶段
最关键的iptables配置
在linux系统中添加以下规则
iptables -t nat -A POSTROUTING -s 192.168.7.0/24 -o eth0 -j MASQUERADE
iptables -I FORWARD -s 192.168.7.0/24 -j ACCEPT
iptables -I FORWARD -d 192.168.7.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT –reject-with icmp-host-prohibited
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 53 -j ACCEPT
iptables -A INPUT -p udp -m state –state NEW -m udp –dport 53 -j ACCEPT
iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 1194 -j ACCEPT
iptables -A INPUT -p udp -m state –state NEW -m udp –dport 1701 -j ACCEPT
iptables -A INPUT -p udp -m state –state NEW -m udp –dport 500 -j ACCEPT
iptables -A INPUT -p udp -m state –state NEW -m udp –dport 4500 -j ACCEPT
(根据本地的地址和配置分配的ip地址相应修改)
然后保存、重启iptables
Service ?iptables ?save
iptables-save
service ? iptables ? restart
然后查看iptables 看是否已经配置进去
vi /etc/sysconfig/iptables
下面filter表里,先把VPN要用到的udp端口1701,500,4500都打开。要用openvp的话,还要开1194。
另外filter表里,一定要有FORWARD规则。
#下面规则做参考啊,新手别完全照抄。
*nat
:PREROUTING ACCEPT [39:3503]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s 192.168.7.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Thu Jun 28 15:50:40 2012
# Generated by iptables-save v1.4.7 on Thu Jun 28 15:50:40 2012
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [121:13264]
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 53 -j ACCEPT
-A INPUT -p udp -m state –state NEW -m udp –dport 53 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 1194 -j ACCEPT
-A INPUT -p udp -m state –state NEW -m udp –dport 1701 -j ACCEPT
-A INPUT -p udp -m state –state NEW -m udp –dport 500 -j ACCEPT
-A INPUT -p udp -m state –state NEW -m udp –dport 4500 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -d 192.168.7.0/24 -j ACCEPT
-A FORWARD -s 192.168.7.0/24 -j ACCEPT
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT
# Completed on Thu Jun 28 15:50:40 2012
之后已经配置完成,可以用本机尝试连接
window连接前,先处理
打开 ?IPSEC services ?开始-运行-输入services.msc,然后在服务中启用“IPSEC services”
linux系统中L2TP—VPN的配置安装(二)
如果遇到其他问题,一直解决不了,并且是centos系统的,请参考安装包
一、获取安装脚本
# wget ?http://soft.kwx.gd/vpn/l2tp_centos.sh
# sh ?./l2tp_centos.sh
执行以上命令后如下图:
1、intall VPN service
全新安装L2TP VPN。
2、repaire VPN service
修复L2TP VPN 服务。
3、add VPN user
新建VPN帐号。
二、安装L2TP VPN 一键包
首次安装选择1即可。回车以后则会自动下载并编译安装。
安装完毕后,如下图。
默认帐号(VPN username)为vpn,密码(VPN password)是系统随机生成的。
三、修复L2TP VPN 一键包
若出现问题,可在运行sh ./l2tp_centos.sh后,选择2修复。建议修复完成以后重启一次VPS。
四、新建用户
若要添加VPN用户,可在运行sh ./l2tp_centos.sh后,选择3添加。
如上图。
input user name(填入VPN帐户名)。
input password(填入VPN密码)。
最后回车即可添加成功。
会显示安装成功,并且显示随机生成的用户名、密码
转载请注明:HANLEI'BLOG » linux用xl2tpd安装vpn服务的经过和经验