2014年11月24日 星期一

OpenSuSE 12.2 中使用pptpd佈建VPN server,並設置NAT,防火牆設置,log設置

1. 首先 YaST中安裝package pptpd

2.pptpd vpn 相關的設定

vim /etc/pptpd.conf
添加以下設定
(在此我的server有兩張網卡,
本來就有區網 網段為192.168.0.x, 為了避開, 所以改成192.168.16.x,
一般分開兩網段比較方便管理,也有人用10.0.0.x)
# 開啟 debug (會寫到 /var/log/message) 測試完記得關閉
debug
# 連線數
connections 20
ppp /usr/sbin/pppd
option  /etc/ppp/pptpd-options
localip 192.168.16.1
remoteip    192.168.16.201-220
debug 測試的時候可以開(把#號拿掉)
local-ip是你主機的IP, 可故意分在不同網段
connections 可不寫

vim /etc/ppp/options
asyncmap 0
auth
crtscts
lock
hide-password
modem
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
noipx 


vim  /etc/ppp/pptpd-options
name MyVPN

# 與連線加密相關的設定
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
lock
nobsdcomp

# 設定要分派的 DNS Server
ms-dns 168.95.1.1
ms-dns 8.8.8.8
# 指定 logfile
logfile /var/log/pptpd.log
# 設定閒置幾秒後自動斷線
idle 7200
最後編輯帳號密碼
vim /etc/ppp/chap-secrets
"username"      MyVPN   "password"    *



開啟 Forward,主要是為了能夠進行 NAT
vim /etc/sysctl.conf
 net.ipv4.ip_forward = 1

service network reload

3.啟動pptpd

最後啟動 pptpd 並且設定 pptpd 開機自動啟用
chkconfig --level 345 pptpd on
service pptpd start

檢查 pptpd是否有 run 起來:
service --status-all | grep pptp

note: 重啟pptpd的方法
service pptpd restart


3. 防火牆設置

opensuse 12.2內建SuSE2firewall ,我不會改iptables..
所以直接對internal的route設通通可以

vim /etc/sysconfig/SuSEfirewall2
記得備份!

裡面加入以下設定
#對internal 開放
FW_ALLOW_CLASS_ROUTING="int"

FW_ROUTE="yes"
FW_MASQUERADE="yes"

FW_DEV_INT="ppp+"
#如果對內本來還有別張網卡, ex eth1
#那就改成 "eth1 ppp+" 以空白隔開
 完成 


Appendix. 其他linux之防火牆設置

一般linux的話, 直接照著網路上常有的nat設定 for vpn即可(port 1723 與 gre協定)

先來做個備份吧

iptables-save > ./iptables_backup
note: 還原的方法
iptables-restore < ./iptables_backup

開始設定iptable
#開啟 forward
echo "1" > /proc/sys/net/ipv4/ip_forward
#pptp
iptables -t nat -A POSTROUTING -s 192.168.16.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i eth0 -p gre -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp+ -j ACCEPT
 
Appendix.2 自訂log要記錄的資料
 vim /etc/ppp/ip-down.local
 以下為範例:
 (改完後記得還要chmod 把ip-down.local改成可執行 ex: chmod 777 /etc/ppp/ip-down.local)

#!/bin/bash

BASENAME=${0##*/}
INTERFACE=$1
DEVICE=$2
SPEED=$3
LOCALIP=$4
REMOTEIP=$5
IPPARAM=$6


echo "================================================" >> /var/log/pptpd.log
echo "log of clientIP: $6    username: $PEERNAME" >> /var/log/pptpd.log
echo "------------------------------------------------" >> /var/log/pptpd.log
echo "/etc/ppp/ip-down.local starts.." >> /var/log/pptpd.log
echo "time: `date -d today +%F,%T`" >> /var/log/pptpd.log
echo "interface: $1    device: $2" >> /var/log/pptpd.log
echo "assignIP: $5" >> /var/log/pptpd.log
echo "================================================" >> /var/log/pptpd.log
 
 
非常有幫助的資料:
在 Linux 安裝 VPN Server 教學 (pptpd on CentOS)  
PPTP协议的VPN服务器的搭建,包括pptpd的自动启动...