Centos
KVM 上的虛擬化防火牆
我有幾個用 KVM (CentOS7) 虛擬化並連接到我的家庭網路的 vms (homelab)。最近我試圖通過將它們放在單獨的網路中來隔離它們,並且我想在與其他虛擬機相同的主機上使用虛擬化 pfsense 來做到這一點。
首先,我在 virt-manager 中為我的實驗室主機創建了隔離網路。
然後我用 2 個網卡創建了 vm 並安裝了 pfsense。一個介面的地址為 192.168.1.100(家庭區域網路),另一個介面的地址為 10.13.37.1(實驗室網路)。
pfsense xml 轉儲:
<interface type='direct'> <mac address='52:54:00:52:37:3f'/> <source dev='enp1s0' mode='bridge'/> <target dev='macvtap0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <interface type='network'> <mac address='52:54:00:65:58:d6'/> <source network='lab' bridge='virbr1'/> <target dev='vnet1'/> <model type='virtio'/> <alias name='net1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </interface>
我將我的一個 vm(測試伺服器)移動到內部 pfsense 網路並將 pfsense ip 地址設置為網關,以測試我是否能夠連接到網際網路。
測試伺服器 (10.13.37.54) xml 轉儲:
<interface type='network'> <mac address='52:54:00:eb:ce:db'/> <source network='lab' bridge='virbr1'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>
測試伺服器上正在執行 www 伺服器,我可以從 pfsense vm 捲曲它(捲曲http://10.13.37.54),因此內部網路工作正常。我在 pfsense 上也有網際網路連接(我可以更新作業系統,例如 curl http://google.com)。從測試伺服器我可以 ping pfsense 和 google.com,但是當我嘗試 curl http://google.com時,由於某種原因,我經常出現超時(其他站點也是如此)。我可以將 google.com 域解析為 IP,因此 dns(udp 數據包)工作正常,但我無法建立 TCP 3 向握手。我正在發送 SYN 數據包,但沒有收到任何回复。以下是從內部實驗室網路擷取的數據包的樣子(在 pfsense 上擷取):
我在另一個論壇上得到了答案,原來我所要做的就是禁用硬體校驗和解除安裝,連結到文件