前言
需要VPN有很多種理由
- 做點壞事(?)
- 看其他國家的Netflix
- 就是想用免費流量的國外IP來訪問所有網路內容
本篇注意事項
- 標題有[Server] 表示指令在伺服器裡頭執行
- 標題有[Local] 表示該指令在當前的電腦裡頭的終端機執行
- 標題有[Web] 表示這個動作會在Oracle的Dashboard操作
[Local] SSH連線到你已經戳到的Oracle Serve
1 | ssh -i id_rsa ubuntu@你的Oracle伺服器IP |
[Local] 同意連線,輸入yes並點按下enter
1 | Warning: Identity file id_rsa not accessible: No such file or directory. |
這是成功連線畫面

[Server] 進入Root權限模式
1 | sudo su |
[Server] 修改密碼
1 | passwd |
輸入的時候不會顯示密碼

[Server] 修改authorized_keys內容
編輯authorized_keys
1 | cd ~ && vi ~/.ssh/authorized_keys |
瘋狂按鍵盤上的d直到內容空白
點擊鍵盤上的「i」進入編輯模式,左下角應該會出現insert

再開一個終端機,一個畫面是Server一個畫面是Local
[Local] 回到電腦的終端機尋找id_rsa.pub裡頭的鑰匙並複製起來
1 | less ~/.ssh/id_rsa.pub |
[Server] 把剛剛複製的Key貼到進入編輯模式的authorized_keys底下

完成後先按一下鍵盤的ESC,然後下指令
1 | :wq |
然後Enter
這裡的作法是為了讓你本機電腦可以直接進入root的權限模式
[Web] 開防火牆
- 80Port = 只是為了測試使用,不爽開可以略過
- 443Port = 未來如果有使用SSL,這裡就一起開吧
運算 -> 執行處理

點擊你的機器

點擊公用子網路

點擊安全清單下的安全資訊

點擊新增傳入規則按鈕,並新增三組,仔細看下面圖片

新增80Port

新增4500Port

新增500Port

[Server] 移除 iptables、安裝ufw
1 | apt remove iptables |
1 | apt-get install ufw |
[Server] 使用ufw允許22、500、4500、80、443port,並且打開防火牆
1 | ufw allow 22 |
1 | ufw allow 500 |
1 | ufw allow 4500 |
1 | ufw allow 80 |
1 | ufw allow 443 |
1 | ufw enable |
[Server] 順手安裝nginx,然後重新啟動機器(重要)
若沒有先安裝nginx,機器內則沒有listen 80 的程式,在local端測試時會變成closed
1 | apt-get install nginx |
1 | reboot |
[Local] 嘗試戳一下你的Server的80port
STATE應該要是open,若按照上述流程但仍然是closed表示沒有program listen 80 port
1 | nmap -v -Pn -p 80 你的伺服器IP |
[Server] 檢查ufw是不是沒被關掉,沒被關掉就是成功了
1 | ufw status numbered |
[Server] 安裝Docker
更新一下
1 | apt-get update |
安裝
1 | apt install docker.io |
啟動
1 | sudo systemctl start docker |
1 | sudo systemctl enable docker |
[Server] 建立vpn設定檔案
先複習一下vi
- 鍵入 i 進入編輯模式
- esc退出編輯模式
- :wq儲存該次編輯 (w前面有一個:)
- :q!取消該次編輯
1 | vi ~/strongswan.conf |
- 把下面的內容貼到 strongswan.conf
1 | charon { |
[Server] 利用Docker跑一個 vpn Service
- 查詢本機IP,方便複製
1 | curl ifconfig.me |
- 查詢本機hostname,一樣複製用
1 | hostname |
- 替換下面的HOST、HOSTNAME欄位並且跑起來
1 | docker run --cap-add=NET_ADMIN -d --name vpn-server --restart=always \ |
[Server] 最後一步,製作MacOS、iPhone可直接使用的描述檔案
1 | docker exec -it vpn-server generate-mobileconfig > ikev2-vpn.mobileconfig |