今年 4 月終於要展開在日本的留學生活了,身為一個軟工人網路可是不能中斷的東西!

這篇將會以半年留學生的視點來比較日本常見的幾大電信的方案,由於只會在日本待半年,因此有長期合約 / 解約手續費的方案就先不考慮,同時留學生手頭大多也不甚寬裕,比較的對象就會是幾大電信在背後的格安電信們了。

我自己平時的網路用量大約在 20GB / 月前後,前往的學校是京都文化日本語學校 (KICL),預計住宿在元田中車站附近。因此也會以這樣的條件為基準去挑選方案。
同時也放了之前去過很喜歡的比叡山上當作非市區的景點訊號涵蓋比較。

這次的選手有以下幾個: Ahamo (NTT Docomo)Line Mobile (Softbank)povo 2.0 (au)Rakuten Mobile,將會從 月租費流量手續費海外漫遊 等幾個方面來做比較。

電信商與方案 月租費內含流量 通話費 簡訊 海外漫遊 (以人在台灣的情況) 涵蓋地區 付款方式 初期手續費 退租手續費
ahamo 基本費用內含 30GB 2970 JPY (含稅)
超過 30GB 需另外加購流量包 (1GB/550JPY or 80G/1980JPY),30GB 以上會被限速 1Mbps 官網說明
前五分鐘免費,超過部分 22 JPY/30sec 3.3 JPY/通 不管是 ahamo 或是 ahamo 大盛り 都是 30GB 可用
打電話到台灣 75 JPY/min
打電話到日本 175 JPY/min
接電話 145 JPY/min
發簡訊 100 JPY/通
元田中站周圍: 5G (3.7GHz) 涵蓋,可能有一部分僅有 5Gエリア(3.5GHz,3.4GHz,2GHz,700MHz)
學校周圍: 5Gエリア(4.5GHz,3.7GHz) 涵蓋,可能有一部分僅有 LTE
比叡山上:大部分 4G 涵蓋
信用卡、銀行帳戶扣款
ahamo 大盛り 基本費用內含 110GB 4950 JPY (含稅)
超過 110GB 需另外加購流量包,110GB 以上會被限速 1Mbps
前五分鐘免費,超過部分 22 JPY/30sec 3.3 JPY/通 不管是 ahamo 或是 ahamo 大盛り 都是 30GB 可用
打電話到台灣 75 JPY/min

