目前***隧道協議有4種:點到點隧道協議PPTP、第二層隧道協議L2TP、網絡層隧道協議IPSec以及SOCKS v5,我們這裏只介紹點到點隧道協議PPTP。
PPTP協議原理
PPTP使用一個TCP連接對隧道進行維護,使用通用路由封裝(GRE)技術把數據封裝成PPP數據楨通過隧道傳送。可以對封裝PPP楨中的負載數據進行加密或壓縮。
環境準備
centos7服務器 (這裏我使用阿里雲,vpc專有網絡。)
windows10 客戶端 (測試***使用)
1、檢查服務器是否支持PPTP協議
modprobe ppp-compress-18 && echo ok
2.關閉防火牆
systemctl stop firewalld.service
systemctl disable firewalld.service
-
更新yum源、安裝軟件包
yum install epel-release -y
yum install ppp pptpd ppp-devel iptables iptables-services -y
4.修改配置文件
vim /etc/pptpd.conf
localip 192.168.0.1 #內網ip地址(服務器的eth0網卡地址,不是服務器公網地址)
remoteip 192.168.0.10-150 #自定義分配給客戶端的網段
vim /etc/ppp/options.pptpd
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 223.5.5.5
ms-dns 114.114.114.114
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
logfile /var/log/pptpd.log
vim /etc/ppp/chap-secrets 配置賬號、密碼
#在文件的末尾行添加自己的登錄賬號,添加登錄賬號的格式:用戶名 pptpd 密碼 *
test pptpd 12345 *
5.配置IPv4轉發
echo 'net.ipv4.ip_forward=1' >>/etc/sysctl.conf
sysctl -p 執行命令立即生效
6.配置防火牆,開啓數據路由(關鍵的一步,不配置防火牆,無法實現網絡訪問)
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 47 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j MASQUERADE
service iptables save 保存配置
systemctl restart iptables 重啓防火牆
配置阿里雲白名單
開啓TCP的1723端口
開啓GRE協議
修改 vim /etc/ppp/ip-up 文件
重啓服務
systemctl restart pptpd
systemctl restart iptables
7.配置windows10 客戶端
內網地址連接阿里雲服務器