Amazon Web Services (以下稱AWS)自從推出新使用者免費使用一年的方案,就想要在上面試架VPN。網路上有很多PPTP的教學,我個人比較偏好使用L2TP,而AWS上的Security Groups上只允許三種協定(ICMP、TCP、UDP),L2TP需要用到的ESP協定並不在這份白名單裡面。
事實證明呢!只是我不敢去嘗試而已,真正架起來後發現ESP是暢行無阻的。這也是我喜歡用L2TP的原因之一,一些防火牆設定會悄悄的被bypass。這篇提供了我在AWS成功架設的script,給大家方便一鍵架設。
首先,免費的AWS申請可能要到 什麼是雲端服務?阿正老師教你免費玩Amazon EC2雲端主機!(上篇) 和 阿正老師教你免費玩Amazon EC2雲端主機(下篇):主機實戰篇 請阿正老師教學一下了。
回到正題架設L2TP VPN server,對岸曾經有牛人寫了一個L2TP一鍵安裝包。因為AWS的網路環境跟一般的虛擬主機不太一樣,我修改了這份安裝包並且重新上傳,使用方法如下 (註:我的使用環境為 Ubuntu 10.04 LTS)
wget http://data.shaolin.tw/script/l2tp.sh
sudo sh l2tp.sh
MD5: 4c95d44c9d9c562093ca1003b0451782 l2tp.sh
原作者有提供圖文教學,如果不明白可以參考,這個版本跟原版的差別有下面三點:
1. 直接在安裝過程中設定帳號密碼
2. 根據AWS的網路環境修改/etc/ipsec.conf設定
3. 修正原作reboot後VPN不能正常運作的問題 ( /etc/rc.local )
其實我原本打算全部程式都用 apt-get 處理,卻一直架不起來,後來才發現有雷,所以改回來用可以正常運作的版本自己 make。
VPN server基本上已經架設完成,剩下的是要修改AWS的防火牆設定:在Security Groups允許UDP 500 1701 4500。為了連線方便,也順便去Elastic IPs選項免費申請一個固定ip吧!
最後就是實機連線測試了:
手機平板:
Android 手機(2.3.3),測試成功!
iPad(iOS 4.3.1),測試成功!
iPad 2(iOS 5 beta 7),測試成功!
Mac OS:
MacBook Air (Mac OS X Lion 10.7.1),測試成功!
Mac mini (Mac OS X Lion 10.7),測試成功!
Windows:
windows在這個架構下比較麻煩一點點,需要在註冊檔裡面允許NAT-T,
Win XP 請找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec
Windows 7 (Vista) 請找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
新增AssumeUDPEncapsulationContextOnSendRule,DWORD,值=2。
請參考 Microsoft Support 。
Windows XP,測試成功!
Windows 7,測試成功!
如果你仍然不能連線,在某些網路環境下會嘗試發ICMP的封包,所以在AWS security group需要允許ICMP連線,或許會對連線有幫助。
有些人覺得AWS上免費方案的I/O限制(一個月一百萬次)很少,如果拿來架VPN會不會有問題?前幾天剛好月初,我這邊的數據是使用了153MB的網路流量,而I/O requests只有806次。所以比較要擔心的應該是網路流出量不夠 :)
31 意見:
感謝ㄉㄉ分享~
感謝大大無私分享
LINUX AMI似乎不行
沒有IPSEC的指令?
您好我這篇的環境是在 Ubuntu 10.04 LTS 上面,
您可能找一下別的 AMI (還滿多免費可以用的)
請問UBUNTU要怎登入上去啊?
我用PUTTY都失敗
每一個image都不太一樣唷!
你可以搜尋看看你現在用的AMI是誰做的,
應該可以找到預設的帳號密碼是什麼
我照著步驟操作
也使用 Ubuntu 10.04 LTS ~ iPhone 連不上去
嗚嗚嗚
To JAMES,
您提供的訊息有點少,看不出是哪裡出問題
有試過電腦可以連線嗎?
或是其他裝置測試連線看看
或是ssh登入用 netstat -al 看看服務是不是已經有 listen 了
您好:我是使用 AMI: bitnami-gallery-3.0.1-0-linux-ubuntu-10.04-ebs 的免費 Instances
照著你的步驟操作 ,測試後 ,結果 我的WIN 7 也連不上去 哈哈,ICMP 也開了 也是不行 ...
只能說電腦不精 ~ 只能靠 Google 照著步驟操作 >"<
想架L2TP 是因為之前架的 Amazon Web Services PPTP 突然不能連了 (T^T) 使用3G網路可以連 ~ 但用WIFI 不行
bitnami系列我有用我的script試過,還滿正常的QQ
我沒有iphone,但有試過用ipad連線,3G和wifi都可以跑
ipod touch連wifi也連得上~
如果 netstat -al |grep l2f 有東西,
看看是不是系統防火牆先擋掉了
我照著打上 netstat -al |grep l2f
上面寫 udp 0 0 *:l2f *:*
看不懂 ..呵呵
我開的 PORT 有
ICMP ALL
22 (SSH)
80 (HTTP)
443 (HTTPS)
500
1701
1723
4500
看起來像是服務有跑起來了,
防火牆的設定也正確~
不太確定發生了什麼事情,抱歉!
可以問一下您在 windows 上面跑有修改註冊檔嗎(如上文章),
需要改一下才能連唷!
其實您還可以在Security Groups把所有的port都打開看看,
我在測試階段曾經有發生過找不出原因把AWS那層防火牆全開就可以連了
提供您參考!
我現在的狀況是設定和防火牆都對
註冊檔也用了
結果還是不能連線
(WIN7 X64)
剛剛我直接申請了一個新的 instance (請見下圖)
http://data.shaolin.tw/image/temp/aws_new_instance_info.png
登入後,直接執行
wget http://data.shaolin.tw/script/l2tp.sh
sudo sh l2tp.sh
完畢後,跑到管理介面設定 Security Groups。
然後就可以使用了耶! (請見下圖)
http://data.shaolin.tw/image/temp/aws_my_ip_check.png
我目前測試結果是可以連
但是非常不穩定
三不五時就會連線中斷
我現在才回來看到這篇 ...
真的很謝謝您熱心的幫忙測試!!
照著你的步驟,也換成64位元的 ( 我原本是使用32位元 )
還是非常殘念的不行 (T^T)
我的技術不足 ... 但真的非常感謝你
我原本是用美國的AWS (加州) 後來換成日本的 但應該不是這原因
明天在來試試
似乎是學校路由器的問題
在家裡的XP連接很正常也很順
在學校不穩定+頻繁斷線
是不是不能用了?? 都連不上去T_T
我現在還可以用耶,請問樓上是哪裡連不上?
可以用了~謝謝! 可能我不是ubuntu的關係吧 ~用原著那個CentOS / Fedora 可以跑~ 之後再改掉登入帳號密碼
抱歉我忘記文字說明了,這份 script 是 For Ubuntu 32bit and 64bit
我在程式碼開頭註解裡面有提到~
請問你有設定過openvpn以外的SSL VPN經驗嗎?
在某些限制比較嚴格的環境下(學校.醫院.公司),L2TP的穿透防火牆能力應該不會比走443的SSL VPN好。
而常見的openvpn需要在client端安裝軟體,這在使用上很不方便,尤其是公用電腦(網咖)不會給系統管理員權限。
所以我在找client 不需安裝軟體, 可以直接走ssl vpn的方法...........
這兩天找到有web-base 的 ssl-explorer...
但還沒實際測試過~~似乎也是open source
除了這之外是否有其他的方案可行呢??
PS 我也是輔大的 :P 謝謝你的script
http://www.youtube.com/watch?v=GH38WNcfegY
這裡頭提到的Adito,前身好像就是ssl-explorer
現在改叫OpenVPN ALS
http://en.wikipedia.org/wiki/SSL-Explorer:_Community_Edition
官網:http://sourceforge.net/projects/openvpn-als/
安裝教學 http://www.sohoadvisers.com/tutorials/adito-ssl-vpn/installing-adito-ssl-vpn
上面的需求我通常都用ssh tunnel來解決,
ssh port 開在 80 或 443,
win環境下,下載免安裝的 putty 或 pietty 就可以使用
mac或ubuntu下只要一行指令就可以使用
amazon 在亞洲的伺服器跟台灣的連線速度都還滿快的
可以一試
我用IPAD2可以连,但是断开后重新连就连不上去了,这个时候用 /etc/init.d/ipsec status 查看的结果是 1 tunnels up,也就是说断开后 tunnels并没有释放,这个时候再连的话就连不上去了。需要重新运行一遍 /etc/init.d/ipsec restart才可以,请问这个问题如何解决,谢谢
對不起您的留言被 google 分類在垃圾留言,現在才看到!
我目前沒有碰到這種問題,請問 log 裡面有沒有可以參考的訊息呢?
如果真的解不出來,我可能會寫個小 script 定時檢查連線是否存在並和 status 做比對,如果連線和 status 數量對不上,就 restart 這樣~
借用標題請問一下,我看了2008年的文章,裡面教學使用wireshark擷取封包,擷取後的檔案存檔後,做修改還是正確的嗎?
又怎麼做修改?並且丟出去? 可以的話能繼E-MAIL跟我說嗎^^
您好,其實你回在那篇文章下面我也看的到 XD
wireshark 的作用在於觀察和記錄,舉例來說,就好像對一場比賽做完整的紀錄,從記錄裡面你可以看到誰在幾分幾秒投了三分球,但是你去修改那份記錄,仍然改變不了該場比賽誰贏誰輸的事實~
您好,以為所有的linux都可以使用,看完下面的討論才知道在ubuntu上跑的版本似乎是不能在Fedora上跑。我已經裡用fedora跑openvpn,再用你的方法安裝了L2TP,果然是跑不起來。
想請問,如果我要去安裝給fedora的版本,要怎麼做比較好?需要先移除嘛?還是直接再執行一次安裝程序就好?
謝謝你
@Old K
文章中提到的對岸牛人有做 fedora 的版本:http://zeddicus.com/a-key-installation-package-l2tp,也許你可以試試看用那個版本重跑。稍微看一下一些關鍵設定檔在新建之前會先清除,應該可行。
fedora 用本篇的 script 應該是跑不起來,因為預設沒有 apt-get,所以很多基本的元素都沒有裝起來。
張貼留言