打電話到日本 175 JPY/min
接電話 145 JPY/min
發簡訊 100 JPY/通
元田中站周圍: 5G (3.7GHz) 涵蓋,可能有一部分僅有 5Gエリア(3.5GHz,3.4GHz,2GHz,700MHz)
學校周圍: 5Gエリア(4.5GHz,3.7GHz) 涵蓋,可能有一部分僅有 LTE
比叡山上:大部分 4G 涵蓋
信用卡、銀行帳戶扣款
LINEMO ベストプラン 基本費用內含 3GB 990 JPY (含稅)
超過 3 GB,未滿 10 GB 2090 JPY (含稅)
超過 10GB 需另外加購流量包,10GB 以上會被限速 300Kbps,15GB 以上會限速 128Kbps
22 JPY/30sec 3.3 JPY/通 第五個月開始才可以使用
3GB / 24hr / 980 JPY
9GB / 72hr / 2940 JPY
打電話到台灣 70 JPY/min
打電話到日本 290 JPY/min
接電話 150 JPY/min
發簡訊 100 JPY/通
元田中站周圍: 5G (3.7GHz) 涵蓋
學校周圍: 5G (3.7GHz) 涵蓋,可能有一部分僅有速度較慢的 5G(700MHz/1.7GHz/3.4GHz)
比叡山上:大部分 4G 涵蓋,有一部分有速度較慢的 5G(700MHz/1.7GHz/3.4GHz)
信用卡、銀行帳戶扣款、Paypay 餘額 無,但是申請當月就解約的話會收 990 JPY (含稅)
LINEMO ベストプラン V 基本費用內含 30GB 2970 JPY (含稅)
超過 30GB 需另外加購流量包,30GB 以上會被限速 1Mbps,45GB 以上會限速 128Kbps
前五分鐘免費,超過部分 22 JPY/30sec 3.3 JPY/通 第五個月開始才可以使用
3GB / 24hr / 980 JPY
9GB / 72hr / 2940 JPY
打電話到台灣 70 JPY/min
打電話到日本 290 JPY/min
接電話 150 JPY/min
發簡訊 100 JPY/通
元田中站周圍: 5G (3.7GHz) 涵蓋
學校周圍: 5G (3.7GHz) 涵蓋,可能有一部分僅有速度較慢的 5G(700MHz/1.7GHz/3.4GHz)
比叡山上:大部分 4G 涵蓋,有一部分有速度較慢的 5G(700MHz/1.7GHz/3.4GHz)
信用卡、銀行帳戶扣款、Paypay 餘額 無,但是申請當月就解約的話會收 990 JPY (含稅)
povo 2.0 月租費: 0 月租費,買流量包,流量用完時限速 128Kbps
沒有流量包的狀態下,每 180 天要購買一次流量包,不然會被解約
22 JPY/30sec 3.3 JPY/通 1GB / 3 天 / 680JPY、3GB / 7 天 / 1980 JPY
打電話到台灣 70 JPY/min
打電話到日本 175 JPY/min
接電話 145 JPY/min
發簡訊 100 JPY/通
元田中站周圍: 5G sub6 涵蓋,有一小部分僅有 4G 涵蓋
學校周圍: 5G NR化 涵蓋
比叡山上:大部分 4G 涵蓋
信用卡
Rakuten 最強プラン 基本費用內含 3GB 1078 JPY (含稅)
超過 3 GB,未滿 20 GB 2178 JPY (含稅)
超過 20GB 3278 JPY (含稅) 吃到飽
22 JPY/30sec,但是用 Rakuten Link 打電話不用錢 3.3 JPY/通 每個月 2GB 高速流量,超過限速 128Kbps 吃到飽
打電話到台灣 115 JPY/min
打電話到日本 290 JPY/min,使用 Rakuten Link 打免費
接電話 170 JPY/min
發簡訊 100 JPY/通
元田中站周圍: 楽天回線 5G Sub6エリア
學校周圍: 楽天回線 5G Sub6エリア
比叡山上:5G / 4G 大概一半一半
信用卡、銀行帳戶扣款

從以上的表格來看,如果只看流量、通話費等條件的話當然是樂天最便宜,尤其是經常在外看影片、更新手遊的族群。
不過樂天在市區也會有部分區域僅有 4G 涵蓋,5G 涵蓋率相較其他三大電信要差一些。

Ahamo 則是有最多的免費海外流量 (30GB),如果偶爾回來台灣想要有日本 IP 的網路可以用的是不錯的選擇。

Line Mobile 如果是 Line 重度使用者的話,有使用 Line 服務不消耗流量的優勢 (官網說明)。

povo 2.0 有著免月租費的特點,官網也推薦可以做為第二門預備門號使用,只要保持有流量可用的狀態或是每 180 天買一次流量包就可以保留門號了,詳細可以參閱 官網資料

最近在一台稍老的機器上要使用 Debian 12 的 image 來 build 時,不管是執行 apt updateapt-get update 都會產生類似以下的錯誤

1
E: Problem executing scripts APT::Update::Post-Invoke 'rm -f /var/cache/apt/archives/.deb /var/cache/apt/archives/partial/.deb /var/cache/apt/*.bin || true'

後來在 stackoverflow 上找到這篇文章,看起來結論是新版的 Docker 有更新了一些 syscall,如果使用了舊版的 Docker 就有可能產生這個問題。

這次產生問題的機器原先是使用 Ubuntu 20.04.6 + Docker 20.04 會產生此問題,更新到最新的 Docker 24.0.4 就解決了。

其實這篇的內容早在 10/6 就已經測完了,只是一直懶得動筆紀錄一下 Orz

先前就一直有聽說 AWS 有要開台灣區的意願,終於在 10/6 看到 gslin 大大貼的 AWS 的台北區 (Local Zone) 開了,那當然要趕快來玩玩看啦

經過測試確實和 gslin 的另一篇 目前 AWS 台北區只能開 *.2xlarge 的機器 一樣,目前只能開 2xlarge 的機器還不能開 spot instance,所以就開了一台 m5.2xlarge 來玩玩看,價格是 $0.62 USD/hour

因為公司有網路電話相關的業務放在 Cloud 上,SIP protocol 對延遲和掉包又比較敏感,當初也是因為這點才棄 AWS 改用 GCP 台灣區。這次就來簡單測試一下島內和國際路由吧!

