CentOS7安裝PPTP VPN(開啟firewall防火牆)
1 准備一個CentOS7服務器
2 檢查是否支持PPTP
modprobe ppp-compress-18 && echo ok #返回OK zgrep MPPE /proc/config.gz #返回CONFIG_PPP_MPPE=y 或 =m cat /dev/net/tun #返回cat: /dev/net/tun: File descriptor in bad state
以上三條命令滿足一條即為支持PPTP
3 安裝PPP
yum install -y ppp
4 安裝PPTPD
4.1 添加EPEL源:
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
4.2 安裝EPEL源:
rpm -ivh epel-release-latest-7.noarch.rpm
4.3 檢查是否已添加到源列表中:
yum repolist
4.4 更新源列表:
yum -y update
4.5 安裝PPTPD:
yum install -y pptpd
5 編輯/etc/pptpd.conf設置VPN內網IP段
最后IP設置改為:
localip 192.168.0.1 remoteip 192.168.0.214,192.168.0.245
6 編輯/etc/ppp/options.pptpd
6.1 更改DNS項:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
6.2 修改日志記錄:
nologfd
logfile /var/log/pptpd.log
7 編輯/etc/ppp/chap-secrets設置VPN賬號密碼
用戶名 pptpd 密碼 *//每個字段之間用tab鍵隔開 *表示用任意IP連接VPN都可以
樣例:登錄賬號為root 密碼為123 這樣寫:
root pptpd 123 *
8 編輯/etc/sysctl.conf修改內核參數支持內核轉發
net.ipv4.ip_forward=1
輸入命令生效:sysctl -p
9 修改防火牆設置:
9.1 創建規則文件:touch /usr/lib/firewalld/services/pptpd.xml
9.2 修改規則文件
<?xml version="1.0" encoding="utf-8"?> <service> <short>pptpd</short> <description>PPTP</description> <port protocol="tcp" port="1723"/> </service>
9.3 啟動或重啟防火牆:
systemctl start firewalld.service或firewall-cmd --reload
9.4 添加服務:
firewall-cmd --permanent --zone=public --add-service=pptpd
9.5 允許防火牆偽裝IP:
firewall-cmd --add-masquerade
9.6 開啟47及1723端口:
firewall-cmd --permanent --zone=public --add-port=47/tcp firewall-cmd --permanent --zone=public --add-port=1723/tcp
9.7 允許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
9.8 設置規則允許數據包由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
9.9 設置轉發規則,從源地址發出的所有包都進行偽裝,改變地址,由eth0發出:
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 192.168.0.0/24
10 重啟服務器:
firewall-cmd --reload
systemctl restart pptpd