VBox 虛擬機安裝 Openwrt 做旁路由


VBox 虛擬機安裝 Openwrt 做旁路由

需求:開個虛擬機做旁路由,電腦把網關設置成旁路由地址,用它跑個上網或其他什么東西。

安裝及配置過程簡述

這件事流程很簡單,總結起來主要有以下幾點:

  1. 安裝 VBox 虛擬機並解決好相關驅動(如虛擬網卡)。

    在配置網絡中如果遇到任何問題都要先排查虛擬網卡驅動有沒有問題。安裝虛擬網卡驅動請到 VBox 安裝路徑找到以下地址,在每個文件夾中都有一個 .inf 文件,右鍵安裝即可。

  2. 下載固件文件(一般會提供 .vmdk 文件,如果只有 .img 文件自行轉換(StarWind V2V Converter))。

  3. 創建虛擬機,創建時使用自定義的虛擬磁盤文件。(參考:附一__新建虛擬機

  4. 配置虛擬機網卡一為“僅主機(Host-only)網絡”,我們需且僅需配置虛擬電腦的網卡一,這個網卡默認作為 OpenWrt 的 LAN 口。(參考:附二__僅主機(Host-only)網絡

    • 在首次啟動前需要(物理機)先斷開所有外部網絡,將虛擬機設置成“僅主機(Host-only)網絡”,其對應的虛擬網卡要關閉 DHCP 、IP 地址設置成與路由器管理地址同網段。

    • 虛擬機開機后可以使用 cat /etc/config/network 查看默認的 LAN 口地址。

  5. 開機。如無特殊原因可以正常開機了,開機后在瀏覽器進入管理界面,依次點擊 “網絡 > 接口” 可以看到軟路由的接口情況。正常情況下物理接口應該只有一個 LAN 口。(如果有其他的只要不影響使用也可忽略,比如我刷 keelshare 的固件就有一個 eth5的 WAN 口

  6. 配置 LAN 口,(關閉 DHCP, 修改基本設置,關閉"橋接接口")

    1. 關閉 DHCP. 進入 LAN 口配置頁面,在其“DHCP 服務器”設置中勾選“忽略此接口”。

    2. 基本配置。配置 LAN 口的協議為“靜態地址”,然后根據主路由設置 IPv4地址、掩碼、網關、廣播和DNS服務器。

      注意:關於這里的DNS: 必須要設置成一個有效的 DNS, 否則路由器 curl baidu.com 無返回。(關於DNS更多知識參考:附三__DNS服務和Dnsmasq

    3. 關閉"橋接接口",這一點很重要!雖然我至今仍不明白它是什么,但它真的很重要。

      “橋接網口”選項是默認勾選的,在不關閉“橋接網口”的情況下麥本本也能正常上網,但是在榮耀筆記本上國內正常,出國卻慢的出奇,最高不到 700Kbps, 我嘗試了各種方法未果,最終誤打誤撞發現在關閉“橋接網口”口出國速度飆升到 56Mbps, 與國內測速無異;關閉“橋接網口”后麥本本出國速度也有提升,從原來的 30M 漲到了 50Mbps.

    4. 保存並應用。

  7. 配置虛擬機網卡一為“橋接網卡”,橋接到物理機用來正常上網的網卡。

    1. 在完成上面的操作后繼續使用默認管理地址應該已經無法進入路由器后台了,這時候可以使用命令 halt 關掉虛擬機,讓后將虛擬機網絡設置為橋接,橋接到物理機連接到主路由且可以正常上網的網卡。

    2. 啟用主路由的網絡連接、開啟虛擬電腦。不出意外的話這時候就可以通過前面設置過的 LAN 口 IP 正常訪問軟路由管理界面了,在軟路由的終端中運行一下 curl baidu.com 發現軟路由也可以正常上網。

  8. 設置物理機的網關和 DNS 服務器為軟路由IP。修改完成后發現可以正常上網,這時候把軟路由的出國插件配置好,物理機也可以正常通過軟路由出國。


存在的問題

  1. (軟路由正常運行中)物理機休眠 - 重新喚醒后出國服務失效,雖然顯示在運行但沒效果,重啟軟路由后恢復。使用 VBox 的快速休眠 - 喚醒沒這個問題。

  2. 如果需要局域網中其他設備使用虛擬機中的軟路由上網,則除了將設備的網關和 DNS 設置為軟路由的 IP 外還以一個需要注意點的——運行軟路由的電腦不能使用無線網卡上網(當然虛擬機也必須要橋接到有線網卡上才行了)。(雖然我也不明白這是什么原因但事實的確如此,如確有這種需求但實現不了不妨切到有線網卡試一試)


附一__新建虛擬機

新建虛擬機的過程記錄如下:

附二__僅主機(Host-only)網絡

首先需要在虛擬機中選擇這種模式。

但是有關這個虛擬網卡的進一步選項需要在“主機網絡管理器”中設置。

在運行軟路由系統時關於這個網卡的設置主要有兩個要點:1:關閉DHCP;2:設置 IP 地址(這個地址是物理機地址)。

  1. 關閉DHCP
    這個沒什么多說的,關閉就行了。

  2. 設置 IP 地址

    這個有講究。在設置之前先搞清楚下載的固件后台管理頁面是多少,將這個 IP 地址設置成與路由器后台地址同網段但是不沖突的,我這里后台地址是 192.168.1.1, 所以我設置為 192.168.1.2.

    注意:如果路由器的后台網段已接入的其他網絡沖突了,那沒辦法只好先斷開其他網絡了,進去路由器后台再改路由器地址。

附三__DNS服務和Dnsmasq

這塊寫的一塌糊塗,我也不知道我在說什么

將物理機的 DNS 設置為軟路由當然會存在某些問題,比如無法解析我在主路由中設置的 hosts 文件,雖然之前設置 LAN 口時將那個 DNS 設置為了主路由 IP ,但也沒什么鳥用。

  • 事實上雖然將軟路由器 LAN 口 IP 設置為了主路由 IP, 但就算是軟路由本身也無法使用主路由的 HOSTS 解析。比如我在主路由的 HOSTS 中有一條 192.168.42.61 ds119j.nas 是用來解析我的 NAS 的,但是在軟路由中 ping ds119j.nas 卻始終不通,通過 cat /etc/resolv.confnslookup www.baidu.com 命令查到的軟路由本機 DNS 服務器始終是 "127.0.0.1", 真是奇哉怪哉。

  • 后來我才明白原來在 OpenWrt 中有一個本地默認的 DNS 服務叫做 Dnsmasq, 它監聽本地地址(也就是 "127.0.0.1"),而你真實的 DNS 服務器地址,是被這個服務【Dnsmasq】管理維護着的。

    # 解析流程
    local process -> local dnsmasq -> router -> ISP dns
    

    在 OpenWrt 的圖形配置界面中 “網絡 > DHCP/DNS” 實際上就是配置的 Dnsmasq.

  • 回到最開始的問題:將物理機的 DNS 設置為軟路由后就無法解析我在主路由中設置的 hosts 文件這事怎么解決?

    這個問題暫未解決。除非把物理機的 DNS 設置為主路由的 IP, 但是這樣虛擬機軟路由上基於 DNS 的一些服務就沒法發揮作用了,得不償失。

    雖然理論上有辦法讓 Dnsmasq 針對特定的域名使用特定的 DNS 服務,比如我想讓主路由(192.168.42.1)解析我的 NAS(ds119j.nas),但我嘗試了各種辦法都沒成功,看來只能在軟路由中再設置一次 hosts 文件了。

  • 今天一天我看的關於 Dnsmasq 的有價值的資料

    nameserver 127.0.1.1 & 如何設置nameserver

    Openwrt dnsmasq 設置要點

    dnsmasq詳解及配置

    OpenWrt DNS問題排查

    OpenWrt的DNS相關設置

    手動配置 OpenWrt 路由器的 DNS 服務

    dnsmasq詳解及配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM