Маршрутизация с помощью nftables (Fedora33, nmcli, brctl)

A / Host (Fedora 33) с Ethernet if eth0 . ip 192.168.18.11 (/ 24)
и
B1 / Kvm-гость с if vnet0 порабощен virbr101 . ip 192.168.101.88 (/ 24) (ручная маршрутизация, статический IP-адрес)
или
B2 / Kvm-гость с if vnet1 , порабощенным для virbr102 . ip 192.168.102.210 (/ 24) (маршрутизация virt-manager, DHCP)

С конфигурацией, показанной ниже, мне кажется, что мне не хватает шага, чтобы она работала. Не знаю, как отлаживать мою настройку.

Что происходит:

  1. Из A я могу пинговать B и ssh в B
  2. Из B, я могу пинговать A
  3. Из A, я могу пинговать 192.168.18.1
  4. Из B, I не может пинговать 192.168.18.1, это то, что я хочу исправить на этом этапе

Разница между B1 и B2 заключается в том, что если я пингую именованный сервер, например google.com, с B1 он говорит, что нет маршрута к хосту, с B2 он находит IP-адрес, но нет ответов ping.

Маршрутизированная сеть с использованием nmcli + brctl + nft

На хосте, 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

Маршрутизированная сеть с использованием virt-manager

Сеть:

<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 // Конфигурация маршрутизируемой сети

1
задан 6 January 2021 в 00:27
1 ответ

Чего не хватало, так это маршрутовот различных устройств в моей локальной сети обратно к СЗ моей виртуальной машины.

Как в:

route add -net 192.168.102.0/24 gw 192.168.18.11
# Or other gateway as appropriate for the device and nw distance
1
ответ дан 24 April 2021 в 00:49

Теги

Похожие вопросы