docker run -p 8080:80 my_web_server

但libvirt沒有" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > 如何為libvirt設(shè)置虛擬主機(jī)

如何為libvirt設(shè)置虛擬主機(jī)

時(shí)間:2023-07-15 20:45:01 | 來源:網(wǎng)站運(yùn)營

時(shí)間:2023-07-15 20:45:01 來源:網(wǎng)站運(yùn)營

如何為libvirt設(shè)置虛擬主機(jī):最近在ARM Server上分析虛擬機(jī)的數(shù)據(jù)壓力,其中一種場景類似Docker,要把guest中的端口映射到host中,類似對(duì)Docker Image中做這樣的動(dòng)作:

docker run -p 8080:80 my_web_server

但libvirt沒有這樣的配置,只在手冊(cè)(Networking - Libvirt Wiki)中這樣建議:

iptables -I FORWARD -o virbr0 -d $GUEST_IP -j ACCEPTiptables -t nat -I PREROUTING -p tcp --dport $HOST_PORT -j DNAT --to $GUEST_IP:$GUEST_PORT但實(shí)際上你這樣做了,映射根本過不去。

所以,我和Docker的規(guī)則對(duì)了一下,發(fā)現(xiàn)區(qū)別在這個(gè)地方:

首先,DNAT不僅僅要對(duì)PREROUTING鏈來做,還要對(duì)OUTPUT鏈來做:

iptables -t nat -A OUTPUT -p tcp --dport $HOST_PORT -j DNAT --to-destination $GUEST_IP:$GUEST_IP第二,要給反向的包做SNAT:

iptables -t nat -A POSTROUTING -d $GUEST_IP -s $GUEST_IP -p tcp --dport $GUEST_PORT -j MASQUERADE這樣就通了。




深入分析一下,其實(shí)第二條是不需要的,因?yàn)槿绻愕臋C(jī)器使用默認(rèn)的NAT網(wǎng)絡(luò),本來就有這個(gè)配置,而且,很多協(xié)議并不需要雙向連接,沒有SNAT并不會(huì)引起問題。




而增加第一個(gè)配置的原因可以從這個(gè)圖上看出來(來源:https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg):

veth是路由一層的協(xié)議,不經(jīng)過nat鏈在鏈路層布下的PREROUTING鉤子的,所以如果不在OUTPUT上做DNAT,就沒有DNAT了。




libvirt在這個(gè)問題上處理得好的話,應(yīng)該把這種映射直接做在網(wǎng)絡(luò)的XML配置中的,不過libvirt的應(yīng)用場景和docker不一樣,前者通常是用vxlan連接多個(gè)跨節(jié)點(diǎn)的虛擬機(jī)的,不需要通過本地的Host做防火墻,所以這個(gè)功能就沒人弄了。但其實(shí)做單機(jī)測試和驗(yàn)證這個(gè)功能卻很常用,希望圈內(nèi)人士可以把這個(gè)功能加進(jìn)去。







關(guān)鍵詞:虛擬,主機(jī),設(shè)置

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