lxc路由模式

2021-06-25 11:06:40 字數 1660 閱讀 1161

lxc預設使用的是橋模式,這也是我在家裡和公司裡部署的模式。在這種模式下,lxc虛擬機器可以直接和真實網路中的機器互相訪問,就如同一台真的機器一樣。路由模式則沒有這個便利性。

但是橋模式有個缺陷,必須能夠做出橋來。我們有做不出橋來的時候麼?有,如果你用筆記本,大部分ap會拒絕第二個mac位址的包。導致網橋可以組建,卻永遠無法正常使用。

雙重nat可以用於幾乎所有場景,並且不會帶來後遺症。然而,雙重nat的問題在於,物理網路不能直接訪問虛擬機器。對於很多裝置來說,這就失去了價值。另外說一點,之所以叫做雙重nat,是因為多數時候物理網路接到外網還需要一次nat。

lxc的雙重nat可以視為兩步,建立nat連線的虛擬網路,將lxc連線到虛擬網路。

第一步比較複雜,我們先從br0的建立開始說起。首先,你需要為虛擬網路分配乙個不同的保留內網網段。如果使用同樣的內網網段,在arp查詢的時候會從乙個埠發出超過乙個的mac回應,這就退回了橋模式。

然後我們需要建立乙個br0網橋作為配置的起點,對這個網橋賦予ip,配置路由和防火牆,並啟動dnsmasq以便於dhcp和dns。這個模式之所以叫做簡版,是因為我們先不討論dnsmasq。

假如你的lxc內網網段是192.168.66.0/24,那麼你大致可以如下配置:

brctl addbr br0

ifconfig br0

192.168

.66.1

route add

-net

192.168

.66.0/24

dev br0

iptables

-a input -s

192.168

.66.0/24

-j accept

iptables

-t nat

-a postrouting -s

192.168

.66.0/24

-j masquerade

實際上,對於任何一種網口裝置,將其配置為nat的過程都是一樣的。

第二步非常容易,在lxc的config檔案內,指定網橋為br0就ok了。當然,作為略去dnsmasq的代價,你需要手工配置每台機器的ip位址和dns伺服器。

雙重nat的完整版需要在內網網口上啟動dns,作為dns快取**和dhcp伺服器。其餘和第一種模式沒有區別,只是你不需要手工指定ip和dns伺服器了。

當然,其實任何一種網口的nat配置都是一樣的。

第三種路由模式的效果最好,虛擬機器和真實機可以互相訪問。但是這種模式需要能夠修改物理網路閘道器的路由表。這種模式使用主機作為路由器,中轉真實網路和虛擬網路。

我略去如何創造br以及如何將lxc連線到上面,這些前面有敘述。下面我簡述一下雙邊路由最關鍵的幾點。

最重要的重點,就是在真實網路的閘道器上,將你的真實物理機在外網的ip,配置為虛擬網路的下一跳閘道器。例如,對於上面的例子,我們應當在閘道器上如此配置。

route add -net 192.168.66.0/24 gw 192.168.1.4

如果不進行如此配置,物理網路所發出的包在到達閘道器後就不知道應當如何**了。

在物理機上允許雙邊網路的所有包透過。你的包當然不能被防火牆擋掉。

虛擬網路的dhcp是不會傳遞到外網的,因此如果打算使用dhcp,還是需要開dnsmasq。

LXC與Docker Containers的區別

1 lxc是linux containers的縮寫。它是一種虛擬化技術,通過乙個linux核心在乙個受控主機上虛擬地執行多個linux系統。lxc使用核心的cgroups功能,來提供程序和網路空間的隔離,來替代通過建立乙個完整的虛擬機器來為應用程式提供隔離環境。2 docker是乙個開源工具,用於在...

NAT模式 路由模式 全路由模式

nat模式。此模式下,由區域網向廣域網傳送的資料報預設經過nat轉換,但路由器對所有源位址與區域網介面不在同一網段的資料報均不進行處理。例如,路由器lan口ip設定為192.168.1.1,子網掩碼為255.255.255.0,lan口所處網段為192.168.1.0 24,此時,路由器收到源位址為...

Linux容器LXC 入門

lxc linux container。lxc允許你在宿主作業系統內的容器執行應用。容器在網路 行為等方面都與宿主os都隔離。lxc與虛擬化類似,但是有一些關鍵的不同點 虛擬化模擬硬體和作業系統,但是lxc只模擬作業系統,因此更輕量級 速度更快。lxc的 模擬 是通過linux核心的cgroups和...