Linux主機虛擬通道(PPTP VPN)(Linux主機伺服器架設技術)
Linux主機虛擬通道(PPTP VPN)(Linux主機伺服器架設技術)
用 Linux 建立虛擬通道(PPTP VPN),供公司外部的 IP 與主機建立專用通道,再以此通道對外連線。
其運作原理如下,pptpd 提供使用撥接進入的通道, iptables 提供 route 出去的路由。
Linux pptp設定:
* 安裝 pptp
root@Linux:# apt-get update
root@Linux:# apt-get install pptpd
* 修改 /etc/pptpd.conf
root@Linux:# vi /etc/pptpd.conf (確保您的設定檔內, 有以下參數設定)
option /etc/ppp/pptpd-options
logwtmp
#撥接進入時, vpn server 的 ip address
localip 192.168.0.1
#撥接進入時, 可配發的 ip address (與 dhcp 無關)
remoteip 192.168.0.10-20
* 修改 /etc/ppp/pptpd-options
root@Linux:# vi /etc/ppp/pptpd-options
# name 參數與 client 端設定有關
name myvpn_name
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
# 配送 ip address 給 client 時, 指定 DNS Server IP 位置供 client 使用
ms-dns 168.95.1.1
ms-dns 168.95.192.1
proxyarp
# Debian: do not replace the default route
nodefaultroute
lock
nobsdcomp
* 建立可撥入的帳號密碼, 修改 /etc/ppp/chap-secrets
root@Linux:# vi /etc/ppp/chap-secrets
# client server secret IP addresses
username myvpn_name 自訂password *
#IP address 使用 "*" 代表不限制這個帳號所撥入的 ip 位置
* 啟動 pptpd
o 手動啟動: root@Linux:# service pptpd restart
o 開機自動啟動: 使用 ntsysv 設定
* 至此, 您可以由 winxp 試著撥入, 應已可以取得一個 192.168.0.10-20 的 IP 位置。不過您也會發現,怎麼無法上網? 原因是, 您的網路封包皆已導向 vpn server , 若 vpn server 不給上, 您反而無法上網。因此, 接下來, 必須修改 /etc/rc.local 的 iptables 規則列, 來解決此一問題。
Linux iptables設定
* 修改 /etc/rc.local
root@Linux:# vi /etc/rc.local
# 打開 forward, 找到下面這一行, 去除 #
echo "1" > /proc/sys/net/ipv4/ip_forward
#在 $IPTABLES -P FORWARD ACCEPT 這一行的下方, 加入以下數行
###—————————————————–###
# 啟動 VPN 內部對外轉址
###—————————————————–###
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
iptables -A FORWARD -i ppp0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT
# 注意: ppp0 這網卡代號可能因 pptpd 軟體而異,請下指令 ifconfig 查詢正確代號
# ——————————————————###
#在此區塊底下加上 vpn 連線限制
###—————————————————–###
# 拒絕外部 IP 連至內部 port 號
###—————————————————–###
###————————————————————–###
# 限制外面取用 VPN 連線, ex: 只開放 220.130.230.77及 163.26.182.0/24 撥入
###————————————————————–###
$IPTABLES -A INPUT -p tcp -s 220.130.230.77 –dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 –dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 –dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp –dport 1723 -j DROP
* 啟用新規則列
root@Linux:# service rc.local start