让你的Debian同时支持pptp和12tp服务(buyVM的openVZ测试成功)

让你的Debian服务器同时支持pptp和12tp服务(buyVM的openVZ测试成功)


前提条件,服务器开启了pptp服务。
如果没有开启pptp请参见文章 《BuyVM Debian系统中安装PPTP VPN (OpenVZ)》 网址http://www.xiejiwu.org/article.asp?id=114

第一步:如果debian系统是新安装的,请升级系统
# apt-get update
# apt-get upgrade
这一步很重要,否则可能期间会产生不可预知的错误!
如果debian没有安装sudo,你还需要执行以下的命令
# apt-get install sudo
如果你对 vi 命令掌握不好,建议安装nano
# apt-get install nano

以下使用的nano命令和vi命令是一个效果,看你喜欢哪个就用哪个!!

第二步:安装 IPSec
IPSec 会对 IP 数据包进行加密和验证。这意味着你的电脑/移动设备与服务器之间传输的数据无法被解密、也不能被伪造。
可以用 openswan 来跑 IPSec。
# sudo aptitude install openswan
目前自动安装后显示版本为2.6.28
可以通过 命令 # ipsec --version 查看
如显示如下
Linux Openswan U2.6.28/K(no kernel code presently loaded)
See `ipsec --copyright' for copyright information.


第三步:用文字编辑器打开 /etc/ipsec.conf
# nano /etc/ipsec.conf

修改成如下内容:
version 2.0
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=YOUR.SERVER.IP.ADDRESS
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any


按ctrl+x键保存数据
提示是否保存 按Y 然后确认即可

这里要注意 倒第四行代码中 YOUR.SERVER.IP.ADDRESS 一定要换成你自己的服务器IP.

这个文件如果是直接拷贝网上的,有可能会出现错误。下面会第七步讲解,注意!


第四步:修改 /etc/ipsec.secrets文件
# nano /etc/ipsec.secrets
修改成如下内容:
YOUR.SERVER.IP.ADDRESS %any: PSK “YourSharedSecret”
注意把your.server.ip.address 替换成你的服务器的IP;把yoursharesecret替换成你自己设定的公共密匙!

12.34.56.78 %any: PSK "ipv6vpn"
注意中间空格,12.34.56.78是服务器IP地址,ipv6vpn为密钥
按ctrl+x键保存数据  按Y 然后确认即可


第五步:挨着运行执行以下的命令

for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done


第六步:检查一下 IPSec 能否正常工作

# sudo ipsec verify
结果中你会看到「Opportunistic Encryption Support」被禁用了,其他项 OK 就代表检测通过了!


第七步:重启 openswan
# sudo /etc/init.d/ipsec restart

有时候会出现类似这样的错误
1.failed to start openswan IKE daemon - the following error occured:
2.can not load config '/etc/ipsec.conf': /etc/ipsec.conf:50: syntax error, unexpected KEYWORD, expecting $end [xxxxxxx]
我就与遇见这个错误折磨了3天,这是因为拷贝过去有些代码文本编码有错误。
在第三步配置vi /etc/ipsec.conf文件的时候,每句语法前面需要tab缩进,然后保留空格,否则可能出现启动ipsec错误。
解决办法把前面空格全部删除,然后按一次tab键缩进。
还有中划线(-),可以删除后自己写入一次,也行因为这个字符的原因。
conn L2TP-PSK-NAT 和 conn L2TP-PSK-noNAT 前面可以没空格。


第八步:安装 L2TP / 常用的 L2TP 后台软件包是 xl2tpd

# sudo aptitude install xl2tpd


第九步:修改/etc/xl2tpd/xl2tpd.conf 文件

# nano /etc/xl2tpd/xl2tpd.conf
修改成如下的内容:
[global]
ipsec saref = yes
[lns default]
ip range = 10.10.22.2-10.10.22.255
local ip = 10.10.22.1
;require chap = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
按ctrl+x键保存数据

这里
ip range = 10.10.22.2-10.10.22.255
local ip = 10.10.22.1
可以换成你自己的IP段,后面会用到IP段,要记住。


第十步:安装 ppp (这是用来管理 VPN 用户的)

# apt-get install ppp
因为我们已经安装pptp服务了,这个可以省略。
Debian的pptp安装服务参见文章:BuyVM Debian系统中安装PPTP VPN (OpenVZ) 网址http://www.xiejiwu.org/article.asp?id=114


第十一步:检查一下 /etc/ppp 看下ppp目录下面有没有options.xl2tpd这个文件
# ls /etc/ppp
如果没有options.xl2tpd 这个文件,建一个
# nano /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

注意 ms-dns 两行我填的是Google DNS。
如果你想用其他的 DNS 服务器(例如Open Dns的 208.67.222.222/208.67.220.220),请自行更换。
按ctrl+x键保存数据


第十二步:添加一个VPN 用户。用文字编辑器打开 /etc/ppp/chap-secrets

# nano /etc/ppp/chap-secrets
打开文件之后你会看到如下代码
# user server password ip
这段代码是被#注释起来了的,意思就是按着这个顺序设置账号的相关信息.
user是账户名称;server是l2tpd;password是设置你想要的密码;ip可以设置成*,表示任何IP都可以连接。
如下设置:
test l2tpd 5211314abc *
设置完成后保存退出
因为我们开启了pptp,同时想让这个账户有l2tp权限。
那么我们可以这样写。
test * 5211314abc *
这样这个test账户既能使用pptp也能使用l2tp啦。


第十三步:重启 xl2tpd

# sudo /etc/init.d/xl2tpd restart


第十四步:设置 iptables 的数据包转发

# iptables –table nat –append POSTROUTING –jump MASQUERADE
# echo 1 > /proc/sys/net/ipv4/ip_forward

这里要注意,如果我们开启了pptp后,再执行上面第一行代码
有时候会提示:iptables: No chain/target/match by that name.

这样在测试拨号的时候,发现pptp没有问题,可以拨号成功,也可以访问网站。

但是在测试12tp的时候,能拨号成功,但在win7或win2008拨号面板上显示ipv4无访问网络权限之类的话。
访问服务器的IP可以访问网络服务,而别的网站不行,这说明iptables转发没有成功。
这样就不要执行iptables –table nat –append POSTROUTING –jump MASQUERADE这句话了。

之前设置pptp的时候,做过转发文件,所以这里我们打开当时做pptp时候做的转发文件/etc/pptpdfirewall.sh.
命令为: vi /etc/pptpdfirewall.sh
这时候你会看见上次做pptp服务的时候已经添加了2行代码。
代码是我们上次做pptp服务时候写的,应该如下(192.168.46.0/24为pptp服务使用网段,12.34.56.78为服务器IP):
#pptp
sudo /sbin/iptables -t nat -A POSTROUTING -s 192.168.46.0/24 -j SNAT --to-source  12.34.56.78
sudo /sbin/iptables -A FORWARD -s 192.168.46.0/24 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS --set-mss 1356

好,现在在这2行代码上面,添加如下代码。
#l2tp
sudo /sbin/iptables -t nat -A POSTROUTING -s 10.10.22.0/24 -j SNAT --to-source 12.34.56.78
sudo /sbin/iptables -A INPUT -p udp -m state --state NEW -m udp --dport 1701 -j ACCEPT
sudo /sbin/iptables -A INPUT -p udp -m state --state NEW -m udp --dport 500 -j ACCEPT
sudo /sbin/iptables -A INPUT -p udp -m state --state NEW -m udp --dport 4500 -j ACCEPT

sudo /sbin/iptables -I FORWARD -s 10.10.22.0/24 -j ACCEPT
sudo /sbin/iptables -I FORWARD -d 10.10.22.0/24 -j ACCEPT

这里注意的是,这里10.10.22.0/24是刚才第九步 /etc/xl2tpd/xl2tpd.conf 里设置的IP段
如果你设置的不一样,请更换成你自己的。12.34.56.78同样必须换成你的服务器的IP。

最终代码显示如下:
#l2tp
sudo /sbin/iptables -t nat -A POSTROUTING -s 10.10.22.0/24 -j SNAT --to-source 12.34.56.78
sudo /sbin/iptables -A INPUT -p udp -m state --state NEW -m udp --dport 1701 -j ACCEPT
sudo /sbin/iptables -A INPUT -p udp -m state --state NEW -m udp --dport 500 -j ACCEPT
sudo /sbin/iptables -A INPUT -p udp -m state --state NEW -m udp --dport 4500 -j ACCEPT

sudo /sbin/iptables -I FORWARD -s 10.10.22.0/24 -j ACCEPT
sudo /sbin/iptables -I FORWARD -d 10.10.22.0/24 -j ACCEPT

#pptp
sudo /sbin/iptables -t nat -A POSTROUTING -s 192.168.46.0/24 -j SNAT --to-source 12.34.56.78
sudo /sbin/iptables -A FORWARD -s 192.168.46.0/24 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS --set-mss 1356

按退出,然后按:wq!保存以上命令,这步就结束了。


原则上来说,上面步骤应该保持在服务器启动文件里
因为在设置 pptp服务时候,我们已经将sh /etc/pptpdfirewall.sh 代码写过了。
所以这里不用重复了,如果你想检测的话,执行如下命令。
输入命令
chmod 755 /etc/pptpdfirewall.sh
再输入
vi /etc/init.d/rc.local
看文件的最后一行上有没有如下代码。
sh /etc/pptpdfirewall.sh
如果有,那就OK了,如果没有,加进去。



第十五步:为了避免openswan 在服务器重启后无法正常自动,我们可以修改 /etc/rc.local 文件

# nano /etc/rc.local
加入以下的内容:
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
保存退出!

然后 执行命令reboot 重启VPS。
开始测试VPN吧。这样的话,你的服务器就同时兼容pptp和l2tp拨号了。

如果重启后用不了

编辑/etc/rc.local文件
把第一行改成
#!/bin/bash
然后去掉exit 0那行就行了
这个是Debian启动脚本的问题



++++++++++++++++++++++++

搭建IPv6的L2TP VPN
http://willings.me/article/ipv6-l2tp-vpn/

可以通过命令检测这里转发配置是否正确了。

iptables --version //这个命令可以查看iptables版本。

iptables -t nat -L //这个命令可以查看转发都有那些。

如我测试显示的结果如下:
# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       all  --  10.10.22.0/24        anywhere            to:12.34.56.78   //12.34.56.78是设置的服务器的IP
SNAT       all  --  192.168.46.0/24      anywhere            to:12.34.56.78   //12.34.56.78是设置的服务器的IP

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

看到有2个IP段,一个为pptp的 192.168.46.0/24 ,一个为12tp的10.10.22.0/24 ,这样转发就成功啦。


参考文章如下:
http://www.viful.com/in-the-vps-debian-build-on-the-l2tp-notes.html?replytocom=6
http://jiangningguta.blog.163.com/blog/static/200290301201221341759219/
http://blog.c1gstudio.com/archives/1597


++++++++++++++++

使用VPNCUP等第三方VPN服务已经有一段时间了,但是除了openvpn以外,很少有支持IPv6的服务。可以用VPS搭建一个支持IPv6的VPN,一方面可以break the wall,另一方面也可以摆脱学校的上网流量限制。选择L2TP的另一个原因是:相对OPENVPN比较节省VPS端资源,毕竟是采用的廉价VPS。

分享下整个过程,vps是使用的Enzu的384M RAM版本,在LA机房IPv6的ping6值只有200左右,IPv4的ping值国内大多在250左右,已经很给力了。

1. 下载xl2tpd-1.2.4-ipv6.tar.gz

L2TP一般都采用xl2tpd来处理,貌似直到最新版本,仍然没有官方支持IPv6的版本出现;在这里感谢下寒山远水分享的diff,基于xl2tpd-1.2.4版本,整理了下patch之后的xl2tpd-1.2.4-ipv6.tar.gz,方便大家下载。

2. 解压xl2tpd-1.2.4-ipv6.tar.gz,make,install。

可能会出现找不到pcap.h等问题,可以“apt-get install libpcap0.8-dev”
pcap包对l2tp基本无影响,可以安全忽略

默认config,install之后的目录是在/usr/local/sbin/xl2tpd

3. 处理xl2tpd的配置

cd /etc/ppp/(如果没有可以sudo apt-get install ppp)
sudo vi options.xl2tpd
推荐一份测试可用的配置,详细配置内容参考http://poptop.sourceforge.net/dox/options.pptpd.txt
noipx
mru 1500
mtu 1420
nodefaultroute
ms-dns 8.8.8.8
ms-wins 8.8.8.8
lcp-echo-interval 30
lcp-echo-failure 10
noproxyarp
nobsdcomp
nodeflate


sudo mkdir /etc/xl2tpd
sudo vi xl2tpd.conf
简单推荐一份可用的配置,详细内容参考http://linux.die.net/man/5/xl2tpd.conf
[global]
access control = yes
[lns vps]
ppp debug = no
pppoptfile = /etc/ppp/options.xl2tpd
require pap = no
assign ip = yes
hostname = vps
ip range = 192.168.0.100-192.168.0.254
local ip = 192.168.0.1
challenge = no
lac = 0.0.0.0-255.255.255.255
require authentication = yes


4. 可能出现的错误
xl2tpd[748]: setsockopt recvref[22]: Protocol not available
xl2tpd[748]: This binary does not support kernel L2TP.
xl2tpd[748]: open_controlfd: Unable to open /var/run/xl2tpd/l2tp-control for reading.


前两个错误可以忽略(已证实),第三个错误很显然,
mkdir /var/run/xl2tpd

5. iptables转发

以上应该已经可以使用ipv6连接到l2tp的vpn,但不能访问网络。执行下面:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward


6. 自动运行

我用的VPS同时在做Webserver,所以不太倾向于开机自启动l2tp服务。所以把一些bash都放在了bash文件中,手动执行吧。
#!/bin/bash
mkdir /var/run/xl2tpd
echo "" > /var/run/xl2tpd/l2tp-control

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
/usr/local/sbin/xl2tpd

+++++++++++++++++

让PPTPD提供IPV6支持

http://page.renren.com/601016267/note/792890466
首先请安装pptpd软件,可以参看我原来的日志:【F*ck G*F*W】CentOS一键安装PPTPD VPN。安装完以后,VPN可以使用了,但是不支持ipv6,如果要增加ipv6支持的话,需要做以下操作:

1、添加ipv6 forward

vim /etc/sysctl.conf在里面添加一行:net.ipv6.conf.all.forwarding = 12、开启PPP的IPV6支持

vim /etc/ppp/options.pptd在里面添加一行:ipv6 ,ipv6后面的那个逗号在man doc里面是这么解释的: ipv6 ,,所以必须要这么写。

3、安装radvd

radvd的全称是The router advertisement daemon,就是拿来给ppp0的ipv6做route的。yum安装之。然后将ipv6-up和ipv6-down的脚本copy到 /etc/ppp,如下指令:

cp /usr/share/doc/ppp-2.4.4/scripts/ipv6-up.sample /etc/ppp/ipv6-upcp /usr/share/doc/ppp-2.4.4/scripts/ipv6-down.sample /etc/ppp/ipv6-downchmod +x /etc/ppp/ipv6-upchmod +x /etc/ppp/ipv6-down注意:ipv6-up和ipv6-down一定要可执行。

修改/etc/ppp/options.pptpd,添加:

connect /etc/ppp/ipv6-updisconnect /etc/ppp/ipv6-down新建或编写文件/etc/radvd.conf-ppp0,为:

interface ppp0{        AdvSendAdvert on;        MinRtrAdvInterval 30;        MaxRtrAdvInterval 100;        UnicastOnly on;        prefix xxxx:xxxx:xxxx:xxxx::/64        {                AdvOnLink on;                AdvAutonomous on;                AdvRouterAddr off;        };};此处xxxx:xxxx:xxxx:xxxx::/64依照你的IPV6地址更改。

此时可以执行:service pptpd restart,就配置完成了。

支持IPV6的VPN对于现在CERNET2环境下面的大学生是很好用的,比如在复旦内网是只能免费上CERNET2而不能上CERNET的。



[本日志由 Aimeko 于 2013-03-24 02:40 PM 更新]
上一篇: Windows环境下制作tar.gz压缩包的方法
下一篇: debian安装超省资源的桌面环境
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 2827 | 引用: 0 | 查看次数: 86015
Nilda[2017-11-29 07:59 PM | | Mail To:nildalambe@gmail.com | 103.79.141.156 | del | 通过审核 | 回复回复]
2828#
[此评论正在审核中,只有博主及评论作者可见]
Carmine[2017-11-15 00:56 AM | | Mail To:carminemandalis@aol.com | 103.27.238.252 | del | 通过审核 | 回复回复]
2827#
[此评论正在审核中,只有博主及评论作者可见]
Lyndon[2017-10-28 10:28 AM | | Mail To:lyndonsigmon@freenet.de | 103.27.238.252 | del | 通过审核 | 回复回复]
2826#
[此评论正在审核中,只有博主及评论作者可见]
Ronda[2017-10-26 05:46 AM | | Mail To:rondahaenke@aol.com | 128.199.191.123 | del | 通过审核 | 回复回复]
2825#
[此评论正在审核中,只有博主及评论作者可见]
Sheri[2017-10-20 11:23 AM | | Mail To:sheriavalos@aol.com | 213.254.113.83 | del | 通过审核 | 回复回复]
2824#
[此评论正在审核中,只有博主及评论作者可见]
Gracie[2017-10-20 03:55 AM | | Mail To:graciebrumfield@gmail.com | 165.231.52.232 | del | 通过审核 | 回复回复]
2823#
[此评论正在审核中,只有博主及评论作者可见]
Gay[2017-10-18 05:36 AM | | Mail To:gayhiggins@gmail.com | 27.130.160.239 | del | 通过审核 | 回复回复]
2822#
[此评论正在审核中,只有博主及评论作者可见]
Dewey[2017-10-08 02:15 PM | | Mail To:dewey.tauchert@animail.net | 139.59.125.77 | del | 通过审核 | 回复回复]
2821#
[此评论正在审核中,只有博主及评论作者可见]
Mona[2017-10-05 08:44 PM | | Mail To:monalyng@bigstring.com | 46.17.99.143 | del | 通过审核 | 回复回复]
2820#
[此评论正在审核中,只有博主及评论作者可见]
Shelton[2017-09-22 11:08 AM | | Mail To:sheltonstookey@gmail.com | 198.46.154.184 | del | 通过审核 | 回复回复]
2819#
[此评论正在审核中,只有博主及评论作者可见]
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