阿里云ecs搭建pptp vpn
时间:2017-06-10 01:06 来源:linux.it.net.cn 作者:IT
本文以centos6为例搭建
一、安装软件
yum install -y ppp pptpd
二、配置 pptpd
1. 编辑配置文件 vi /etc/pptpd.conf,将如下配置:
#localip 192.168.0.1
#remoteip 192.168.0.234-238
修改为:
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
# 以上设置的 IP 地址: localip 192.168.0.1 和 remoteip 192.168.0.2-200 分别是 vpn 的网关地址和 vpn 拨号获取地址段。可以根据需要进行调整
即将这两行第一个字符 # 去掉,取消注释,保存退出。
2.编辑 vi /etc/ppp/options.pptpd,将如下配置:
#ms-dns 10.0.0.1
#ms-dns 10.0.0.2
修改为:
ms-dns 223.5.5.5
ms-dns 223.6.6.6
# 223.5.5.5 和 223.6.6.6阿里云公共 DNS 服务地址,也可以按需配置为其它公共 DNS。
3. 设置使用 pptp 的用户名和密码命令:
vi /etc/ppp/chap-secrets
打开后只有两行,而且一个账号都没有,如下所示:
# Secrets for authentication using CHAP
# client server secret IP addresses
根据需要添加账号,每行一个。按照:“用户名 pptpd 密码 ip地址” 的格式输入,每一项之间用空格分开,例如:test pptpd 123456 (* 表示所有IP),保存并退出。
4. 设置 MTU 大小
1. $ vi /etc/ppp/ip-up
2. .....
3. [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"
4. # 这行后面增加如下内容:
5. ifconfig ppp0 mtu 1472
修改内核设置以支持数据转发
1. 编辑配置文件 vi /etc/sysctl.conf
将 net.ipv4.ip_forward=0 改成 net.ipv4.ip_forward=1
保存并退出。然后执行以下命令使修改后的参数生效
sysctl -p
2. 添加 iptables 转发规则
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
添加好转发规则后,使用如下命令保存设置并重启防火墙
/etc/init.d/iptables save
/etc/init.d/iptables restart
服务配置
-
/etc/init.d/pptpd restart
2. 设置 pptp 和 iptables 自启动:
chkconfig pptpd on
chkconfig iptables on
至此,PPTP VPN 服务端安装结束。在本地计算机"网络和共享中心",设置新的连接或网络,即可访问 VPN。
注意:阿里云安全组的配置,放行1723和gre端口,只放行1723是无法连接的,另外我的服务器iptables默认是accept的,如果是deny,需要自己添加规则
允许GRE(Generic Route Encapsulation)协议,PPTP使用GRE协议封装PPP数据包,然后封装成IP报文
放行1723端口的PPTP服务
放行状态为RELATED,ESTABLISHED的入站数据包(正常提供服务的机器上防火墙应该都已经配置了这一项)
放行VPN虚拟网络设备所在的192.168.0.0/24网段与服务器网卡eth0之间的数据包转发
为从VPN网段192.168.0.0/24转往网卡eth0的出站数据包做NAT
iptables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -o eth0 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -i eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
上述的IP段192.168.0.1/24可能需要修改成/etc/pptp.conf中你配置的localip和remoteip所在地IP段。
创建日志记录文件:(默认是没有日志记录):
pptp的配置目录位于/etc/ppp/,该目录下的ip-up和ip-down可以用来记录登录与登出信息,这两个文件不一定存在,如果不存在的话直接创建就好。
1. 建立日志目录
mkdir /var/log/pptpdlog
2. 记录登录信息
在ip-up中写入以下代码
#!/bin/sh
LOG_DIR="/var/log/pptpdlog"
curDay=`date +"%Y%m%d"`
logFile="${LOG_DIR}/pptpd${curDay}.log"
echo "##################################" >> $logFile
echo "Now User $PEERNAME is connected!!!" >> $logFile
echo "##################################" >> $logFile
echo "time: `date -d today +%F_%T`" >> $logFile
echo "clientIP: $6" >> $logFile
echo "username: $PEERNAME" >> $logFile
echo "device: $1" >> $logFile
echo "vpnIP: $4" >> $logFile
echo "assignIP: $5" >> $logFile
具体操作配置如图
3. 记录登出信息
在ip-down里写入以下代码
#!/bin/sh
LOG_DIR="/var/log/pptpdlog"
curDay=`date +"%Y%m%d"`
logFile="${LOG_DIR}/pptpd${curDay}.log"
echo "#####################################" >> $logFile
echo "Now User $PEERNAME is disconnected!!!" >> $logFile
echo "#####################################" >> $logFile
echo "time: `date -d today +%F_%T`" >> $logFile
echo "clientIP: $6" >> $logFile
echo "username: $PEERNAME" >> $logFile
echo "device: $1" >> $logFile
echo "vpnIP: $4" >> $logFile
echo "assignIP: $5" >> $logFile
echo "connect time: $CONNECT_TIME s" >> $logFile
echo "bytes sent: $BYTES_SENT B" >> $logFile
echo "bytes rcvd: $BYTES_RCVD B" >> $logFile
sum_bytes=$(($BYTES_SENT+$BYTES_RCVD))
sum=`echo "scale=2;$sum_bytes/1024/1024"|bc`
echo "bytes sum: $sum MB" >> $logFile
ave=`echo "scale=2;$sum_bytes/1024/$CONNECT_TIME"|bc`
echo "average speed: $ave KB/s" >> $logFile
4. 添加执行权限
写好之后务必确保ip-up和ip-down具有可执行权限,尤其是这两个文件本来不存在,自己后来再创建时,这两个文件会被视为纯文本,不会被执行
chmod 755 /etc/ppp/ip-*
之后就可以到/var/log/pptpdlog/下按照日期查看登录信息了
CentOS PPTP VPN客户端配置
1. 安装软件包
-
yum install -y ppp pptp pptp-setup
2. 连接 VPN 服务端
pptpsetup --create test --server IP--username 用户名 --password 密码 --encrypt --start
# IP、用户名、密码替换为VPN服务端实际配置的值
连接成功后,提示已经被分配了 192.168.0.234 的客户端地址,执行 ifconfig 可以看到一块 ppp0 的网卡:
3. 增加默认路由
-
ip route replace default dev ppp0
增加路由后查看已经可以访问外网。
常见问题
1. PPTP VPN搭建后,测试可以连接,并且网站域名可以 ping 通,但浏览器无法打开网页。
此问题一般是由于 MTU 设置不正确导致的。
可以在配置 VPN 的 Centos 服务器中执行 ifconfig ppp0 mtu 1472 进行调整。
注:上述方式设置是临时生效,如果需要长期生效,需要修改 /etc/ppp/ip-up文件,增加如下内容:
$ vi /etc/ppp/ip-up
......
[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"
# 这行后面增加
ifconfig ppp0 mtu 1472
配置后再测试已经正常:
2. 客户端成功连接上 VPN 后,获取到的地址错误:获取到的地址不是 VPN 服务端分配的地址,而是 ECS 的内网网卡地址,如图:
如果出现这种情况,假设配置的 VPN 客户端配置名称是 testvpn,可以参照如下步骤尝试处理:
1. 如下图所示,在 ppp 客户端配置文件 /etc/ppp/peers/testvpn 中手工添加 noipdefault 参数。
2. 使用如下指令重启客户端,重新连接后通常即可获取到正确的地址。
poff testvpn
pon testvpn
说明 :该参数在重启客户端的时候,可能会被服务端传递过来的参数覆盖掉,如果该参数被覆盖则需要检查下服务端的配置。
3.windows客户端无法连接时,一定要查看是不是用的pptp协议的
注:本文参考自:https://help.aliyun.com/knowledge_detail/41345.html
(责任编辑:IT)
本文以centos6为例搭建 一、安装软件 yum install -y ppp pptpd 二、配置 pptpd 1. 编辑配置文件 vi /etc/pptpd.conf,将如下配置: #localip 192.168.0.1 #remoteip 192.168.0.234-238 修改为: localip 192.168.0.1 remoteip 192.168.0.234-238,192.168.0.245 # 以上设置的 IP 地址: localip 192.168.0.1 和 remoteip 192.168.0.2-200 分别是 vpn 的网关地址和 vpn 拨号获取地址段。可以根据需要进行调整 即将这两行第一个字符 # 去掉,取消注释,保存退出。 2.编辑 vi /etc/ppp/options.pptpd,将如下配置: #ms-dns 10.0.0.1 #ms-dns 10.0.0.2 修改为: ms-dns 223.5.5.5 ms-dns 223.6.6.6 # 223.5.5.5 和 223.6.6.6阿里云公共 DNS 服务地址,也可以按需配置为其它公共 DNS。 3. 设置使用 pptp 的用户名和密码命令: vi /etc/ppp/chap-secrets 打开后只有两行,而且一个账号都没有,如下所示: # Secrets for authentication using CHAP # client server secret IP addresses 根据需要添加账号,每行一个。按照:“用户名 pptpd 密码 ip地址” 的格式输入,每一项之间用空格分开,例如:test pptpd 123456 (* 表示所有IP),保存并退出。 4. 设置 MTU 大小 1. $ vi /etc/ppp/ip-up 2. ..... 3. [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@" 4. # 这行后面增加如下内容: 5. ifconfig ppp0 mtu 1472
修改内核设置以支持数据转发1. 编辑配置文件 vi /etc/sysctl.conf 将 net.ipv4.ip_forward=0 改成 net.ipv4.ip_forward=1 保存并退出。然后执行以下命令使修改后的参数生效 sysctl -p 2. 添加 iptables 转发规则 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE 添加好转发规则后,使用如下命令保存设置并重启防火墙 /etc/init.d/iptables save /etc/init.d/iptables restart 服务配置
2. 设置 pptp 和 iptables 自启动: chkconfig pptpd on chkconfig iptables on 至此,PPTP VPN 服务端安装结束。在本地计算机"网络和共享中心",设置新的连接或网络,即可访问 VPN。 注意:阿里云安全组的配置,放行1723和gre端口,只放行1723是无法连接的,另外我的服务器iptables默认是accept的,如果是deny,需要自己添加规则
允许GRE(Generic Route Encapsulation)协议,PPTP使用GRE协议封装PPP数据包,然后封装成IP报文
iptables -A INPUT -p gre -j ACCEPT 创建日志记录文件:(默认是没有日志记录): pptp的配置目录位于/etc/ppp/,该目录下的ip-up和ip-down可以用来记录登录与登出信息,这两个文件不一定存在,如果不存在的话直接创建就好。 1. 建立日志目录 mkdir /var/log/pptpdlog 2. 记录登录信息 在ip-up中写入以下代码 #!/bin/sh LOG_DIR="/var/log/pptpdlog" curDay=`date +"%Y%m%d"` logFile="${LOG_DIR}/pptpd${curDay}.log" echo "##################################" >> $logFile echo "Now User $PEERNAME is connected!!!" >> $logFile echo "##################################" >> $logFile echo "time: `date -d today +%F_%T`" >> $logFile echo "clientIP: $6" >> $logFile echo "username: $PEERNAME" >> $logFile echo "device: $1" >> $logFile echo "vpnIP: $4" >> $logFile echo "assignIP: $5" >> $logFile 具体操作配置如图
3. 记录登出信息 在ip-down里写入以下代码 #!/bin/sh LOG_DIR="/var/log/pptpdlog" curDay=`date +"%Y%m%d"` logFile="${LOG_DIR}/pptpd${curDay}.log" echo "#####################################" >> $logFile echo "Now User $PEERNAME is disconnected!!!" >> $logFile echo "#####################################" >> $logFile echo "time: `date -d today +%F_%T`" >> $logFile echo "clientIP: $6" >> $logFile echo "username: $PEERNAME" >> $logFile echo "device: $1" >> $logFile echo "vpnIP: $4" >> $logFile echo "assignIP: $5" >> $logFile echo "connect time: $CONNECT_TIME s" >> $logFile echo "bytes sent: $BYTES_SENT B" >> $logFile echo "bytes rcvd: $BYTES_RCVD B" >> $logFile sum_bytes=$(($BYTES_SENT+$BYTES_RCVD)) sum=`echo "scale=2;$sum_bytes/1024/1024"|bc` echo "bytes sum: $sum MB" >> $logFile ave=`echo "scale=2;$sum_bytes/1024/$CONNECT_TIME"|bc` echo "average speed: $ave KB/s" >> $logFile
4. 添加执行权限 写好之后务必确保ip-up和ip-down具有可执行权限,尤其是这两个文件本来不存在,自己后来再创建时,这两个文件会被视为纯文本,不会被执行 chmod 755 /etc/ppp/ip-* 之后就可以到/var/log/pptpdlog/下按照日期查看登录信息了 CentOS PPTP VPN客户端配置 1. 安装软件包
2. 连接 VPN 服务端 pptpsetup --create test --server IP--username 用户名 --password 密码 --encrypt --start # IP、用户名、密码替换为VPN服务端实际配置的值
连接成功后,提示已经被分配了 192.168.0.234 的客户端地址,执行 ifconfig 可以看到一块 ppp0 的网卡:
3. 增加默认路由
增加路由后查看已经可以访问外网。 常见问题1. PPTP VPN搭建后,测试可以连接,并且网站域名可以 ping 通,但浏览器无法打开网页。
此问题一般是由于 MTU 设置不正确导致的。 可以在配置 VPN 的 Centos 服务器中执行 ifconfig ppp0 mtu 1472 进行调整。
注:上述方式设置是临时生效,如果需要长期生效,需要修改 /etc/ppp/ip-up文件,增加如下内容: $ vi /etc/ppp/ip-up ...... [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@" # 这行后面增加 ifconfig ppp0 mtu 1472 配置后再测试已经正常:
2. 客户端成功连接上 VPN 后,获取到的地址错误:获取到的地址不是 VPN 服务端分配的地址,而是 ECS 的内网网卡地址,如图:
如果出现这种情况,假设配置的 VPN 客户端配置名称是 testvpn,可以参照如下步骤尝试处理: 1. 如下图所示,在 ppp 客户端配置文件 /etc/ppp/peers/testvpn 中手工添加 noipdefault 参数。
2. 使用如下指令重启客户端,重新连接后通常即可获取到正确的地址。 poff testvpn pon testvpn 说明 :该参数在重启客户端的时候,可能会被服务端传递过来的参数覆盖掉,如果该参数被覆盖则需要检查下服务端的配置。 3.windows客户端无法连接时,一定要查看是不是用的pptp协议的
注:本文参考自:https://help.aliyun.com/knowledge_detail/41345.html (责任编辑:IT) |