标签汇整: VPN
Win7导入证书后SSTP依然提示0x800B0109
Linux下查看pptpd等VPN拨入日志的方法
使用pptpd和xl2tpd搭建VPN之后,会发现在/var/log下并没有详细的日志,在syslog中虽然有IP记录和拨入时间,但却没有帐户和连接等信息,当需要查看当前连接的用户,或者之前的使用日志则无从查起。
之前的文章中介绍过利用shell脚本对VPN拨入的PPP连接进行限速,原理是利用ppp拨入时会加载ip-up,事实上在ppp断开时也会加载ip-down。参考pptpd帮助可以得知其中可以使用的参数。因此可以用如下方法:
在ip-up结尾添加
1 2 3 4 5 6 7 8 9 |
echo "##################################" >> /var/log/pptpd.log echo "Now User $PEERNAME is connected!!!" >> /var/log/pptpd.log echo "##################################" >> /var/log/pptpd.log echo "time: `date -d today +%F_%T`" >> /var/log/pptpd.log echo "clientIP: $6" >> /var/log/pptpd.log echo "username: $PEERNAME" >> /var/log/pptpd.log echo "device: $1" >> /var/log/pptpd.log echo "vpnIP: $4" >> /var/log/pptpd.log echo "assignIP: $5" >> /var/log/pptpd.log |
在ip-down结尾添加
1 2 3 4 5 6 7 8 9 10 11 12 |
echo "#####################################" >> /var/log/pptpd.log echo "Now User $PEERNAME is disconnected!!!" >> /var/log/pptpd.log echo "#####################################" >> /var/log/pptpd.log echo "time: `date -d today +%F_%T`" >> /var/log/pptpd.log echo "clientIP: $6" >> /var/log/pptpd.log echo "username: $PEERNAME" >> /var/log/pptpd.log echo "device: $1" >> /var/log/pptpd.log echo "vpnIP: $4" >> /var/log/pptpd.log echo "assignIP: $5" >> /var/log/pptpd.log echo "connect time: $CONNECT_TIME s" >> /var/log/pptpd.log echo "bytes sent: $BYTES_SENT B" >> /var/log/pptpd.log echo "bytes rcvd: $BYTES_RCVD B" >> /var/log/pptpd.log |
之后当连接拨入和断开时则写入日志,如果担心日志过大可以在crontab写一个自动清理脚本即可。
======
kujou_rin
连接VPN后自动区分国内国外流量的方法
大陆的网友常常遇到这样的问题,连接VPN后,会遇到国内网站访问变慢问题。这也是全局VPN的一大缺陷,如何解决这个问题呢。
之前的文章讲过如何设置路由,那么我们可以用路由区分国内和国外流量,从而实现目的地不同走不同网络的效果。
方法如下:
1,下载以下附件
pre_created_for_win
2,解压,右键管理员身份运行vpnup.bat。
3,连接VPN
注意,以上方案适用与中国大陆翻X的网友,重启后可能需要重新运行bat进行设置。
相关文章,路由表的原理和基本配置方法:
https://lilith.pro/gijyutsu/1930
======
kujou_rin
Ubuntu搭建PPTP/L2TP类型VPN服务器
在Ubuntu下搭建VPN服务器,我们分别搭建PPTP和L2TP两种类型。
首先我们搭建PPTP服务器。
下载安装pptpd:
1 2 |
sudo apt-get update sudo apt-get install pptpd |
接下来修改配置脚本,首先在/etc/ppp/options中配置DNS。
将以下两行的注释符号删除并改为你需要的外网DNS:
1 2 |
ms-dns 8.8.8.8 ms-dns 8.8.4.4 |
然后修改pptp配置文件/etc/ppp/pptpd-options,除注释行外的内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 proxyarp nodefaultroute lock nobsdcomp novj novjccomp nologfd |
以及另一个用于pptp分配ip的配置文件/etc/pptpd.conf,在该文件结尾加入:
1 2 |
localip 192.168.8.1 remoteip 192.168.8.2-180 |
给pptp连接分配的内部ip地址段请根据需要填写。
接下来打开路由转发功能,在/etc/sysctl.conf中找到以下内容将数值改为1:
net.ipv4.ip_forward=1
保存后运行命令生效:
sysctl -p
修改iptable规则NAT转发以及设置MTU
1 2 |
iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -o eth0 -j MASQUERADE iptables -I FORWARD -s 192.168.8.0/24 -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356 |
以上两行重启后会失效,很多人的做法是将其保存为iptable rules添加到pre-up中
我的做法比较简单,直接将这两行写入/etc/rc.local结尾(exit之前)。
(注意:eth0是你的公网网卡名称,请通过ifconfig确认)
然后在/etc/ppp/chap-secrets中添加用户和密码。
格式为[用户名\t连接类型\t密码\t用户IP],例如:
1 |
test * test * |
使用/etc/init.d/pptpd restart重启pptpd服务。
至此pptp类型VPN搭建完毕。
接下来搭建L2TP类型VPN。
因为L2TP需要通过IPSec加密,同样我们下载安装需要的组建服务:
1 2 3 |
sudo apt-get update sudo apt-get install openswan sudo apt-get install xl2tpd |
然后修改配置文件/etc/ipsec.conf,除注释行外的内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
version 2.0 config setup dumpdir=/var/run/pluto/ nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10 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=88.88.88.88 leftprotoport=17/1701 right=%any rightprotoport=17/%any dpddelay=10 dpdtimeout=90 dpdaction=clear |
left处请填写您本服务器的IP位址!
接下来修改/etc/xl2tpd/xl2tpd.conf,除注释行外的内容如下:
1 2 3 4 5 6 7 8 9 10 11 |
[global] ipsec saref = yes [lns default] ip range = 192.168.8.181-192.168.8.254 local ip = 192.168.8.1 length bit = yes require chap = yes refuse pap = yes require authentication = yes ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd |
ip range处请填写您需要给l2tp连接分配的内部ip网段。
再修改/etc/ppp/options.xl2tpd,如果没有可以新建,内容如下:
1 2 3 4 5 6 7 8 9 10 |
require-mschap-v2 ms-dns 8.8.8.8 ms-dns 8.8.4.4 auth crtscts hide-password name l2tpd proxyarp lcp-echo-interval 30 lcp-echo-failure 4 |
DNS处可设置您需要分配的DNS地址。
再修改/etc/ipsec.secrets文件设置默认共享密钥:
1 |
88.88.88.88 %any: PSK "kujourin" |
前面为本服务器IP地址,引号内的为您要设置的密钥
修改网络策略使ipsec能正常运行:
1 2 3 4 5 |
for each in /proc/sys/net/ipv4/conf/* do echo 0 > $each/accept_redirects echo 0 > $each/send_redirects done |
顺便也加入到/etc/rc.local中(exit之前)。
以上配置全部完毕后,可以通过ipsec verify命令检测ipsec运行是否正常。
如果出现Checking for IPsec support in kernel [FAILED],您可能未启动ipsec服务,通过/etc/init.d/ipsec start启动。
如果出现NETKEY: Testing XFRM related proc values [FAILED],您可能未修改网络策略。
如果出现Pluto listening for IKE on udp 500 [FAILED],您可能需要安装apt-get install lsof。
如果没有出现[FAILED]表示运行正常。
Ubuntu使用apt-get安装openswan一定会出现Two or more interfaces found, checking IP forwarding [FAILED]。
而且客户端无法连接,且在/var/log/auth日志中出现
ERROR: netlink XFRM_MSG_DELPOLICY response for flow eroute_connection delete included errno 2: No such file or directory
那么原因应该是apt-get到的openswan版本并不能在该Ubuntu上运行,建议去openswan的官网下载2.6.34版本手动编译安装。
或在此下载源码:ftp://ro:[email protected]/openswan_lilith.pro.tar.gz
(这实在非常恶心,因为源码编译安装不是谁都能完成的,注意必须把源码解压在/usr/src下并apt-get install libgmp3-dev,以及bison,flex等然后再编译安装)
L2TP将和PPTP一样使用/etc/ppp/chap-secrets作为帐户密码文件。
重启所有服务:
1 2 3 |
/etc/init.d/pptpd restart /etc/init.d/xl2tpd restart /etc/init.d/ipsec restart |
大功告成!
======
kujou_rin
利用shell脚本对VPN拨入的PPP连接进行限速
在Linux下使用xl2tpd或pptpd架设VPN服务后,如果需要对拨入的用户进行限速可以用shell脚本实现。笔者使用tc进行限速,该命令一般默认于Linux中。Linux的VPN在每一个用户拨入后,会建立一个名为ppp+数字编号的连接并加载 /etc/ppp/ip-up 脚本,因此我们可以把限速的脚本写在这个文件里,每次ppp连接建立执行脚本为新连接应用限速规则。
具体方法是在ip-up的文件末尾加入如下几行:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
down=400kbps upload=400kbps iprange=192.168.8.0/24 #down /sbin/tc qdisc del dev $1 root /sbin/tc qdisc add dev $1 root handle 2:0 htb /sbin/tc class add dev $1 parent 2:1 classid 2:10 htb rate $down /sbin/tc class add dev $1 parent 2:2 classid 2:11 htb rate 1024kbps /sbin/tc qdisc add dev $1 parent 2:10 handle 1: sfq perturb 1 /sbin/tc filter add dev $1 protocol ip parent 2:0 u32 match ip dst $iprange flowid 2:10 #upload /sbin/tc qdisc add dev $1 handle ffff: ingress /sbin/tc filter add dev $1 parent ffff: protocol ip u32 match ip dst $iprange police rate $upload burst 100k drop flowid 2:11 |
其中down为下行速率,upload为上行速率,这里的400就是400k/s,iprange是你为拨入用户分配的ip位址,该位址以外的ip将不受限速规则影响。以上方式笔者在Ubuntu测试通过。
======
kujou_rin
XP系统连线VPN后修改DNS优先级的方法
XP系统及更早版本的Windows在连线VPN后仍然会使用本地DNS进行解析,这使得翻越G*F*W的用户在使用VPN后仍然出现DNS被劫持的现象。因此需要修改DNS优先级,优先使用VPN连接所分配的DNS,修改方法如下:
开始-运行-regedit,开启注册表编辑器。
找到这里“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage”并在右侧修改“Bind”键值。
在键值表内会发现一行“\Device\NdisWanIp”写在最后,用复制粘贴将其移动到最上面第一行,保存退出。
当然也可以手动指定国外DNS如8.8.8.8和8.8.4.4来解决优先级问题。