LazyBlog

前言

需要VPN有很多種理由

  1. 做點壞事(?)
  2. 看其他國家的Netflix
  3. 就是想用免費流量的國外IP來訪問所有網路內容

本篇注意事項

  1. 標題有[Server] 表示指令在伺服器裡頭執行
  2. 標題有[Local] 表示該指令在當前的電腦裡頭的終端機執行
  3. 標題有[Web] 表示這個動作會在Oracle的Dashboard操作

[Local] SSH連線到你已經戳到的Oracle Serve

1
ssh -i id_rsa ubuntu@你的Oracle伺服器IP

[Local] 同意連線,輸入yes並點按下enter

1
2
3
4
Warning: Identity file id_rsa not accessible: No such file or directory.
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:UhUdslpLpVGkuwdT6VodmB3L4LkjStjXrxydr9b9NMs.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

這是成功連線畫面

[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
2
3
4
5
6
7
8
9
10
charon {
load_modular = yes
plugins {
include strongswan.d/charon/*.conf
attr {
dns = 1.1.1.2, 8.8.8.8
}
}
}
include strongswan.d/*.conf

[Server] 利用Docker跑一個 vpn Service

  • 查詢本機IP,方便複製
1
curl ifconfig.me
  • 查詢本機hostname,一樣複製用
1
hostname
  • 替換下面的HOST、HOSTNAME欄位並且跑起來
1
2
3
4
5
docker run --cap-add=NET_ADMIN -d --name vpn-server --restart=always \
-p 500:500/udp -p 4500:4500/udp \
-v ~/strongswan.conf:/etc/strongswan.conf \
-e "HOST=127.0.0.1" -e "HOSTNAME=name" \
billimek/ikev2-vpn-server

[Server] 最後一步,製作MacOS、iPhone可直接使用的描述檔案

1
docker exec -it vpn-server generate-mobileconfig > ikev2-vpn.mobileconfig

使用

很簡單,看了就會


 評論