# 幫Switch開VPN ```mermaid graph TD; 小烏龜---Router---端末 ``` > 端末: 泛指各種裝置 Switch也包含在這 > Router : 另外接的Wifi分享器 > 這邊圖上Router如果有支援VPN的功能,可以去使用其功能(e.g. VPN Fusion, OpenVPN...) > 沒有Router,或分享器沒有VPN功能的,可以看我接下來的分享 ## 旁路由 * 這邊採用openwrt做為系統 * 透過VM(虛擬機來安裝openwrt)作為旁路由 * VPN 採用 [ProtonVPN](https://protonvpn.com/) >![](https://i.imgur.com/EvXwym5.png) : VM >![](https://i.imgur.com/UUnoKlj.png) : VPN * 簡圖 ![](https://i.imgur.com/jRgJVu6.png) 1. 這邊黑色線就是原本網路出去的途徑 2. 紅色線是我們要做的事情 3. 加上手動設定switch網路就可以讓switch走VPN連線 ### Hyper-V 安裝 > 這邊是選我平常有在使用的VM Hyperviser > 也可以使用 VirtualBox, VMWare 等軟體 1. 控制台 ---> 程式與功能 ![](https://i.imgur.com/LOQytEM.png) 2. 開啟或關閉Windows 功能 3. 找到Hyper-V 這一項 ![](https://i.imgur.com/M8iAneD.png) 4. 將其勾起 5. 確定 6. 重新啟動 ### Openwrt 安裝 1. 開啟 Hyper-V管理員 ![](https://i.imgur.com/jZ5tM9C.png) 2. 建立虛擬交換器 ![](https://i.imgur.cm/ugdoRO2.png) | 連線類型 | 描述 | | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 外部 | 讓虛擬機器能夠存取實體網路,以便與外部網路上的伺服器和用戶端通訊。 允許相同 Hyper-V 伺服器上的虛擬機器彼此通訊。 | | 內部 | 允許在相同 Hyper-V 伺服器上的虛擬機器之間,以及虛擬機器與管理主機作業系統之間的通訊。 | | 私人 | 只允許在相同 Hyper-V 伺服器上的虛擬機器之間進行通訊。 私人網路會與 Hyper-V 伺服器上的所有外部網路流量隔離。 當您必須建立隔離的網路環境,例如隔離的測試網域時,這種類型的網路非常有用。 | ![](https://i.imgur.com/woAdKdt.png) > 給個示意圖 大概的感覺會是這樣 > **在這邊"外部" 是有勾選 "允許管理作業系統共用此網路介面卡" 這個選項的** 3. 這邊我們希望,虛擬機(VM) 可以直接跟Nintendo Switch通訊,故選擇外部 > 在其他虛擬機軟體上應該可以在網卡設定的部分找到"與實體網路介面卡橋接"的選項,這部分再麻煩自行去尋找 ![](https://i.imgur.com/nquQdGc.png) * 允許管理作業系統共用此網路介面卡,這個選項記得要勾,除非你希望網路介面卡(網孔)由Hyper-V Switch獨佔(或是你有其他網路介面卡 那可以不勾) > Memo : 之前有試過,與Hyper-V共享無線網路卡,網路會卡到不太能用,如果有知道為什麼的,再麻煩各位留言告訴我 > 允許管理作業系統共用此網路介面卡 : 如果您想要允許 Hyper-V 主機與虛擬機器共用虛擬交換器和 NIC 或 NIC 小組的使用,請選取此選項。 啟用此功能後,主機可以使用您為虛擬交換器設定的任何設定,例如服務品質 (QoS) 設定、安全性設定,或 Hyper-V 虛擬交換器的其他功能。 4. 下載 Openwrt系統 https://downloads.openwrt.org/releases/22.03.2/targets/x86/64/openwrt-22.03.2-x86-64-generic-squashfs-combined-efi.img.gz 下載後可以用 [7-zip](https://www.developershome.com/7-zip/) 解壓縮 > https://www.cpci.dev/virt-load-img/ ... 這邊hyper-v 不吃img檔 所以要透過 [qemu-img](https://www.qemu.org/download/#windows) 去轉檔成VHDX ```bash qemu-img convert -f raw -O vhdx openwrt-21.02.0-rc3-x86-64-generic-squashfs-combined-efi.img openwrt-efi.vhdx ``` > 這邊附上轉好的檔案 若有安全疑慮的朋友就照上方的方法自己轉一份 > https://mega.nz/file/OQgESACT#thuCVSFEpmJfDZ5CK5tGZzrnoZ7j43SAoWpV7rvyXWw 5. 安裝Openwrt ![](https://i.imgur.com/3ygEFgj.png) * **這邊安全開機要取消勾選** * 然後下面的網路選擇剛剛建立的外部虛擬交換機 > Memo: 我也不清楚有沒有勾選安全開機的差別 6. 然後開機 ![](https://i.imgur.com/o93l052.png) ![](https://i.imgur.com/bwznfcg.png) * 這邊可以看到預設的IP為 `192.168.1.1` 我們直接把他改掉 ```bash uci set network.lan.ipaddr='192.168.2.1' # 設定lan IP uci commit # 保存設定 /etc/init.d/network restart # 重新啟動網路介面 ``` ![](https://i.imgur.com/ecG8yPh.png) 7. 新增IP * 我們找到網路介面卡 ![](https://i.imgur.com/mnJ7nXa.png) * 修改IP ![](https://i.imgur.com/xYQhMsr.png) 8. 進 GUI介面設定 PPPoE連線 > 這邊會看到網頁用 192.168.3.1 在寫文之前已經用了192.168.2.1 故改成192.168.3.1 > 預設無密碼 ![](https://i.imgur.com/uZNPUbu.png) * Network-> Interface 此時應該會只有一個Interface(介面) ![](https://i.imgur.com/wa9qnum.png) > br-XXX : br代表bridge 這邊可以當作把網孔直接相連,彼此互通 > 進到Devices標籤可以看到br-lan只有綁一個eth0的實體介面卡 > ![](https://i.imgur.com/jf8LK0S.png) > 這邊我會把DHCP 關掉 避免在同一個網路環境中有兩台DHCP server * 新增PPPoE Interface > 這邊有設定過分享器或Router應該知道,網路連線是需要設定固定IP或以PPPoE驗證跟電信商要求IP的 ![](https://i.imgur.com/3WoX1zi.png) > 這邊username 和password就要請各位找中華電信的帳號密碼小卡來做填寫了 ![](https://i.imgur.com/3Bfx6BN.png) * Firewall Settings這頁要套 wan的firewall-zone ![](https://i.imgur.com/TyN17aF.png) * 設定完成 ![](https://i.imgur.com/uTyGfDm.png) > 在這邊PPPoE介面是紅色 > 是因為我已經將其套上Wan的Policy 方便我電腦拿著 192.168.3.X的IP寫這篇文章 > 這樣應該要可以上網了 9. 安裝openvpn套件及VPN連線 * System->Software ![](https://i.imgur.com/DXifYed.png) * 按一下 Update-lists(綠色按鈕) 下面就會出現很多可以安裝的Package * Filter欄位輸入**openvpn** ![](https://i.imgur.com/O3x2oks.png) * 我們需要安裝 openvpn-openssl 及 luci-app-openvpn * 安裝完成後 重新整理 上方會出現 VPN ![](https://i.imgur.com/sJMSoQc.png) * 裡面會有三個範例 ![](https://i.imgur.com/1wquaIx.png) * 這邊我們不用這些 我們用ProtonVPN > 從這邊下載設定檔 ![](https://i.imgur.com/RfG5MKP.png) * 上傳ovpn設定 ![](https://i.imgur.com/JIttnVO.png) > ProtonVPN 教學 > https://protonvpn.com/support/how-to-set-up-protonvpn-on-openwrt-routers/ > 借一張圖 * 這邊需要修改設定檔裡面其中一行 ``` auth-user-pass ``` ``` auth-user-pass /etc/openvpn/FR.auth ``` ![image alt](https://protonvpn.com/support/wp-content/uploads/2020/11/Screenshot-2020-11-23-at-10.24.42-1024x653.png) 並在下面的欄位 輸入 ![](https://i.imgur.com/AlTXkG5.png) 可以在protonVPN那邊找到 > https://account.protonvpn.com/account#openvpn * 勾起Enabled --> Save& Apply ![](https://i.imgur.com/c1y2G74.png) * 如果VPN連線成功了,這時候應該會不能上網,我們需要到 Network->Firewall,將VPN Interface下放到wan zone裡面 ![](https://i.imgur.com/z3sXcrn.png) * Edit-> Advanced Setting * Cover devices-->tun0 ![](https://i.imgur.com/ruJBGZ2.png) * Save * Save & Apply * 要讓Nintendo Switch使用這個軟路由上網的話記得要去switch上設定IP <a href="https://www.buymeacoffee.com/virgil246" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>