環境:
PIII450/128M/10G/G200
SLACKWARE 10.0 (核心2.4.26)
默認安裝
1.首先下載需要的文件(下載到/root目錄下)
PHP代碼:
wget ftp://slackware.no/linux/kernel/v2.4/linux-2.4.26.tar.bz2
wget http://www.polbox.com/h/hs001/linux-2.4.26-mppe-mppc-1.0.patch.gz
wget http://linuxpackages.slackwaresupport.com/Slackware-10.0/Daemon/pptpd/pptpd-1.1.4-i386-1ah.tgz
然後補丁核心:
PHP代碼:
cd /root
tar xfvj linux-2.4.26.tar.bz2
gunzip linux-2.4.26-mppe-mppc-1.0.patch.gz
mv linux-2.4.26 /usr/src/linux-2.4.26-VPN
cd /usr/src/
ln -s linux-2.4.26-VPN/ linux
cd /usr/src/linux
zcat /root/linux-2.4.26-mppe-mppc-1.0.patch.gz |patch -p1
cp /boot/config-ide-2.4.26 .config
make oldconfig
當出現MPPE選項時選擇m,編譯成內核模塊,接著編譯內核:
PHP代碼:
make dep
make bzImage
make modules(很長時間,我好象用了40分鐘)
make modules_install
cp arch/i386/boot/bzImage /boot/bzImage-2.4.26-VPN
cp System.map /boot/System.map-vpn-2.4.26
cp .config /boot/config-vpn-2.4.26
cd /boot
ln -sf config-vpn-2.4.26 config
ln -sf System.map-vpn-2.4.26 System.map
然後更改/root/lilo.conf文件配置
把 image = /boot/vmlinuz 一句
改為
PHP代碼:
image = /boot/bzImage-2.4.26-VPN
再打開/etc/rc.d/rc.modules
在最後一行增加
PHP代碼:
/sbin/modprobe ppp_mppe_mppc
2.安裝pptpd:
PHP代碼:
cd /root
installpkg pptpd-1.1.4-i386-1ah.tgz
編輯 /etc/pptpd.conf
內容:
PHP代碼:
debug
option /etc/ppp/options.pptpd
localip 10.87.200.1
remoteip 10.87.200.2-10
pidfile /var/run/pptpd.pid
編輯 /etc/ppp/options.pptpd
內容:
PHP代碼:
mtu 1450 #(發送包大小;據說很重要)
mru 1450 #(接收包大小;單位:bytes)
-chap #(不使用CHAP驗證方式)
-mschap #(不使用MSCHAP驗證方式)
+mschap-v2 #(使用mschap-v2驗證方式)
lcp-echo-failure 30
lcp-echo-interval 5
ipcp-aclearcase/" target="_blank" >ccept-local
ipcp-accept-remote
proxyarp #(Create proxy ARP entry)
lock #(鎖定PTY設備文件,沒有研究出到底什麼含義,我看WEBMIN中這樣翻譯的.)
auth #(是否需要使用/etc/ppp/chap-secrets文件來驗證,我這裡需要驗證)
name pptpd #(PPTPD服務器名稱,和下邊要設置的chap-secrets 對應)
ms-dns 202.102.227.68 #(撥入VPN後的的DNS地址)
ms-dns 10.87.13.86 #(可以設置兩個)
#ms-wins *.*.*.* #(過時了,我沒有設置)
#netmask 255.255.255.0 #(這個選項是其他文章中抄來的,不管怎樣設置子網都是#255.255.255.255.ppp就是點對點協議,所以子網必須是255.255.255.255)
require-mppe #(使用MPPE加密)
require-chap #(使用驗證)
require-mppe-40 #(使用 40-bit MPPE 加密)
require-mppe-128 #(使用 128-bit MPPE 加密)
編輯/etc/ppp/chap-secrets
內容:
PHP代碼:
# Secrets for authentication using CHAP
# client server secret IP addresses
# example_user * <password> *
recoilest pptpd 123456 "*"
#"recoilest"是撥入VPN用戶名稱; "pptpd" 是服務器名稱; "123456"是撥入VPN密碼;
#如果允許VPN自動分配遠程接入IP地址,那麼可以像上邊一樣設置為"*";
#如果需要指定遠程IP地址的話可以這樣:
#recoilest pptpd 123456 10.87.200.6
這樣設置就完成了,通過
PHP代碼:
sh /etc/rc.d/rc.pptpd start
可以啟動PPTPD服務,啟動後netstat -a可以看到
PHP代碼:
tcp 0 0 *:pptp *:* LISTEN
說明服務已經啟動了.
如果需要服務器啟動時啟動PPTPD服務可以在rc.local中加入:
PHP代碼:
sh /etc/rc.d/rc.pptpd start
在使用過程中,我發現使用 sh /etc/rc.d/rc.pptpd stop 不是很有效,不如killall pptpd
3.通過VPN轉發數據:
我的iptables設置:
PHP代碼:
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -t nat -A POSTROUTING -o eth0 -s 10.87.200.0/24 -j MASQUERADE
iptables -A FORWARD -p udp -s 10.87.200.0/24 --dport 53 -j ACCEPT
iptables -A FORWARD -p tcp -s 10.87.200.0/24 --dport 1723 -j ACCEPT
iptables -A FORWARD -p gre -s 10.87.200.0/24 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
4.通過XP撥入VPN
開始--〉設置--〉網絡連接--〉創建一個新的連接,下一步--〉連接到我的工作場所的網絡--〉虛擬專用網絡連接--〉名子--〉初始連接-- 〉主機或者IP地址--〉完成
使用帳戶: recoilest 密碼:123456 撥入.
如果出現
說明成功了.
5.撥入後網絡訪問的問題
重要提示1以上設置只能默認通過ETH0來轉發數據
如果需要訪問其他網絡資源,需要增加靜態路由表(在服務器端,根據環境設置)
PHP代碼:
route add -net 10.87.1.0/24 gw 10.87.2.254
重要提示2如果你撥入以後不能訪問本地網絡,請手動更改路由表(在工作站端,根據環境)
或者把 VPN連接屬性中---IP設置-----高級----在遠程網絡上使用默認網關 選項取消對鉤
最後
希望大家遇到什麼問題,我們可以探討.
也可以到http://www.poptop.org/看一下