Ubuntu自動搭建VPNServer-PPTP的Shell指令碼
#!/bin/bashif [ "$UID" != "0" ]; then echo "please use sudo to run $0" exit 1fiif [ "$#" != "5" ]; then echo "Usage: (5 parameters)" echo " $0 localip remoteip username password networkSegment/NetMask" echo "" echo " such as: $0 192.168.1.1 192.168.1.1-254 tmp tmp 192.168.1.0/24" echo " $0 192.168.1.1 10.0.0.2-130 myuser mypassword 10.0.0.0/24" exit 1fiwhich pptpd > /dev/nullif [ "$?" != "0" ]; then apt-get install -y pptpdfi# 1. config /etc/pptpd.confsed -i "s%localip%#local_old_ip%g" /etc/pptpd.confsed -i "s%remoteip%#remote_old_ip%g" /etc/pptpd.confecho "localip $1" >> /etc/pptpd.conf # 這個就是你當前主機的IP地址echo "remoteip $2" >> /etc/pptpd.conf # 這個就是給用戶端分配置的IP位址集區# 2. 添加DNS , config /etc/ppp/optionssed -i "s%ms-dns%#old-dns%g" /etc/ppp/optionsecho "ms-dns 114.114.114.114" >> /etc/ppp/optionsecho "ms-dns 10.0.101.10" >> /etc/ppp/optionsecho "ms-dns 8.8.8.8" >> /etc/ppp/options# 3. 添加伺服器名稱 /etc/ppp/pptpd-options# sed -i "s%name pptpd%name $1%g" /etc/ppp/pptpd-optionssed -i "s%name%#na_me%g" /etc/ppp/pptpd-optionsecho "name $1" >> /etc/ppp/pptpd-optionsecho "logfile /var/log/pptp.log" >> /etc/ppp/pptpd-options# 4. 服務端的使用者名稱和密碼的配置 /etc/ppp/chap-secrets#(位置): # 使用者名稱 伺服器名(可設定為*) 密碼 允許登入的ip(可設定為*)echo "\"$3\" $1 \"$4\" *" >> /etc/ppp/chap-secrets# such as: "tmp" 192.168.1.1 "tmp" *# 5. 查看啟動並執行連接埠# netstat -tnlpu | grep pptpd# pptp 連接埠是tcp1723,可以看到1723連接埠開戶echo 1 > /proc/sys/net/ipv4/ip_forward #修改核心設定,使其支援轉寄# 要想永久生效,使其支援轉寄的話# config /etc/sysctl.conf#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf # 將後面值改為1,然後儲存檔案sed -i "s%net.ipv4.ip_forward=1%#net_old_.ipv4.ip_forward = 1%g" /etc/sysctl.conf # 將後面值改為1,然後儲存檔案echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf # 將後面值改為1,然後儲存檔案sysctl -p # 馬上生效# 6. 第四步開啟連接埠轉寄後,路由器連接埠轉寄# 轉寄本地tcp1723連接埠即可# 7. 不加這條只能訪問內網資源,加了可訪問外網# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s $5 -o eth0 -j MASQUERADE# 7.1 出現在openwrt無法上網# 預設在OpenWrt中安裝pptpd並設定好後,雖然能通過vpn串連上,但是連上之後無法通過路由器上網。網上有人說在iptables中增加POSTROUTING的masquerade的規則,經老衲測試,沒有效果。#經反覆摸索,發現用戶端撥完vpn後,上網時的包都被rst掉了,於是想到應該是防火牆在搞鬼。#看了下iptable,還真是複雜,增加了好幾個鏈。想來想去應該是在FORWORD鏈中有名堂,於是加了條規則,發現終於可以上網了。甚喜,遂來分享之。# iptables -A forwarding_rule -s 10.1.56.0/24 -j ACCEPTiptables -A forwarding_rule -s $5 -j ACCEPT# 8. 可能問題1:串連過程中無法通過帳號密碼驗證,logfile顯示:pppd[26133]: Couldn’t open the /dev/ppp device: No such file or directory # 確少/dev/pppls /dev/pppif [ "$?" != "0" ]; then mknod /dev/ppp c 108 0fi# 8. 重啟pptpd服務否則用戶端擷取的IP段不生效/etc/init.d/pptpd restartexit 0