Centos7 搭建 PPTP-VPN 服務

PPTP 點對點隧道協議(PPTP,Point-to-Point Tunneling Protocol)是一種協議(一套通信規則),它允許企業通過私人 “隧道” 在公共網絡上擴展自己的企業網絡。注意:蘋果手機從 ios10 起不支持 pptp vpn 了

PPTP 以通用路由封裝(GRE)協議向對方作一般的點對點傳輸。通過 TCP1723 端口來發起和管理 GRE 狀態。因爲 PPTP 需要 2 個網絡狀態,因此會對穿越防火牆造成困難。很多防火牆不能完整地傳遞連接,導致無法連接。 在 Windows 或 Mac OS 平臺,通常 PPTP 可搭配 MSCHAP-v2 或 EAP-TLS 進行身份驗證 ,也可配合微軟點對點加密(MPPE)進行連接時的加密。

聲明:本文僅限用於企業遠程辦公或企業跨境電商用途參考,如果用於其他用途一概和本博文無關

搭建清單:
Centos7 (我這裏使用騰訊雲的服務器)
ppp 和 pptpd 包
iptables (我這裏使用 iptables)
win10 客戶端(連接測試使用)

1、查看是否支持

[root@VM_centos ~]# modprobe ppp-compress-18 && echo yes
yes

[root@VM_centos ~]# cat /dev/ppp
cat: /dev/ppp: 沒有那個設備或地址

2、禁用 firewalld 防火牆和安裝需要的包

#停止和禁用firewalld
[root@VM_centos ~]# systemctl stop firewalld
[root@VM_centos ~]# systemctl disable firewalld

#增加epel yum源
[root@VM_centos ~]# yum install epel-release -y

#安裝需要的包
[root@VM_centos ~]# yum install ppp ppp-devel pptpd iptables iptables-services -y

3、修改配置文件 pptpd.conf option.pptpd

[root@VM_centos ~]# vim /etc/pptpd.conf
#找到此處去掉前面註釋
localip xxx.xxx.xxx.xxx  #自定義一個ip或者內網ip地址
remoteip 192.168.0.10-20  #自定義分配給客戶端的網段和地址池

[root@VM_centos ~]# vim /etc/ppp/options.pptpd
#修改下ms-dns,和添加一個日誌文件,其他默認都開啓的不用動即可

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 114.114.114.114
proxyarp
lock
nobsdcomp 
novj
novjccomp
nologfd
logfile /var/log/pptpd.log

4、修改用戶認證配置文件 chap-secrets

[root@VM_centos ~]# vim /etc/ppp/chap-secrets
#添加用戶格式:用戶名 pptpd 密碼 *

# Secrets for authentication using CHAP
# client    server    secret            IP addresses
test    * 123456 *

5、打開系統 ipv4 轉發 sysctl.conf

[root@VM_centos ~]# vim /etc/sysctl.conf
#有此項的話修改數值爲1 沒有的新添加一條
net.ipv4.ip_forward=1

#應用生效
[root@VM_centos ~]# sysctl -p

6、啓動 pptpd 服務

[root@VM_centos ~]# systemctl start pptpd

7、開放需要的端口 (iptables 和雲服務器的安全組),此步操作完就可以先測試下是否可以連接了

# iptables添加入站規則,1723端口和gre協議(默認INPUT是允許所有的,可以不加)
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT

#保存規則
[root@VM_centos ~]# service iptables save
#重啓生效
[root@VM_centos ~]# systemctl restart iptables

8、增加轉發規則,和修改 mtu 的大小,爲了可以連上 vpn 後上網

#注意這裏網段和上面配置文件(/etc/pptpd.conf)網段子網一致,eth0和本機網卡名稱一致(本機只有eth0和lo)
[root@VM_centos ~]# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

#保存規則
[root@VM_centos ~]# service iptables save
#重啓生效
[root@VM_centos ~]# systemctl restart iptables

#修改MTU默認值1396爲1500,在exit 0前面加一句
[root@VM_centos ~]# vim /etc/ppp/ip-up
.......
ifconfig $1 mtu 1500

exit 0

#重啓下pptpd服務
[root@VM_centos ~]# systemctl restart pptpd

9、win10 客戶端連接測試(連接後所有上網流量都通過 vpn 服務器)

win10 客戶端 pptp vpn 主要配置參數

win10 客戶端連接後的信息,上公網和訪問內網機器

10、(2020.6.16 更新) 如果想用本地網絡上網,又可以訪問連接 vpn 服務器的網絡(連接後上網流量還是通過本地網絡)


系統環境總是有些差別,出些錯誤也正常,我在連接中遇到的錯誤解決辦法:

1,檢查 1723 端口是否開放和 gre 協議是否開放

2,各項配置文件參數是否有誤

3,客戶端的配置是否正確

4,連接後不能上公網,重置清空 iptables 所有規則,然後重新添加上面的 iptables 規則。

5,修改 MTU 的數值

CentOS7 搭建 PPTP 服務

總結 (有問題請先對照文章內容步驟和文章註釋說明,然後再參考下面的問題說明)
此篇文章是以 PPTP VPN 涉及到哪些文件和需要改動的配置進行搭建,需要有一定 linux 基礎知識和理解
寫此篇文章是爲了記錄下,方便以後用到好找,並不是教程文章,參考過程中有問題就請多 百度 | 谷歌 | 搜狗 | 360|bing ?
如果覺得麻煩或者完全不懂的建議去網上找一鍵腳本安裝的

1:安裝 ppp 和 pptp 包
2:安裝 iptables 防火牆用於轉發
3:修改配置文件:
/etc/pptpd.conf
/etc/ppp/options.pptpd
/etc/ppp/chap-secrets
/etc/sysctl.conf
/etc/ppp/ip-up

連接問題:
4:確認以上的配置文件無誤
5:確認 pptpd 服務和 iptables 啓動正常
6:確認用戶名密碼常正確
7:確認服務端和客戶端正確配置了連接參數
8:確認你服務端的 pptp vpn 的協議和端口沒有被運營商封掉
9:確認放行使用到的 tcp 端口(雲安全組 | 外網防火牆等安全策略)

上網問題:
10:確認 iptables 轉發規則無誤
11:確認系統打開 ipv4 轉發和腳本修改的 mtu 值

本站文章除註明轉載 / 出處外, 均爲本站原生內容, 轉載前請註明出處 | 文章鏈接地址:https://me.jinchuang.org/archives/517.html

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://me.jinchuang.org/archives/517.html