OpenVPN 開啟ipv6
For English-speaking readers, please wait while I translate the article. If finished, the link will be available.
>>LINK<<
本文
我之前架設的OpenVPN是純IPv4,在外連線也沒有什麼問題,唯獨就是一些網站連線有夠慢。自從家中從鳳信Cable換成中華FTTH後,多了IPv6,我也想說是時候讓我的OpvnVPN擁有IPv6了。
設定的過程路途很坎坷XD,我也花了不少時間,以下只會針對OpenVPN設定整理,關於中華電信設定請待我另闢一篇文章撰寫,可以點擊標籤看我有沒有寫完XD。以下以Ubuntu Server(22.04.3 LTS) 為示範系統,Ubuntu/Debian 及其分支系統可以參考,其餘請勿照做,以免出事。
1.首先,得先讓我的Linux Server 獲取IPv6地址(不是fe80:: 或是 fe00::這種的喔),詳情請點擊標籤看我的其他篇文章(看不到就是我還沒寫好)
2.接下來,在terminal輸入以下指令以獲得我們的IP地址:
ㅤ
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:8d:49:9f brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.1.30/24 metric 100 brd 192.168.1.255 scope global dynamic ens160
valid_lft 4561sec preferred_lft 4561sec
inet6 2001:b011:xxxx:xxxx:xxxx:xxxx:xxxxx:xxxx/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 86158sec preferred_lft 14158sec
inet6 fe80::20c:29ff:fe8d:499f/64 scope link valid_lft forever preferred_lft forever
89: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1371 qdisc fq_codel state UNKNOWN group default qlen 500 link/none
inet 10.8.0.1/24 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::6a42:6f5:e975:316d/64 scope link stable-privacy
valid_lft forever preferred_lft forever
我們知道,我們的外網IP prefix的前四位是2001,所以在設定OpenVPN的v6位置時,數字一定要高於2001(我親身體驗,如有誤歡迎留言),所以我選擇2101。
3.開始動工!以下皆使用nano文字編輯器,習慣vim的朋友可以自行將nano替換成vim。
ㅤ
sudo nano /etc/openvpn/server.conf
然後在server.conf裡添加:
server-ipv6 2101:db8:0:123::/64 #2101後面的ip可以自己決定
push "route-ipv6 2101:db8:0:123:/64" #ip須與上相同
tun-ipv6
push tun-ipv6
push "route-ipv6 2100::/3"
#上面是2101這邊就是2101-1=2100(我參考openvpn wiki來的)
push "redirect-gateway ipv6"
#建議將log等級調整到4以方便debug,可於確定沒文題之後調回去
verb 4
#以下可以斟酌添加
push "dhcp-option DNS fe80::xxxx:xxxx:xxxx:xxxx"
儲存後先刪掉舊有log再重啟openvpn,以便等一下我們看log才不會樂樂長
sudo rm /var/log/openvpn/openvpn.log
sudo systemctl restart openvpn*
重啟完成後,讓我們來看看log有沒有什麼問題
sudo cat /var/log/openvpn/openvpn.log
只要沒有明顯error,基本上都沒有問題,接下來再嘗試連接OpenVPN,你會發現YOU下面的private IP多了一組IPv6

4.最後,讓我們來去ipv6測試網站看看我們有沒有成功!
ㅤ
測試網站1:https://ipv6-test.com
測試網站2:https://test-ipv6.com
以下是我的:


如果遇到Packet too big 或是 瀏覽器偏好使用IPv4的話,可以參考以下步驟將MTU從原本的1500調低
5. 將MTU調低(Optional)
ㅤ
(1) 於clients.ovpn 裡添加以下兩行(理論上哪裡都可以)
數字2 = 數字1 – 40
eg. 數字2 = 1400,數字1 = 1360
tun-mtu 數字1 #每台機器可能有所不同
mssfix 數自2
添加完之後記得重啟openvpn及客戶端重新導入ovpn檔案。