最近看到IT邦幫忙有許多討論VPN的問題,也幫一個邦友回答一個問題,但我認為哪不能算是好的答案,因為都沒有講到技術的部份。gvpe是之前受人所託在成本及可用性考量下上網找到的。會使用它也是看了別人的推薦,http://forum.shareget.com/t142127/。雖然gvpe的info講解算清楚,但還是測試了一段時間才搞定,其中較不易了解的部份就是if-up這支shell script,所以我就將現在我用的if-up分享一下,號召大家來使用!!
gvpe要能正常運作有兩個檔案很重要,gvpe.conf跟if-up。gvpe.conf就是根據不同的node作設定的檔案,但都使用同一個檔案,參考info說明應該大家都能瞭。if-up是一支搭配gvpe設定的變數所成的shell script,用來建立虛擬網卡的相關事宜,包括網卡設定及路由等。現就以三個site的互聯簡單說明:
1、假設site A 192.168.1.0/24,VPN gateway nodename A:eth0 192.168.1.1(對內IP) , eth1:<<對外上網的IP>>
2、假設site B 192.168.2.0/24,VPN gateway nodename B:eth0 192.168.2.1(對內IP) , eth1:<<對外上網的IP>>
3、假設site C 192.168.3.0/24,VPN gateway nodename C:eth0 192.168.3.1(對內IP) , eth1:<<對外上網的IP>>
if-up的程式及說明如下:
#!/bin/bash
# 設定虛擬網卡的裝置名稱、MAC Address及TX Queue Length
# 虛擬網卡的裝置名稱、MAC Address都用預設的,TX Queue Length則是參考實體網卡的值
ip link set "$IFNAME" address "$MAC" txqlen 1000 up
# 依據不同的Node name設定虛擬網卡的IP
# Node name必須與gvpe.conf中設定的一樣
[ "$NODENAME" = "A" ] && ip addr add 192.168.1.254 broadcast 192.168.1.255 dev "$IFNAME"
[ "$NODENAME" = "B" ] && ip addr add 192.168.2.254 broadcast 192.168.2.255 dev "$IFNAME"
[ "$NODENAME" = "C" ] && ip addr add 192.168.3.254 broadcast 192.168.3.255 dev "$IFNAME"
# 設定VPN的預設路由
ip route add 192.168.0.0/16 dev "$IFNAME"
# 依據不同的網段設定路由
# eth0被設計為內部網段的網卡,以eth0的IP第三組數字確定網段
IN_NIC="eth0"
IN_IP=`ifconfig "$IN_NIC"|grep -w "inet addr"|cut -d':' -f2|cut -d' ' -f1`
IN_IP_SUB=`echo "$IN_IP"|cut -d. -f3`
for i in 1 2 3
do
if [ "$i" = "$IN_IP_SUB" ]
then
continue
fi
route add -net 192.168.$i.0 netmask 255.255.255.0 gw 192.168."$i".1
done
gvpe本身提供的範例有點長,我這樣作也許不是最好的,但已經可以通了,而是end to end,不是只要作為VPN gateway的電腦互通而已。另外gvpe也支援node-up跟node-down這兩個檔案,但是我都沒有設定也能執行。有問題可以多交流,希望大家都來試試!!
還是要再強調一次,gvpe只是利用上網線路設定VPN的工具,記得要設定firewall等資安工具,以免被駭。
很實用,
請問如果我是用一對一NAT出去,
是不是就不能使用gvpe
我測試用兩個Public IP,是可用gvpe正常連線,
但如果是Private IP對應一個Public IP,就沒法和另一台主機(Public ip)相連,
會出現如下,
can't bind udpv4 on udp/X.X.X.X:655: 無法指定所需的位址, exiting.
不知作者,是否有遇過相同問題
感謝