2 對源碼進行編譯<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPgouL2NvbmZpZ3VyZSAmYW1wOyZhbXA7IG1ha2UgJmFtcDsmYW1wOyBtYWtlIGluc3RhbGwKPGJyPgoKPHN0cm9uZz4zIL2r1LTC68S/wrzPwrXExeTWw87EvP7Eo7Dmv72xtLW9z7XNs9a4tqjOu9bDPC9zdHJvbmc+Cjxicj4KCjMuMSC/vbG0c2FtcGxlcy9jaGFwLXNlY3JldHO6zXNhbXBsZXMvb3B0aW9ucy5wcHRwtb0vZXRjL3BwcMS/wrzPwgpjcCAuL2NoYXAtc2VjcmV0cyAuL29wdGlvbnMucHB0cCAvZXRjL3BwcAo8YnI+CgozLjIgv72xtHNhbXBsZXMvcHB0cGQuY29uZrW9L2V0Y8S/wrzPwgpjcCAuL3BwdHBkLmNvbmYgL2V0Ywo8YnI+Cgo0ILbUxeTWw87EvP69+NDQ0N64xAo8YnI+Cgo0LjEg0N64xC9ldGMvcHB0cGQuY29uZgogICAgvatwcHRwZC5jb25m1+7PwsPmtcRsb2NhbGlwus1yZW1vdGVpcLXExeTWw9DeuMTOqsjnz8KjrDxicj4KCgo8dGFibGUgY2xhc3M9"ynote_table" border="1" cellpadding="2" cellspacing="0" width="100%">
localip 222.201.139.156 # 本地機器物理IP地址,可以通過ifconfig獲取
remoteip 192.168.0.234-238,192.168.0.245 # 分配給遠程連接過來的機器分配的IP地址空間
4.2 修改/etc/ppp/chap-secrets,是遠程連接時的用戶名和密碼,有了配置模版,一看就明白如何添加
# Secrets for authentication using CHAP
# client server secret IP addresses
#username pptpd password *
ethanshan pptpd 111111 *
4.3 修改/etc/ppp/options.pptpd
在Netwok and Routing這個配置項的下面找到ms-dns這個選項,默認是被注釋掉的,將其修改為如下配置,
ms-dns 222.201.130.30
ms-dns 222.201.130.33
ms-dns後面的domain name system的IP地址可以通過查看/etc/resolv.conf文件獲取。
4.4 修改/etc/sysctl.conf中packet forward配置項
打開文件找到net.ipv4.ip_forward修改為=1
# Kernel sysctl configuration file
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
# Default this conf is 0, I use pptpd, so edit it to 1
net.ipv4.ip_forward = 1
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
然後運行如下命令使其立即生效,
sysctl -p
4.5 修改/etc/ppp/ip-up配置文件中的mtu值
打開配置文件,在最後的exit命令前加如下命令
ifconfig $1 mtu 1400
5 如果開啟了iptables防火牆,需要對其添加pptpd的配置,執行如下幾條命令
iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i eth0 -p gre -j ACCEPT
iptables -A FORWARD -i ppp+ -o p3p1 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp+ -j ACCEPT
iptables -A OUTPUT -p tcp --dport 1723 -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
6 運行pptpd,通過如下命令使pptpd在前台運行
pptpd -f
7 pptpd運行錯誤
當Client連接是可能pptpd輸出pptpd-logwtmp.so無法找到,解決方法就是在編譯pptpd的目錄下的plugin目錄下的對應.so文件復制到/usr/lib/pptpd目錄下。
這樣可能會提示版本不對,可以修改plugin目錄下的patch.level.h文件,將其中的version改為錯誤輸出中尋找的後,再make以下,將新生成的.so文件覆蓋/usr/lib/pptpd目錄下的文件,這樣重新運行pptpd就沒有問題了。
8 Windows 鏈接配置
我配置時候,鏈接總是失敗,通過在網上查閱,發現需要將Data encryption這個選項設置為Optional encryption就可以了。
9 限制賬號連接數量
linux系統上提供的pptp vpn服務默認采用的是chap認證方式。這種認證方式比較簡單,只要用戶名和密碼正確即可進行連接,不能對一個賬戶的連接數目,流量,速度進行限制。如 果要實現這眾多的限制,可以采用freeradius認證方式。但是我個人感覺配置freeradius可不是一般的繁瑣啊,花了某個晚上的幾個小時後我 最終放棄了…
不過如果僅僅只是對同一個賬戶的連接數目進行限制,倒是有一個簡單的辦法。這裡提供的方法改自某個英文網站。當用中文搜索不到自己想要的東西時,用英文搜下說不定能有新發現呢。
實現方法很簡單。只要在/etc/ppp文件夾下面建立一個名為auth-up的文件。在裡面寫入如下內容即可:
Click to closeBASH CODE
#!/bin/sh
# get the username/ppp line number from the parameters
REALDEVICE=$1
USER=$2
# create the directory to keep pid files per user
mkdir -p /var/run/pptpd-users
# if there is a session already for this user, terminate the old one
if [ -f /var/run/pptpd-users/$USER ]; then
kill -HUP `cat /var/run/pptpd-users/$USER`
fi
# copy the pid file of current user to /var/run/pptpd-users
cp "/var/run/$REALDEVICE.pid" /var/run/pptpd-users/$USER
這樣只要一個帳號進行了連接,就在/var/run/pptpd-users目錄下記錄下來了。而一旦這個帳號在他處再次登錄,舊有的連接就被殺掉了。所以後面的連接具有優先權。
有道筆記連接: http://note.youdao.com/share/?id=fc97d357e5852a6f15cefb14a99f06d1&type=note