Ubuntu 14.04 和 VirtualBox 上的 IP 轉發路由問題
我的 ubuntu 伺服器上的 IP 轉發存在路由問題。
在我的 ubuntu 伺服器(一台舊筆記型電腦)上,我安裝了帶有多個虛擬機的 VirtualBox。每個 VM 都有其虛擬 NIC 橋接到伺服器上的物理 wlan0 適配器,如果設置為使用 DHCP,它們將很樂意從我的家庭無線路由器獲取 IP 地址。所以橋接似乎工作正常。
無線路由器在子網 172.17.17.0/24 上執行。
一些虛擬機在不同的子網上設置了靜態 IP,由於在它們上面執行的應用程序,這些 IP 很難更改。我有兩個 VM 子網:
172.17.40.0/24 192.168.195.0/24
我想我可以通過在每個子網上給我的主機筆記型電腦一個 IP 地址,將虛擬機指向適當的 IP 作為它們的網關,然後在主機上啟用 IP 轉發,讓他們都愉快地交談。所以主機有以下分配給 wlan0 的 IP:
172.17.17.100 172.19.40.1 192.168.195.1
通過此設置,子網 172.19.40.0 上的虛擬機可以 ping 192.168.195.0 子網上的虛擬機,反之亦然。主機很高興在這兩個子網之間進行 IP 轉發。這些子網上的虛擬機也可以 ping 172.17.17.100 上的伺服器。
但是,子網 172.19.40.0 或 192.168.195.0 上的虛擬機都不能 ping 通 172.17.17.254 上的無線路由器。
我猜主機上的配置缺少一些東西,但我看不出每個子網中的虛擬機相互 ping 和任一子網上的虛擬機 ping 第三子網上的路由器之間有什麼區別——除了它是一個物理設備- 我仍然只是要求主機將 IP 從一個子網轉發到另一個子網。我想念的有什麼區別?!
感謝提供的任何幫助。
肯
您需要 rp_filter 讓橋接主機接受不屬於其自己的 IP 本地 IP 地址範圍的輸出數據包。
net.ipv4.conf.all.rp_filter=0
至於路由,問題是路由器不知道 172.19.40.x 網路,當數據包到達路由器時,答案通過預設網關(即未知網路,而不是返回)。
您需要在路由器中定義路由(例如)
172.19.40.0 255.255.255.0 gw 172.17.17.100
這樣做,答案將返回給您的主機。
再想一想,這可能不是正確的答案,因為它是橋接的,你必須給路由器一個 172.19.40.0 網路的輔助 IP。