VPN(--Centos搭建)

一、模式

1、PPTP
pptp使用簡單方便,不需要做額外配置,連接、斷開的速度快,要求防火牆、路由器支持,對網絡環境要求比較高。而l2tp需要共享密鑰和修改註冊表(對win系列機器講)
2、L2TP
l2tp在穿透方面有時候會比pptp強一些, 有一定的網絡防閃斷能力。適合pptp不能用的環境 OpenVPN穿透能力最強。
3、OpenVpn
OpenVPN:穿透能力最強,適合校園網、公司局域網等受限網絡環境,第一次使用要安裝虛擬網卡

二、安裝PPTP

1、第一步:檢測是否符合PPTP的搭建環境的要求:
(1)查看本機服務器版本
本機的CentOS服務器(64位)版本信息爲:CentOS release 6.4(Final),如下圖所示:
(2)檢查是否可以安裝重點內容
開始搭建VPN之前的環境檢測步驟,執行以下的命令,如果檢查結果沒有相關支持的話,是不能安裝pptp的,執行指令:
#modprobe ppp-compress-18 && echo ok
這條指令執行之後,顯示“ok”則表明通過。如下圖所示:
接下來還需要做另一個檢查,執行指令:
#cat /dev/net/tun
如果這條指令顯示結果爲下面的文本,則表示通過:
cat: /dev/net/tun: File descriptor in bad state(cat: /dev/net/tun: 文件描述符處於錯誤狀態)
如下圖所示:
上述兩條均通過,才能安裝pptp。否則就只能考慮openvpn,或者請vps空間商的技術客服爲你的VPS打開TUN/TAP/PPP功能了,貌似有部分vps控制面板上提供打開TUN/TAP/PPP功能的按鈕。
2、第二步,安裝ppp和iptables
(1)安裝PPP
PPTPD要求Linux內核支持mppe,一般來說CentOS安裝時已經包含了。CentOS默認安裝了iptables和ppp,我們要先查看已經安裝的ppp的版本,再去找對應的pptpd版本。ppp版本查看命令如下:
#rpm -q ppp // 查詢當前系統的ppp是否默認集成了,以及ppp的版本
得到如下圖所示結果:
ppp和pptpd各個版本下載地址:http://poptop.sourceforge.net/yum/stable/packages/。在這裏一定要下載ppp對應的pptpd版本,不然會出錯。我所需要下載的版本爲pptpd-1.4.0-1.el6.x86_64.rpm,下載及安裝命令如下:
wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.4.0-1.el6.x86_64.rpm
rpm -ivh pptpd-1.4.0-1.el6.x86_64.rpm
如下圖所示:
3、第三步,修改配置文件:
(1)配置文件/etc/ppp/options.pptpd,命令如下所示:
#cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
#vi /etc/ppp/options.pptpd
將如下內容添加到options.pptpd中:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
然後保存這個文件。(ms-dns 8.8.8.8,ms-dns 8.8.4.4是使用google的dns服務器。)
如下圖所示:
(2)配置文件/etc/ppp/chap-secrets,命令如下所示:
#cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak
#vi /etc/ppp/chap-secrets
如下圖所示:
client處是VPN賬號,server處是pptpd,secret處是VPN的密碼,IP address處填上*(星號表示對任意IP,記住不要丟了這個星號。)
(3)配置文件/etc/pptpd.conf,命令如下所示:
#cp /etc/pptpd.conf /etc/pptpd.conf.bak
#vi /etc/pptpd.conf
添加如下兩行:
localip 192.168.1.1
remoteip 192.168.1.10-50 //表示vpn客戶端獲得ip的範圍
如下圖所示:
pptpd.conf這個配置文件必須保證最後是以空行結尾才行,否則會導致啓動pptpd服務時,出現“Starting pptpd:”,一直卡着不動的問題,無法啓動服務,切記呀!
(4)配置文件/etc/sysctl.conf,命令如下所示:
#vi /etc/sysctl.conf //修改內核設置,使其支持轉發
將net.ipv4.ip_forward = 0 改成 net.ipv4.ip_forward = 1。保存修改的文件,然後執行如下命令:
#/sbin/sysctl -p
在這裏要注意一點,執行上面命令,可能會出錯。具體的解決方案如下:
/***********************************************************************************
sysctl -P 報錯解決辦法
問題症狀
修改 linux 內核文件
#vi /etc/sysctl.conf後執行sysctl -P 報錯
error: “net.bridge.bridge-nf-call-ip6tables” is an unknown key
error: “net.bridge.bridge-nf-call-iptables” is an unknown key
error: “net.bridge.bridge-nf-call-arptables” is an unknown key
解決方法如下:
modprobe bridge
lsmod|grep bridge
****************************************************************/
如下圖所示:

