原文地址: http://blog.csdn.net/johnnycode/article/details/45543157
最近开发移动项目,数据库服务是架设在电信服务器上,可怜我的联通网络本地调试直接x碎了一地!!
度娘相关资料后,最终决定在阿里云ECS上架设VPN作为跳板来访问电信服务器!
一.原理
1.阿里云ECS上架设VPN.
2.本地连接使用VPN拨号到阿里云ECS.
3.使用阿里云ECS网络访问电信服务器.
使用VPN前效果
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2505 ttl=115 time=257.393 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2506 ttl=115 time=254.470 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2507 ttl=115 time=254.939 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2508 ttl=115 time=247.348 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2509 ttl=115 time=263.706 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2510 ttl=115 time=246.666 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2511 ttl=115 time=245.548 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2512 ttl=115 time=243.927 ms
使用VPN后效果
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2834 ttl=115 time=40.660 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2835 ttl=115 time=41.702 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2836 ttl=115 time=41.329 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2837 ttl=115 time=143.046 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2838 ttl=115 time=42.002 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2839 ttl=115 time=41.551 ms 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2840 ttl=115 time=42.558 ms
效果还是相当明显地,使用前平均Ping 250ms 使用后平均Ping 40ms !!!
二.架设VPN
1.安装 ppp pptpd iptables
ppp 数据链路层协议
pptpd VPN服务类型之一
iptables 防火墙,用来消息转发
$ sudo yum install ppp pptpd iptables
安装后版本信息
$ lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch Distributor ID: CentOS Description: CentOS release 6.6 (Final) Release: 6.6 Codename: Final $ pptpd --version pptpd v1.4.0 $ iptables --version iptables v1.4.7
2.配置 ppp DNS信息
a.编辑 options.pptpd 配置文件
$ sudo vim /etc/ppp/options.pptpd
b.找到66和67行进行修改
#ms-dns 10.0.0.1 #ms-dns 10.0.0.2
c.配置后结果如下:
ms-dns 8.8.8.8 ms-dns 8.8.4.4
3.配置 ppp VPN账号信息
a.编辑 chap-secrets 配置文件,这个文件默认只有两行注释,在注释下配置VPN账号信息
$ sudo vim /etc/ppp/chap-secrets
b.设置规则为 VPN账号 服务类型 VPN密码 IP,若IP为*则代表所有IP都可以使用该账号密码,配置后结果如下:
# Secrets for authentication using CHAP # client server secret IP addresses wangjijun pptpd wangjijun *
本例中账号密码都为 wangjijun
4.配置 pptpd
a.编辑 options.pptpd 配置文件
$ sudo vim /etc/pptpd.conf
b.修改如下内容,其实就是将注释配置项取消注释即可,这里配置地址很是纠结,其实个人理解为DHCP,跟服务器实际网卡无任何关系!
localip 192.168.0.1 remoteip 192.168.0.234-238,192.168.0.245
5.配置内核支持转发
a.编辑 sysctl.conf 配置文件
$ sudo vim /etc/sysctl.conf
b.找到第7行进行修改
net.ipv4.ip_forward = 0
c,配置后结果如下:
net.ipv4.ip_forward = 1
d.重新加载内核配置项
$ sudo sysctl -p
6.配置 iptables
a.首次运行 iptables
查看iptabls运行状态
$ sudo service iptables status iptables: Firewall is not running.
有一个很有意思的现象,若首次启动 iptables ,使用如下 start 命令是无法启动的!
$ sudo service iptables start
但可以通过查看配置规则命令启动,不知道是不是我理解的有问题!如果你知道请指教,谢谢!
$ sudo iptables -L -n
清空防火墙配置
$ sudo iptables -P INPUT ACCEPT #改成 ACCEPT 标示接收一切请求 $ sudo iptables -F #清空默认所有规则 $ sudo iptables -X #清空自定义所有规则 $ sudo iptables -Z #计数器置0
配置规则
$ sudo iptables -A INPUT -i lo -j ACCEPT #允许127.0.0.1访问本地服务 $ sudo iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT #允许访问外部服务 $ sudo iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT #允许 ping $ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT #开启 ssh 端口
若需要配置其他端口,比如 80 3306 8080 参考 ssh 端口配置方式
b.已配置过 iptables
设置转发策略,由于阿里云是双网卡,内网eth0,外网eth1,所以这块特别容易误写为eth0
$ sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -jMASQUERADE
c.设置VPN端口策略
$ sudo iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
d.保存 iptabls 选项并重启 iptables
$ sudo service iptables save
7.收尾工作
$ sudo service iptables restart #重新启动 iptables $ sudo service pptpd restart #重新启动 pptpd $ sudo chkconfig iptables on #开机启动 iptables $ sudo chkconfig pptpd on #开机启动 pptpd $ sudo iptables -P INPUT DROP #加载防火墙策略
感谢以下作者
已解决,结帖Re阿里云Centos6.3搭了VPN内网通,但无法访问外网,折腾3天。