本次開出來的機器 IP 是 15.220.83.12,從 bgp.he.net 來看,IP 段應該都在 15.220.80.0/20 內。

測試結果

分成島內家用/商用固網、商業服務、國際和自己在玩的自有 IP 相關的測試

島內家用/商用固網

中華非固定制 500M/250M

到中華非固定制
從中華非固定制

中華固定制 500M/250M

到中華固定制
從中華固定制

固定制和非固定制的表現差不多,可以很明顯的看出這次 local zone 的機房是中華板橋 IDC

遠傳固定制 off-net 100M/100M

到遠傳 off-net
從遠傳 off-net

板橋大大寬頻 亞太出口 360M/120M

到板橋大大寬頻
從板橋大大寬頻

個人猜測 AWS 和中華、遠傳都有 PNI,和亞太則是透過 EBIX peer。不過 EBIX 也是亞太自家的,某種意義上也是和亞太直接接了條線了啦 (?)

商業服務

Cloudflare DNS

毫不意外的直連

只有中華才會死不跟你在台灣 peer 啦

到cloudflare-dns

遠傳 SIP gateway

比較意外的是竟然是走中華到遠傳,不過延遲看起來沒啥問題,真的有需要或是有差的話不知道可不可以請他們調整路由?

到遠傳SIP-gateway

國際

Vultr 日本

當時忘了多測一些服務了,只記得測了 Vultr 日本區,就加減看看吧

到Vultr日本
從Vultr日本

看起來到日本是走 PCCW,算是優質的 T1 ISP,總比 174 好了

自有 IP 相關

順便幫忙宣傳一下,如果對擁有一段自己的 IP 有興趣,或是想要跟 AWS、Cloudflare、HE 接 direct peering 的,可以支持一下海豹 (@seadog007)學生聯合交換中心 (STUIX) 計畫,群裡也有 LIR 大佬們可以幫忙申請 ASN 和 IP,如有需要歡迎聯繫。

STUIX VPS

到STUIX-VPS
從STUIX-VPS

多虧 AWS 有接入 STUIX,基本上就是實體線路直接對接的延遲

自家 IP (台北)

到家裡-public-ip

我自己沒有跟 AWS direct peer,不過感謝海豹幫我 transit 了。

雖然我自己的內網路由很明顯噴到國外再噴回來了,有空再來修

自家 IP (日本)

到Vultr日本public-ip
從Vultr日本public-ip

去程一樣是走 STUIX 到我的自有 IP,回程則是走 Vultr -> JPIX 到 AWS

發現回程因為我自己網路炸了所以根本是走 Vultr 的 IP 出去的,一樣有空再修吧,看起來又可以再來重蓋網路了

總結

目前整體來說除了只能開 2xlarge 的機器以外沒啥好挑剔的,坐等台灣區從 local zone 晉升到 region 的那天 ヽ(。∀°)ノ

本範例使用 Ubuntu Server 20.04

安裝大略分為下列幾個步驟:

  1. 安裝 Ubuntu Server
  2. 安裝 Docker
  3. 安裝與設定 OpenVPN

安裝 Ubuntu Server

