Ubuntu:用 Docker 安裝 OpenVPN 自架 VPN

2023/01/07 1,427 1 作業系統 , 伺服器 , Linux , Ubuntu

VPN(Virtual Private Network) 是一種虛擬私人網路,它可以讓您在網路上安全地傳輸數據。當您連接到 VPN 時,您的電腦會與 VPN 伺服器建立一個安全的連接,然後您的電腦就會成為虛擬的網路中的一部分。這樣一來,您就可以透過虛擬網路來連接網路,而不會被限制在實體網路中。 VPN 的主要用途是提供安全性,因為它可以加密您的網路流量,讓您在網路上安全地傳輸數據。如果您覺得別人提供的 VPN 不夠穩定、安全,可以考慮自己架設一個 VPN,而看你要跨哪區,就可以選擇購買那一區的伺服器來架設,我自己會選擇購買日本的 VPS(Virtual Private Server),即虛擬專用伺服器,上面同時建置多個服務,順便架設 VPN 自用,拿來玩日本遊戲、看日本的串流都超方便的啦!

VPS 作業系統:Ubuntu(通常購買 VPS 可以選擇自己習慣的作業系統來安裝喔!)
需要安裝的軟體:DockerDocker Compose(安裝教學可以點進去看喔!)

軟體安裝好後可以用以下指令確認是否成功安裝:

docker -v
docker-compose -v

為了方便作業,我接著都是統一用 root 使用者進行。(sudo su 不香嗎?)

建置 OpenVPN Server

找一個路徑來放 Docker Compose 配置檔案,例如:/docker-compose,然後都不要離開這個目錄喔!接著用 vim docker-compose.yml 寫入配置檔案,內容如下:

version: '3'
services:

  openvpn:
    cap_add:
     - NET_ADMIN
    image: kylemanna/openvpn
    container_name: openvpn
    ports:
     - "1194:1194/udp"
    restart: always
    volumes:
     - ./openvpn:/etc/openvpn

這邊 Image 選用 kylemanna/openvpn 提供的環境包,稍後程式會直接到 Docker Hub 抓,Container 名稱直接簡單命名為 openvpn 就很好辨識了!外內 Port 對應好(":"左邊就是對外的 Port 喔!客戶端到時候就是用這串 Port),然後記得對應好 Volume,我這邊直接用配置檔所在路徑下建立 openvpn 子目錄來與 Container 內部的 /etc/openvpn 對應。接著打以下指令:

docker-compose run --rm openvpn ovpn_genconfig -u udp://vpn.example.tw

udp:// 後面接自己的網域,記得要將網域先指向這台伺服器。再來打以下指令:

docker-compose run --rm openvpn ovpn_initpki

這邊是做初始化,有三個地方要輸入東西:

Enter New CA Key Passphrase: // 輸入 6 位數(或以上)的密碼
Common Name (eg: your user, host, or server name) [Easy-RSA CA]: // 輸入剛剛的網域(舉例:vpn.example.tw)
Enter pass phrase for /etc/openvpn/pki/private/ca.key: // 輸入剛才 6 位數(或以上)的密碼

再來簡單輸入 docker-compose up -d openvpn 啟動服務!這樣 OpenVPN Server 就算建置完成,您可以輸入 docker ps 查看執行狀態。

用戶端連線資訊建立

首先要來建立使用者名稱,輸入以下指令:

export CLIENTNAME="user"

user 這個完全可以自訂。再來輸入以下指令:

docker-compose run --rm openvpn easyrsa build-client-full "$CLIENTNAME"

接著有三個東西要輸入東西:

Enter PEM pass phrase: // 輸入該使用者 6 位數(或以上)的密碼
Verifying - Enter PEM pass phrase // 在確認一次剛剛的密碼
Enter pass phrase for /etc/openvpn/pki/private/ca.key: // 輸入建置伺服器所輸入 6 位數(或以上)的密碼

最後透過以下指令就能將使用者連線檔抽出到容器外:

docker-compose run --rm openvpn ovpn_getclient "$CLIENTNAME" > "$CLIENTNAME.ovpn"

您可以用各種方式將 $CLIENTNAME.ovpn 這個檔案放到客戶端裝置上,到時候就是用 OpenVPN 客戶端軟體匯入檔案就能連線上 VPN 了!

OpenVPN 客戶端

多平台皆有對應的 APP!選最新版本來安裝就對了!安裝好匯入 $CLIENTNAME.ovpn 就能連線了!

Windows:https://openvpn.net/community-downloads/
Android:https://play.google.com/store/apps/details?id=net.openvpn.openvpn
iOS:https://apps.apple.com/tw/app/openvpn-connect/id590379981


▲ 這是 Windows 客戶端的使用方式,基本上程式都在右下角,右鍵點開就可以看到選單,匯入 $CLIENTNAME.ovpn 後即可連線使用自己的 VPN!

贊助廣告 ‧ Sponsor advertisements

留言區 / Comments

萌芽論壇