首先約定好, 以下代碼中#...及其以後的內容為注釋, 可不複製. 範例程式碼中如何修改的檔案裡已經存在可以修改成樣本那樣, 如果沒有請添加.
1: 安裝依賴軟體, 直接yum:
yum makecache
yum -y update
yum -y install ppp wget iptables iptables-devel perl
解釋: pptp依賴ppp和iptables運作, 同時需要perl庫.
2: 安裝pptp:
32位系統:
wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm
rpm -ivh pptpd-1.3.4-2.rhel5.i386.rpm
64位系統:
wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.x86_64.rpm
rpm -ivh pptpd-1.3.4-2.rhel5.x86_64.rpm
如果出現error Failed Dependences,改為rpm -ivh pptpd-1.3.4-2.rhel5.i386.rpm --nodep --force
3: pptp配置
vi /etc/pptpd.conf
localip 192.168.2.1
remoteip 192.168.2.2-192.168.2.250
解釋下: localip是pptp使用的ip, 可以隨意; remoteip連結到vpn的使用者指派到ip的訪問, 和localip同一個網段即可.
vi /etc/ppp/options.pptpd
ms-dns 8.8.8.8
ms-dns 208.67.222.222
解釋: 設定連結到vpn的使用者如果訪問網路時使用的dns, 和他們自己電腦與伺服器設定的dns沒任何關係.
vi /etc/ppp/chap-secrets
test pptpd 123456 *
解釋: 這是連結vpn的使用者密碼, 每行一個, 代表一個使用者.
格式說明: 第一列為使用者, 依次是 伺服器名稱, 密碼和ip, 中間使用一個空格或者tab隔開.
使用者和密碼可隨意, 伺服器名(pptpd)不要改, 後面的*代表ip由pptpd自動分配
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
/sbin/sysctl -p # 能讓設定立即生效
解釋: 開啟ip轉寄.
4: iptables設定
如果你的伺服器沒有/etc/sysconfig/iptables檔案這個檔案, 可以建立他, 輸入一下內容, 這是預設的規則.
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
儲存退出後重啟iptables, 並備份預設規則.
cp /etc/sysconfig/iptables{,.bak}
service iptables start
設定用戶端分配的公網ip, 就是使用vpn訪問網站的時候體現出來的ip
iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255.0 -j SNAT --to-source 192.168.1.108
service iptables save #儲存上面設定的規則
service iptables restart
解釋: 我是區域網路設定的, 且只有一個ip就是192.168.1.108, 如果是獨立外網ip, 替換成你的外網ip.
如果你的伺服器有多個網卡, 這個ip可以是任何一個.
vi /etc/sysconfig/iptables
#在-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT前面添加如下, 這個是DNS的連接埠, 不設定的話, 使用者即使能連上vpn, 也只能上qq, 不能訪問網路.
-A RH-Firewall-1-INPUT -p udp -m udp --dport 53 -j ACCEPT
#在-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT後面添加如下
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT
儲存退出, 重啟iptables, 啟動pptp.
service iptables restart
service pptpd start
這個時候嘗試串連你的伺服器, 並使用test 123456登入一個就可以訪問一些網站了.
常用命令:
service iptables sava #儲存規則
service iptables start #啟動iptables
service iptables stop #停止iptables
service iptables restart #重啟iptables
service pptpd start #啟動pptp
service pptpd stop #停止pptp
service pptpd restart #重啟pptp
service pptpd restart-kill #重啟pptp, 並且斷開所有已經串連的使用者
service pptpd status #查看pptp目前狀態
chkconfig pptpd on #設定自動啟動
chkconfig iptables on #設定自動啟動