4、第四步,啓動pptp vpn服務和iptables
(1)啓動pptp
啓動pptp vpn的命令如下:
#/sbin/service pptpd start 或者 #service pptpd start
重啓 service pptpd restart
停止 service pptpd stop
(2)配置iptables
經過前面步驟,我們的VPN已經可以撥號登錄了,但是還不能訪問任何網頁。最後一步就是添加iptables轉發規則了。
我的規則如下:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.1/24 -j SNAT –to-source XXX.XXX.XXX.XXX (填寫自己的VPS網卡IP)
iptables -I INPUT 1 -p gre -j ACCEPT
iptables -I INPUT 1 -p tcp -m tcp –dport 1723 -j ACCEPT
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT (一般不執行,防火牆默認設置)
iptables -A FORWARD -s 192.168.1.0/24 -o eth0 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/24 -i eth0 -j ACCEPT
我的規則如下圖所示:
注意上面規則添加中的eth0(驗證是公網IP對應的網卡)這個是網卡,不同的電腦是不相同的,可以使用命令ifconfig查看得到。規則添加完畢之後,先保存一下添加的規則,然後再啓動iptables了。命令如下:
/etc/init.d/iptables save
service iptables start
最後,我們可以設置pptpd和iptables隨系統自啓動。命令如下圖所示:
chkconfig pptpd on
chkconfig iptables on
5、問題
(1)分析ppp = 2.4.4 is needed by pptpd-1.3.4-2.rhel5.x86_64的解決辦法及原因;
 1、經過測試
ppp版本和pptpd版本不兼容,自然只要下載對應的版本就可以了。
#yum install ppp //用yum方式安裝ppp
#yum list installed ppp //查看所安裝的版本。
顯示爲:
ppp.i686 2.4.5-5.el6 @base
而pptpd-1.3.4-2.rhel5.x86.rpm是1.3.4版本,需要ppp是2.4.4版本才能安裝pptpd-1.3.4-2.rhel5.x86.rpm。現在ppp版本是2.4.5的,所以,而且ppp是比pptpd先安裝的,所以,我們不換ppp版本,而去換pptpd的版本。

所有的ppp版本和pptpd版本的下載地址爲:http://poptop.sourceforge.net/yum/stable/packages/
我通過測試,找到了部分ppp和pptp包對應的版本不同,要對根據ppp版本選擇對應的pptpd版本。我列出來:
ppp 2.4.4——————>pptpd 1.3.4
ppp 2.4.5——————>pptpd 1.4.0
.所以,我們只要下載pptpd 1.4.0版本就可以了。(下載地址 安裝地址)
wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.4.0-1.el6.x86_64.rpm
rpm -ivh pptpd-1.4.0-1.el6.x86_64.rpm
 2、未經過測試
最簡單的方法那就是pptpd和ppp全都yum安裝,讓系統自動判斷和找尋ppp和pptp對應版本,很爽的。方法如下:
加入yum源:
#rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp- release-current.noarch.rpm
然後yum安裝pptpd:
#yum install -y pptpd
(2)無法連接外網
 檢查DNS端口
iptables -A INPUT -p UDP –dport 53 -j ACCEPT ##打不開網頁
iptables -A INPUT -p tcp –dport 47 -j ACCEPT ##47端口

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章