Ubuntu+Libvirt+iptables軟路由配置

軟路由基本配置

奔騰G3258,技嘉B85-HD3 Rev. 2.1(喂
2*8GB DDR3-2133@1400(喂喂
華碩R9 280X 3G(喂喂喂
XFX XTR550(喂喂喂喂
Ubuntu 16.04.5, kernel 4.4.0-140(終于正常點了
Libvirt自帶軟路由+網(wǎng)橋,nat模式,開機(jī)自動配置iptables
手動通過brctl命令添加物理LAN口

Libvirt軟路由/網(wǎng)橋的配置

配置入口:

root@localhost:~# virsh
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # net-edit default

會通過Vim打開default網(wǎng)絡(luò)的配置文件,大致如下所示:

<network>
  <name>default</name>
  <uuid>...</uuid>
  <forward dev='enp3s0' mode='nat'>
    <interface dev='enp3s0'/>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac .../>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      ...
    </dhcp>
  </ip>
</network>

<forward mode='xxxx'>這里可以填nat、route、bridge等值,詳細(xì)的取值及含義見這里。

由于WAN端有IP-MAC綁定,虛擬機(jī)及軟路由LAN端的機(jī)器需要通過NAT訪問網(wǎng)絡(luò),以使用WAN口的IP及MAC。
nat模式會在iptables中配置如下路由規(guī)則:

root@localhost:~# iptables -t filter -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A FORWARD -d 192.168.122.0/24 -i enp3s0 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -o enp3s0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
root@localhost:~# iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -s 192.168.122.0/24 -d 224.0.0.0/24 -o enp3s0 -j RETURN
-A POSTROUTING -s 192.168.122.0/24 -d 255.255.255.255/32 -o enp3s0 -j RETURN
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -o enp3s0 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -o enp3s0 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -o enp3s0 -j MASQUERADE

其中轉(zhuǎn)發(fā)規(guī)則包括:

  • 允許WAN到LAN的指定IP段,指定狀態(tài)(RELATED,ESTABLISHED)的連接
  • 允許LAN的指定IP段到WAN的連接
  • 允許LAN內(nèi)部的連接
  • 禁止傳入傳出LAN網(wǎng)橋的其他(非指定IP段)的連接

另外在NAT模式下,nat表內(nèi)配置有一些針對傳出連接的masquerade規(guī)則。

如果您的網(wǎng)絡(luò)環(huán)境沒有限制,也可以嘗試

  • 路由(routed)/轉(zhuǎn)發(fā)(forward):<forward mode='route'>,允許WAN到LAN的傳入連接,而無論其狀態(tài)如何
  • 開放:<forward mode='open'>,有轉(zhuǎn)發(fā),沒有防火墻規(guī)則
  • 封閉:<forward> </forward>這兩個標(biāo)簽及之間的內(nèi)容都刪掉,不配置轉(zhuǎn)發(fā)

等模式。相應(yīng)地自動生成的防火墻配置見這里

添加物理LAN口

之后手動添加USB 3.0千兆網(wǎng)卡作為物理LAN口:

root@localhost:~# brctl addif virbr0 enx123456789012

如果是長期安裝在軟路由上的網(wǎng)卡,也可以將該命令寫入/etc/rc.local。
例如要添加名為enp5s0的PCI網(wǎng)卡,可以在該文件中寫入:

brctl addif virbr0 enp5s0

為什么是這樣一個畸形的硬件配置?

要不是為了寫另一篇文章,我都不想管這臺機(jī)器叫軟路由。。。叫“存儲服務(wù)器”或者“文件服務(wù)器”更合適一些。
奔騰G3258:當(dāng)然是為了超頻買的啊,平時限制一下頻率,降點電壓,也耗不了多少電。
2*8GB DDR3-2133:當(dāng)時眼饞APU平臺,所以屯內(nèi)存的時候就直接要了DDR3-2133,實際對G3258來說是浪費,而Ryzen又都要DDR4。。。
華碩R9 280X 3G:某寶買的,想拿來學(xué)OpenCL,做雙精度浮點運算,結(jié)果連驅(qū)動有沒有裝上都不知道。
機(jī)箱是GAMEMAX的老款龍騎士,自帶8個3.5硬盤位+1個熱插拔3.5/2.5硬盤位+3個5.25光驅(qū)位,背板上正對電源的位置有兩個理線用的塑料卡子,塞一塊SATA SSD做啟動盤還不是美滋滋。3個光驅(qū)位當(dāng)然是轉(zhuǎn)成硬盤位啦,我用的是某某科的3轉(zhuǎn)4硬盤架,3轉(zhuǎn)5沒敢考慮。
主板自帶6個SATA口,配一塊8個SAS口的轉(zhuǎn)接卡正好是14口,上面的機(jī)箱也正好是14個硬盤位,強(qiáng)迫癥患者表示極度舒適。我用的轉(zhuǎn)接卡是IBM M1015刷IT固件。
這些東西堆下來,550W的電源差不多夠了,只要別讓CPU顯卡同時滿載,同時所有機(jī)械硬盤同時啟動即可(這得多苛刻?。?。為了接這么多塊硬盤,模組電源+模組線自然是必不可少的,XTR550有4個硬盤供電口,自己做三條1轉(zhuǎn)4 SATA的模組線給12塊機(jī)械硬盤供電,再用一條自帶的模組線給SSD、熱插拔硬盤位和風(fēng)扇供電。

為什么要用Libvirt?直接iptables+dnsmasq不就好了嗎?

因為Libvirt已經(jīng)裝在這臺機(jī)器上了,而且virbr0這個網(wǎng)橋已經(jīng)配置好NAT和DHCP了,就這么簡單。
直接iptables+dnsmasq的話,轉(zhuǎn)發(fā)倒是好說,dnsmasq里面還有不少Option,每個都是坑,一時半會搞不定(捂臉)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • layout: "post"title: "路由器配置簡述"date: "2017-05-16 16:10" 本文...
    noparkinghere閱讀 3,241評論 0 10
  • iptables是Linux系統(tǒng)提供的一個強(qiáng)大的防火墻工具,可以實現(xiàn)包過濾、包重定向、NAT轉(zhuǎn)換等功能。iptab...
    Mr蘿卜閱讀 2,805評論 0 6
  • 1 A君在這個城市上的學(xué),高考分?jǐn)?shù)比二本分?jǐn)?shù)線低幾分,又上不起獨立本科院校,索性就讀了職高,畢業(yè)之前由于腿受傷在家...
    十素閱讀 280評論 0 1
  • (1)把搜索范圍限定在網(wǎng)頁標(biāo)題中——intitle intitle: 在網(wǎng)頁標(biāo)題中檢索, 如: intitle:電...
    dxl1236閱讀 2,784評論 0 1
  • 2019年1月30日 星期三 晴 今天早上,我和爸爸媽媽一起回老家。 一到家,爸爸馬上發(fā)現(xiàn)一個東西,大大的眼睛,黑...
    黃浚鎧閱讀 756評論 0 4

友情鏈接更多精彩內(nèi)容