把握幾個重點即可快速完成 pptp 的 VPN Server 架設:
- ppp – 點對點協定 (Point-to-Point Protocol)
- pptp – 點對點通道協定 (Point-to-Point Tunneling Protocol)
- iptables – 設定封包轉發規則
安裝步驟
1. 判斷 ppp 是否可用:
$ cat /dev/ppp cat: /dev/ppp: No such device or address
如果出現跟上面一樣的訊息「No such device or address」,那不用擔心,這表示 ppp 是可用的,可以正常架設 pptp。
如果出現的是「Permission denied」,表示 ppp 是關閉的,下面的步驟就可以不用再看了。
2. 安裝 ppp 與 iptables
$ yum -y install ppp iptables $ cp -rpf /etc/sysconfig/iptables /etc/sysconfig/iptables.pptpsave $ cd /usr/src
3. 請依照你的系統環境下載適合的 pptp 套件:
# for CentOS 6.x 32bit $ wget http://poptop.sourceforge.net/yum/stable/rhel6/i386/pptpd-1.3.4-2.el6.i686.rpm # for CentOS 6.x x64 $ wget http://poptop.sourceforge.net/yum/stable/rhel6/x86_64/pptpd-1.3.4-2.el6.x86_64.rpm # for CentOS 5.x 32bit $ wget http://poptop.sourceforge.net/yum/stable/rhel5/i386/pptpd-1.3.4-2.rhel5.i386.rpm # for CentOS 6.x x64 $ wget http://poptop.sourceforge.net/yum/stable/rhel5/x86_64/pptpd-1.3.4-2.rhel5.x86_64.rpm
上面這些載點如果失效,有可能是更新版本了,請自行前往 poptop 的網站下載,或是備用載點。
4. 安裝上一個步驟所下載的 pptp 套件:
$ rpm -ivh pptpd-1.3.4-2.el6.i686.rpm
5. 編輯 /etc/sysctl.conf,找到:
net.ipv4.ip_forward = 0
將後面的 0 改成 1
6. 下面的指令全部給它下去:
sysctl -p echo "localip 192.168.240.1" >> /etc/pptpd.conf echo "remoteip 192.168.240.101-200" >> /etc/pptpd.conf echo "ms-dns 8.8.8.8" >> /etc/ppp/options.pptpd echo "ms-dns 8.8.4.4" >> /etc/ppp/options.pptpd iptables --flush POSTROUTING --table nat iptables --flush FORWARD iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT iptables -A INPUT -p gre -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.240.0/24 -o eth0 -j MASQUERADE service iptables save service pptpd restart service iptables restart chkconfig pptpd on chkconfig iptables on
這樣就大功告成了!!
上面這些指令會創造一個 192.168.240.* 的網段給連上來的 vpn 用戶使用,並透過 Server 上的 eth0 轉送對外上網的封包 (你可以自行將 192.168.240 與 eth0 改成符合你需求的設定)。
加入 VPN 帳號
接著我們要加入 VPN 的連線帳號。
編輯 /etc/ppp/chap-secrets 以加入 VPN 帳號,一個帳號一行,格式為:
帳號名稱 pptpd 密碼 *
例如,我要新增一個帳號為「vpn」,密碼為「test123」,則只要在 /etc/ppp/chap-secrets 加入一行:
vpn pptpd test123 *
加入之後不用重新啟動 pptpd,你就可在 Client 端以 pptp 協定用 VPN 連線至這台 Server 了。