一、檢查是否支持PPTP
1. 在安裝之前查看系統是否支持PPTP
modprobe ppp-compress-18 && echo success #應該輸出:success
2. 是否開啓TUN/TAP
cat /dev/net/tun #應該輸出:cat: /dev/net/tun: File descriptor in bad state
3. 是否開啓ppp
cat /dev/ppp #應該輸出:cat: /dev/ppp: No such device or address
如果環境不滿足上面3個條件,表示很可能不支持pptp
二、安裝相關軟件
1.安裝PPP
yum install -y ppp
2.安裝epel源
yum install -y epel-release
3.檢查是否已添加到源列表中
yum repolist
4.沒有則更新源列表
yum -y update
5.安裝pptp
yum install -y pptpd
注:如出現異常:One of the configured repositories failed (Unknown)
解決方案是:先把epel卸載,更新後再裝
yum remove epel-release
yum -y update
yum install epel-release
三、修改配置
1.vi /etc/pptpd.conf設置VPN內網IP段
最後IP設置改爲:
localip 192.168.100.1
remoteip 192.168.100.234-238,192.168.100.245
2.vi /etc/ppp/options.pptpd
更改DNS項:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
修改日誌記錄:
nologfd
logfile /var/log/pptpd.log
3.vi /etc/ppp/chap-secrets
設置VPN賬號密碼(格式:{account} pptpd {password} *)
例:pptptest pptpd 123456 *
啓動pptp:service pptpd start
關閉pptp:service pptpd stop
重啓pptp:service pptpd restart
關閉防火牆,windows下使用使用“添加VPN連接”填寫服務IP、用戶名、密碼連接應該可以連上,這時候本地電腦可以訪問VPN服務器,但是不能訪問外網
啓動防火牆:service firewalld start
關閉防火牆:service firewalld stop
重啓防火牆:service firewalld restart
四、開啓服務器系統路由模式,支持包轉發(通過VPN訪問外網)
1.vi /etc/sysctl.conf 修改內核參數支持內核轉發,增加一行:
net.ipv4.ip_forward=1
sysctl -p #使設置立刻生效
2.創建規則文件:vi /usr/lib/firewalld/services/pptpd.xml,內容爲:
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>pptpd</short>
<description>PPTP</description>
<port protocol="tcp" port="1723"/>
</service>
3.啓動防火牆:service firewalld start
4.添加服務:
firewall-cmd --permanent --zone=public --add-service=pptpd
允許防火牆僞裝IP:
firewall-cmd --add-masquerade
5.開啓47及1723端口:
firewall-cmd --permanent --zone=public --add-port=47/tcp
firewall-cmd --permanent --zone=public --add-port=1723/tcp
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.設置規則允許數據包由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
8.設置轉發規則,從源地址發出的所有包都進行僞裝,改變地址,由eth0發出:
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 192.168.100.0/24
9.重啓防火牆:service firewalld restart
奇怪點,到了這步後發現還是無法上網
需要安裝iptables增加規則才能訪問外網,配置後卸載iptables也沒有問題,或許可以用firewall-cmd命令替代,暫時不知道怎麼替代命令
yum install -y iptables-services
開放pptp端口1723,允許轉發
iptables -I INPUT 7 -m state --state NEW -p tcp --dport 1723 -j ACCEPT
iptables -P FORWARD ACCEPT
iptables配置,配置虛擬網段NAT支持。如果pptp客戶端不需要上網,可以忽略本步驟。
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
保存iptables規則
service iptables save
10.重啓防火牆:service firewalld restart
終於可以上網了,瀏覽器百度輸入ip,發現是服務器的ip地址了
觀察服務器日誌/var/log/pptpd.log,連接斷開都有日誌打印
Plugin /usr/lib64/pptpd/pptpd-logwtmp.so loaded.
Using interface ppp0
Connect: ppp0 <--> /dev/pts/1
peer from calling number 116.22.2.240 authorized
MPPE 128-bit stateless compression enabled
Cannot determine ethernet address for proxy ARP
local IP address 192.168.0.1
remote IP address 192.168.1.1
LCP terminated by peer (8Q^WM- ^@<M-Mt^@^@^@^@)
Connect time 0.1 minutes.
Sent 2686 bytes, received 7458 bytes.
Modem hangup
Connection terminated.