当前位置:   article > 正文

VPN服务搭建流程记录

VPN服务搭建流程记录

       之前,一直有想法搭建一套属于自己的VPN服务,但是,一直苦于"拖延症"的困扰,没有真正实际去实践。最近,终于打破了这个困扰,所以,也希望记录一下整体的搭建流程,操作系统CentOS7.2,在此,做一下记录。这里,我这边主要参考的前辈的文章记录是以下这个链接:搭建VPN服务之PPTP - 熊孩子

       真心很感谢前辈们的不吝指导,才使得本次有机会可以顺利搭建一下VPN服务。但是呢,实际的搭建的主要流程,有些细节与前辈的文章还是有些差异的,所以,还是想做一下对主要流程的记录:

1、查看系统是否支持PPP

  1. [root@node01 ~]# cat /dev/ppp
  2. cat: /dev/ppp: No such device or address

如果出现以上提示则说明ppp是开启的,可以正常架设pptp服务,若出现Permission denied等其他提示,你需要先去VPS面板里看看有没有enable ppp的功能开关,如果没有则需要发个消息给你的提供商帮其打开,否则无法进行安装

2、设置内核转发

  1. [root@node01 ~]# grep forward /etc/sysctl.conf
  2. [root@node01 ~]# echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
  3. [root@node01 ~]# grep forward /etc/sysctl.conf
  4. net.ipv4.ip_forward = 1
  5. [root@node01 ~]# sysctl -p

3、安装PPTP

  1. # 需要安装epel源
  2. [root@node01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  3. [root@node01 ~]# yum -y install pptpd

备注:实际操作的时候,epel源,我并没有去下载,直接运行了命令:

yum -y install pptpd

yum -y install iptables

yum -y install iptables-services

4、配置PPTP

  1. [root@node01 ~]# vim /etc/pptpd.conf
  2. ##增添
  3. .......
  4. localip 118.190.201.68
  5. remoteip 172.16.1.10-80
  6. # 添加本机公网IP(localip),分配VPN用户的内网网段(remoteip)

备注:localip填写公网IP,remoteip填写内网IP所在网段的地址范围

修改/etc/ppp/options.pptpd文件

  1. name pptpd
  2. refuse-pap
  3. refuse-chap
  4. refuse-mschap
  5. require-mschap-v2
  6. require-mppe-128
  7. proxyarp
  8. lock
  9. nobsdcomp
  10. novj
  11. novjccomp
  12. nologfd
  13. idle 2592000
  14. ms-dns 8.8.8.8
  15. ms-dns 8.8.4.4

备注:ms-dns修改为8.8.8.8与114.114.114.114,这2行值。

5、设置用户与密码

  1. [root@node01 ~]# vim /etc/ppp/chap-secrets
  2. John * 123456 *
  3. ###有四行第一行用户 第三行密码 其他行用*号表示

6、启动PPTP

  1. [root@node01 ~]# systemctl start pptpd
  2. [root@node01 ~]# netstat -lntup|grep 1723
  3. tcp 0 0 0.0.0.0:1723 0.0.0.0:* LISTEN 1651/pptpd

备注:此处可以使用systemctl status pptpd、systemctl restart pptpd、systemctl stop pptpd等命令来操作和管理此服务的开启、重启、查看服务状态等操作。

8、打开防火墙

  1. 开启47及1723端口:
  2. firewall-cmd --zone=public --add-port=47/tcp --permanent
  3. firewall-cmd --zone=public --add-port=1723/tcp --permanent
  4. 允许防火墙伪装IP:
  5. firewall-cmd --zone=public --add-masquerade
  6. 允许gre协议:
  7. firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
  8. firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p gre -j ACCEPT
  9. 设置规则允许数据包由eth0和ppp+接口中进出
  10. firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -o eth0 -j ACCEPT
  11. firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o ppp+ -j ACCEPT
  12. 设置转发规则,从源地址发出的所有包都进行伪装,改变地址,由eth0发出:(192.168.0.0内网地址,子网地址前两位)
  13. firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 192.168.0.0/24
  14. 重启服务器:
  15. firewall-cmd --reload
  16. systemctl restart pptpd

备注:个人觉得比较重要的命令是下面几条:

8-1:允许防火墙伪装IP:

firewall-cmd --zone=public --add-masquerade

8-2:允许gre协议,此处感觉不一定需要执行任何命令

8-3:设置转发规则,从源地址发出的所有包都进行伪装,改变地址,由eth0发出:(192.168.0.0内网地址,子网地址前两位)

firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 192.168.0.0/24

附图一下安全组的配置:

重点:

TCP协议:1723端口,是必须需要在安全组中开启的。

后续发现下面这几条命令可能才是最重要的:

  1. iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT --to-source {服务器公网IP}
  2. iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
  3. iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
  4. iptables -A INPUT -p gre -j ACCEPT
  5. iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

添加NAT转发规则,*为云服务器的公网IP地址,命令如下:

重点:

iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT --to-source {服务器公网IP} 

备注:以上这条基本确定需要执行

使用iptables设置转发规则:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

备注:以上这条需不需要执行,待定

iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

备注:以上这条需不需要执行,待定

iptables -A INPUT -p gre -j ACCEPT

备注:以上这条需不需要执行,待定

重点:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

备注:以上这条基本确定需要执行

service iptables save

systemctl restart iptables

systemctl restart pptpd

9、查看日志的方法

  1. 1、上线日志
  2. vim /etc/ppp/ip-up
  3. 在[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@" 后加上
  4. echo "$PEERNAME 分配IP: $5 登录IP: $6 登录时间: `date -d today +%F_%T`" >> /var/log/pptpd.log
  5. 2、下线日志
  6. vim /etc/ppp/ip-down
  7. 在/etc/sysconfig/network-scripts/ifdown-post --realdevice ${REALDEVICE} \
  8. ifcfg-${LOGDEVICE}
  9. 后加上
  10. echo "$PEERNAME 下线IP: $6 下线时间: `date -d today +%F_%T`" >> /var/log/pptpd.log

备注:此处有条命令感觉挺实用的,用于查看在线的PPP用户

last | grep ppp | grep still

还可以通过以下文件:

/var/log/messages,来查看日志,看是否有client 端连接

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/172055
推荐阅读
相关标签
  

闽ICP备14008679号