網路上有一堆教學,其實一直下一步基本上也是沒啥問題啦 (?

安裝 Docker

執行 curl -sSL https://get.docker.com | sudo sh 讓腳本幫你搞定安裝程序

安裝完成以後執行 sudo usermod -aG docker <你的使用者名稱> ,例如 sudo usermod -aG docker ikaros 這樣

這會給你的帳號使用 Docker 的權限,如果沒有做這行就只有最高權限的 root 帳號可以使用 Docker

做完以後記得登入再重新登入,才會套用新的權限設定 (把連線視窗關掉再連一次就可以)

安裝與設定 OpenVPN

這次使用人家打包好的 OpenVPN,設定起來非常簡便,詳細資料可以參考 連結

  1. 先將存放資料的 Docker volume 名稱寫入環境變數,方便後面使用
    執行 echo 'export OVPN_DATA="ovpn-data-example"' >> ~/.bashrc
    接著執行 source ~/.bashrc 重新載入環境變數

  2. 建立存放 OpenVPN 資料用的 Docker volume
    執行 docker volume create --name $OVPN_DATA

  3. 執行 OpenVPN 的初始設定腳本
    執行 docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM ,記得把後面的 VPN.SERVERNAME.COM 換成你自己的 domain

  4. 執行 OpenVPN 的初始設定腳本 趴兔
    執行 docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

在跑腳本過程中會出現 Enter New CA Key Passphrase: 的字樣,是要你設定一組憑證的密碼,務必牢記,在新增使用者時會用到

腳本詢問 Common Name 時可以直接按 Enter 使用預設值

在遇到 Enter pass phrase for /etc/openvpn/pki/private/ca.key 時就是要你輸入剛剛憑證的密碼了

這個步驟完整做完大約會長這樣:
Console 畫面截圖

  1. 啟動 OpenVPN 伺服器
    執行 docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN --restart=unless-stopped --name openvpn kylemanna/openvpn

因為加了 --restart=unless-stopped 參數,之後重新開機也會自動執行

  1. 新增 OpenVPN 使用者
    執行 docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass,記得將 CLIENTNAME 換成你想要的使用者名稱

  2. 取得使用者用的 OpenVPN 設定檔
    執行 docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn,記得將兩個 CLIENTNAME 都換成剛剛新增 OpenVPN 使用者的名稱
    接著執行 cat CLIENTNAME.ovpn 印出設定檔的內容,全部複製下來 copy 到自己電腦就可以,或是用 scp 之類的工具 copy 到自己電腦也可以

執行完以上步驟以後就可以用 OpenVPN Client 之類的工具連線了

產生出來的設定檔應該會像下面那樣:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

client
nobind
dev tun
remote-cert-tls server

remote 你的網址 1194 udp

<key>
-----BEGIN PRIVATE KEY-----
長長的 key ...
-----END PRIVATE KEY-----
</key>
<cert>
-----BEGIN CERTIFICATE-----
長長的憑證 ...
-----END CERTIFICATE-----
</cert>
<ca>
-----BEGIN CERTIFICATE-----
長長的憑證 ...
-----END CERTIFICATE-----
</ca>
key-direction 1
<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
長長的 key ...
-----END OpenVPN Static key V1-----
</tls-auth>

redirect-gateway def1

如果機器前面有防火牆之類的話要記得開 UDP 1194 port,並將 UDP 1194 port 轉發到開 OpenVPN 的機器

一些額外指令

  • 關閉 OpenVPN Server
    docker stop openvpn
  • 重啟 OpenVPN Server
    docker restart openvpn
  • 檢視 OpenVPN Server 的記錄檔
    docker logs -f openvpn

緣起

AWS VPC 在管理複雜的網路設置時確實是個強大的工具,對於我這種喜歡把東西分門別類放得很漂亮,就連機器也不放過的人來說規劃實作起來真的很爽,不過也因為設定實在太細了,一段時間沒做又因為專案需求需要實作時就會漏東漏西,那就來寫一篇筆記給未來的自己當作參考吧。

我才不會說是因為自己多犯了好幾個蠢,多 debug 了 3 小時才來寫筆記勒

情境

本次預計實作的架構如下:

  1. VPC 使用網段 10.9.0.0/16
  2. subnet 一共 6 個,每個都拿一段 /24,分為 ELB 用 2 個 + EC2 用 2 個 + RDS 用 2 個,每個都要在不同 AZ (為了每個服務都可以開 HA)
  3. Security Group 一共 3 個,分別給 ELB (HTTP + HTTPS)、EC2 (HTTP + SSH)、RDS (PostgreSQL) 用

設定步驟

好啦,規劃好了就可以開始設定了

1. 新增 VPC

有需要 IPv6 的話記得在 IPv6 CIDR blockAmazon-provided IPv6 CIDR block,不然選 No IPv6 CIDR block 的話就是 IPv4 only 了

我個人習慣用 專案名稱-環境名稱 (production / staging) 來當 VPC 的名稱

2. 修改 VPC 的 DNS 相關設定

選擇單個 VPC 以後在

  • Actions -> Edit DNS hostnames
  • Actions -> Edit DNS resolution

兩項裡面分別把功能啟用

AWS 的文件 來看,DNS resolution 的設定是用來開關此 VPC 裡面私有域名的解析 (如 ip-10-9-1-123.ap-northeast-1.compute.internal 這樣的 domain),同時也影響 AWS 會不會幫你放一台 DNS Server 在你的 VPC 裡面

另外 DNS hostnames 的設定是用來開關在這個 VPC 裡面拿到 public ip 的機器會不會一起拿到一個解析到該 public ip 的 domain (如 ec2-18-123-123-123.ap-northeast-1.compute.amazonaws.com 這樣的 domain)

主要是為了使用 Elastic Beanstalk 來部署應用程式這邊的設定才一定要開,不過為了方便個人是都會開著

3. 新增 subnet

記得如果要做 HA 的話,同個服務內的每個 subnet 要放在不同的 AZ,不然假設一個 AZ 炸了你的服務還是照樣炸開。

當然如果你遇上了日本沉沒還是救不了你,不過反正最頭痛的也不會是你 (茶。

個人習慣用 專案名稱-環境名稱-放的服務 (elb / ec2 / rds)-編號 (2位數字) 來命名

特別注意

這次新踩到的坑,如果你有用 Elastic Beanstalk 來幫你部署 ELB,或是 ELB 的 target 是用 instance 而不是 ip 的話,要注意 ELB 所使用的 subnet 的 AZ 要和 EC2 subnet 的 AZ 一樣或是完全涵蓋
(ex: ELB 用 ap-northeast-1a + ap-northeast-1b + ap-northeast-1d,EC2 用 ap-northeast-1a + ap-northeast-1d)

不然在 Target Group 裡你的 target 註冊上去以後狀態會是 unused,說明顯示 Target is in an Availability Zone that is not enabled for the load balancer。實際連線看看的話當然是完全連不到。

4. 修改 subnet 設定

如果你希望這個 subnet 的機器都自動拿到一個 public ip,可以在 Actions -> Modify auto-assign IP settings 裡面打開他

5. 新增 Route Table

6. 新增 Internet Gateway 並 attach 到 VPC

7. 新增 default gateway

在剛剛新增的 Route Table 裡面新增 default gateway (Destination 為 0.0.0.0/0,target 為剛剛新增的 Internet Gateway)

如果你忘了新增又剛好像我一樣直接用了 Elastic Beanstalk 部署的話,那就會產生一個很詭異的情形是部署跑很久都不會成功,想 SSH 進 EC2 機器鳥都不鳥你,那就要想想是不是自己犯蠢了

8. 新增 Security Group 與規則

除了服務會用到的 port (如 HTTP/HTTPS) 以外,要注意允許其他 Security Group 來的連線 (ex: RDS 的 Security Group 要允許 EC2 的 Security Group 來的連線)

如果有直接連入 debug 之類的需求,我習慣會把公司對外的固定 IP 設定成允許直接連入,不過這部分就看你如何拿捏安全性和方便了

個人習慣用 專案名稱-環境名稱-放的服務 來命名

9. 新增允許自己連到自己的 Security Group 的規則

如果不允許的話在機器上用自己的 public ip 連線到自己會被防火牆擋下來,然後你就會一頭霧水。Elastic Beanstalk 之類的工具遇到這類問題尤其難 debug,他看起來就是莫名不會動

恭喜搞定

好了,設定大致上就到這邊結束,恭喜你搞定了網路設定,到了會用這種規模的應用程式,搞定網路以後還有更多問題等著你呢 (?

緣起

因為最近整理 E-Hentai 上的 favorite 時發現有部分的收藏吃了版權砲,索性開始把有收藏過的本子和喜歡的畫師都抓一份下來,反正收本子也花不了多少硬碟空間。

看漫畫的部分我習慣使用 iOS 上的 ComicGlass,除了將檔案放在本機,同時也支援從 SMB 協定開檔案或是使用自家的 MediaServer。雖然之前使用 MediaServer 的體驗很好,但它得跑在 Windows / Mac 上,要開一台 VM 跑 Windows 實在太浪費資源了,於是便考慮架個 VPN 連回家裡的 NAS 用 SMB 開漫畫來看了。

要架 VPN 原先第一想到的是 OpenVPN,但是在 RouterOS 上胡搞瞎搞一番以後連線總是有問題 (主要都是憑證問題),在 RouterOS 上同時要使用帳號密碼 + 憑證的驗證方式實在麻煩,就在隨意翻翻 Awesome-Selfhosted 時想起了還有 Wireguard 這個看了很久但一直沒玩過的酷玩具,就在這次來試試看吧。

環境

本次使用的環境是架在 Proxmox VE 上的 Alpine Linux 3.14,使用的是 alpine-virt-3.14.2-x86_64 這個版本

目標是讓 VPN 可以使用一個自己的網段 192.168.6.0/24 來與原先的內網 192.168.2.0/24 通訊,同時可以連上 Internet

實作

恭喜你看完了前面的廢話,Wireguard 的實作實在是簡易到讓人懷疑他是不是 VPN 的程度,就讓我們快速地開始吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 根據 Alpine Linux Wiki 進行安裝 
# https://wiki.alpinelinux.org/wiki/Configure_a_Wireguard_interface_(wg)

# 安裝 Wireguard 管理工具包
apk add wireguard-tools

# 載入 Wireguard 模組
modprobe wireguard

# 產生 private key 與 public key
# 這邊產生的 key 會做為後面連線認證之用
wg genkey | tee privatekey | wg pubkey > publickey

安裝完了 Wireguard 與產生 key,接下來就要寫 Wireguard 的設定檔 /etc/wireguard/wg0.conf (wg0 可以替換成自己想要的介面名稱)

這邊簡單分成兩個版本,一個是讓 VPN Client 存取內網時保持 VPN 網段的 IP 的,這個狀況要自己設定好 Routing 的部分。另一個則是做 NAT,讓 VPN Client 存取內網或 Internet 時都會使用 VPN Server 的 IP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 做 NAT 的版本,如果你不熟網路設定就用這個
[Interface]

# Address 是 Wireguard 介面用的 ip
Address = 192.168.6.1/24

# Wireguard server 所監聽的 port
ListenPort = 45340

# 在這邊貼上剛剛產生的 private key
PrivateKey = SG1nXk2+kAAKnMkL5aX3NSFPaGjf9SQI/wWwFj9l9U4=

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;iptables -A FORWARD -o %i -j ACCEPT
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE;iptables -D FORWARD -o %i -j ACCEPT

DNS = 8.8.8.8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 不做 NAT 的版本,要自己設定和其他網段的 static routing
[Interface]

# Address 是 Wireguard 介面用的 ip
Address = 192.168.6.1/24

# Wireguard server 所監聽的 port
ListenPort = 45340

# 在這邊貼上剛剛產生的 private key
PrivateKey = SG1nXk2+kAAKnMkL5aX3NSFPaGjf9SQI/wWwFj9l9U4=

PostUp = iptables -A FORWARD -i %i -j ACCEPT;iptables -A FORWARD -o %i -j ACCEPT
PostDown = iptables -D FORWARD -i %i -j ACCEPT;iptables -D FORWARD -o %i -j ACCEPT

DNS = 8.8.8.8

如果採用不做 NAT 的版本的話記得要在你的 Router 上設定 static routing,把 192.168.6.0/24 送到你的 Wireguard server IP

寫好設定檔以後,執行以下指令讓 Wireguard 跑起來

1
2
# 如果在上一步驟你不是用 wg0 做為介面名稱,這邊記得要改
wg-quick up wg0

如果要把 Wireguard 關掉則反過來是

1
wg-quick down wg0

到這邊 server 端的基本設定就完成了,接下來是有關 Client 的設定,在這邊示範的是 Wireguard iOS App

首先在 server 上的設定檔加上以下設定

1
2
3
4
5
6
7
8
9
10
[Peer]

# 允許這個 Client 使用的網段
AllowedIPs = 192.168.6.0/24

# 在 iOS App 上產生出來的 public key
PublicKey = QNZxoNgtUF/rFW+SKm+Qs+w+3ywhM+YcUh5GUkhnOWM=

# 每幾秒要檢查一次連線是不是還活著,一般來說 10 ~ 15 秒就夠了,預設是 30 秒
PersistentKeepalive = 10

接著在 iOS App 端設定連線

Addresses 裡面填入想要使用的內網 IP,注意要在 server 設定的 AllowedIPs 網段裡面
下面的 Public key 填入 server 的 public key
Endpoint 填入 server 的 ip 和 Wireguard 的 port
Allowed IPs 在這邊是要填入要經由 Wireguard VPN 連線的網段,如果你要全部流量都經由 VPN 出去的話就填 0.0.0.0/0

到這邊就設定完成,可以試著連線看看了。
連線成功的話 Client 端會顯示有流量在跑

server 端則可以用 wg 指令來觀察 Client 有沒有在動

到這邊基本就會動了,後續再來看看穩定性和效能表現如何

Reference

0%