CENTOS7搭配自带的firewall防火墙 搭建VPN(PPTPD)

前言:Centos7开始自带firewall防火墙,不用iptables。

先来看firewall的基本命令:

    查看状态
    # firewall-cmd --state
或 systemctl status firewalld
    启动
    # service firewall start
或systemctl start firewalld
    关闭
    # service firewall stop
或 systemctl stop firewalld
    重启
    # service firewall restart
或systemctl restart firewalld
    开放端口
    # firewall-cmd --permanent --add-port=8080-8085/tcp
    禁用端口
    # firewall-cmd --permanent --remove-port=8080-8085/tcp
    使开放或禁用的操作生效
    # firewall-cmd --reload
    查看开放的端口
    # firewall-cmd --list-ports
    查看允许服务
    # firewall-cmd --list-services

具体查看firewall-cmd的使用手册
$ man firewall-cmd

下面开始安装PPTPD

1 安装PPP
yum install -y ppp

2 安装PPTPD
2.1 添加EPEL源:
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
2.2 安装EPEL源:
rpm -ivh epel-release-latest-7.noarch.rpm
2.3 安装PPTPD:
yum install -y pptpd

3 编辑/etc/pptpd.conf设置×××内网IP段
最后IP设置改为:
localip 192.168.0.1
remoteip 192.168.0.214-192.168.0.245

4 编辑/etc/ppp/options.pptpd
4.1 更改DNS项:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
4.2 修改日志记录(这步可以跳过):
nologfd
logfile /var/log/pptpd.log

5 编辑/etc/ppp/chap-secrets设置×××账号密码
用户名 pptpd 密码 //每个字段之间用tab键隔开 表示用任意IP连接×××都可以
样例:登录账号为imiqi 密码为123456 这样写:
imiqi pptpd 123456 *

6 编辑/etc/sysctl.conf修改内核参数支持内核转发
net.ipv4.ip_forward=1
输入命令生效:sysctl -p

7 修改防火墙设置:
7.1 firewall-cmd --list-all
7.2 开启47及1723端口:
firewall-cmd --permanent --zone=public --add-port=47/tcp
firewall-cmd --permanent --zone=public --add-port=1723/tcp
7.3 启动或重启防火墙:
systemctl start firewalld.service或firewall-cmd --reload
7.4 firewalld中动态添加端口,则立即生效。
firewall-cmd --add-port=1723/tcp
firewall-cmd --add-port=47/tcp
7.5 允许防火墙伪装IP:
firewall-cmd --zone=public --add-masquerade
7.6 允许gre协议:
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p gre -j ACCEPT
7.7 设置规则允许数据包由eth0和ppp+接口中进出
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -o eth0 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o ppp+ -j ACCEPT
7.8 设置转发规则,从源地址发出的所有包都进行伪装,改变地址,由eth0发出:
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 192.168.0.0/24

8 重启服务器:
firewall-cmd --reload
systemctl restart pptpd

自此PPTPD的PPTP方式的VPN搭建完毕

如果出现FirewallD is not running错误,开启firewall即可

如果出现可以PING,但是无法上网问题,不要听信一些文章的下面这个方法:“Internet协议版本4(TCP/IPV4)”-属性-高级-去掉勾选“在远程网络上使用默认网关” 。这会失去使用VPN的意义,用回了本机的网关。
要使用以下方法:

/ec/ppp/ip-up 文件:

[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"
ifconfig $1 mtu 1492 #加上这行,数字可以用下面两行试,直到可以正常访问为止
#ifconfig $1 mtu 1472
#ifconfig $1 mtu 1356
exit 0