Маршрутизация с помощью nftables (Fedora33, nmcli, brctl)
A/ Хост (Fedora 33) с Ethernet, еслиeth0
. IP 192.168.18.11(/24)
и
гость B1/KVM с ifvnet0
порабощен . ip 192.168.101.88(/24) (ручная маршрутизация, статический IP)
или
гость B2/KVM с ifvnet1
порабощенvirbr102
. ip 192.168.102.210(/24) (маршрутизация вирт-менеджера, DHCP)
В конфигурации, показанной ниже, мне кажется, что мне не хватает шага, чтобы она работала. Не знаю, как отладить мою настройку.
Что происходит:
- Из A я могу пропинговать B и подключиться к B по SSH.
- Из B я могу пропинговать A
- Из А я могу пропинговать 192.168.18.1
- Из B не могу пропинговать 192.168.18.1, это и хочу исправить на данном этапе
Разница между B1 и B2 заключается в том, что если я пингую именованный сервер, например google.com, с B1 он говорит, что маршрут к хосту отсутствует, с B2 он находит IP-адрес, но ответов на пинг нет.
Маршрутизируемая сеть с использованиемnmcli
+brctl
+
На хосте,virbr101
:
ip link add virbr101-mac address 52:54:41:0b:00:01 type dummy
brctl addif virbr101 virbr101-mac
файлifcfg-virbr101
:
DEVICE=virbr101
NAME=virbr101
# Change to 'no' to disable NetworkManager for this interface.
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Bridge
DELAY=2
STP=on
IPADDR=192.168.101.1
NETMASK=255.255.255.0
Активируйте этот интерфейс:
nmcli connection load /etc/sysconfig/network-scripts/ifcfg-virbr101
nmcli connection up virbr101
Включите переадресацию IP:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.forwarding=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf
sysctl -p
Направьте интерфейс следующим образом:nft
команды:
delete table ip filter
add table ip filter
add chain ip filter INPUT
add chain ip filter FORWARD
add chain ip filter OUTPUT
add rule ip filter FORWARD oifname "virbr101" ip daddr 192.168.101.0/24 counter accept
add rule ip filter FORWARD iifname "virbr101" ip saddr 192.168.101.0/24 counter accept
add rule ip filter FORWARD iifname "virbr101" oifname "virbr101" counter accept
add rule ip filter FORWARD iifname "virbr101" counter reject
add rule ip filter FORWARD oifname "virbr101" counter reject
Маршрутизируемая сеть с использованием
Сеть:
<network>
<name>bridged102</name>
<uuid>2e8d6e42-b70e-43c8-8523-02008070f03c</uuid>
<forward dev="ens3" mode="route">
<interface dev="ens3"/>
</forward>
<bridge name="virbr0" stp="on" delay="0"/>
<mac address="52:54:00:42:1d:e4"/>
<domain name="bridged102"/>
<ip address="192.168.102.1" netmask="255.255.255.0">
<dhcp>
<range start="192.168.102.128" end="192.168.102.254"/>
</dhcp>
</ip>
</network>
Гостевой интерфейс:
<interface type="network">
<mac address="52:54:00:ee:a6:67"/>
<source network="bridged102" portid="238df934-14ac-422e-bfbd-a4047a9444fb" bridge="virbr0"/>
<target dev="vnet1"/>
<model type="virtio"/>
<link state="up"/>
<alias name="net1"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x08" function="0x0"/>
</interface>
Дляvirt-manager
решение, я последовал этому примеру: libvirt docs // Формат XML сети // Конфигурация маршрутизируемой сети