Вопрос или проблема
Привет, я новичок,
Я пытаюсь направить трафик одной виртуальной машины (VM2) через другую виртуальную машину (VM1) с использованием firewalld
, но у меня возникли проблемы. Когда я пытаюсь ping
с VM2, я получаю Packet filtered
, и я не уверен, в чем проблема.
VM1 имеет прямой доступ к интернету (enp7s0
) и виртуальную сеть (enp1s0
), которая соединяет обе виртуальные машины.
Я удалил пустые переменные и IPv6 (не используется) из конфигурации.
sysctl net.ipv4.ip_forward=1
установлен на обеих виртуальных машинах.
Конфигурация зоны Firewalld:
VM1
in (default, active)
target: default
ingress-priority: 0
egress-priority: 0
icmp-block-inversion: no
interfaces: enp7s0
forward: yes
masquerade: yes
out (active)
target: default
ingress-priority: 0
egress-priority: 0
icmp-block-inversion: no
interfaces: enp1s0
forward: yes
masquerade: no
VM2
in (default, active)
target: default
ingress-priority: 0
egress-priority: 0
icmp-block-inversion: no
interfaces: enp1s0
forward: yes
masquerade: no
Конфигурация сети:
VM1
Адреса
enp1s0 <BROADCAST,MULTICAST,UP,LOWER-UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 192.168.101.2/24 brd 192.168.101.255 scope global noprefixroute enp1s0
valid_lft forever preferred_lft forever
enp7s0 <BROADCAST,MULTICAST,UP,LOWER-UP> mtu 1500 qdisc mq state UP group default qlen 1000
inet 192.168.0.100/24 brd 192.168.0.255 scope global dynamic noprefixroute enp7s0
valid_lft 6820sec preferred_lft 6820sec
Маршруты
default via 192.168.0.1 dev enp7s0 proto dhcp src 192.168.0.100 metric 101
192.168.0.0/24 dev enp7s0 proto kernel scope link src 192.168.0.100 metric 101
192.168.101.0/24 dev enp1s0 proto kernel scope link src 192.168.101.2 metric 100
VM2
Адреса
enp1s0 <BROADCAST,MULTICAST,UP,LOWER-UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 192.168.101.3/24 brd 192.168.101.255 scope global noprefixroute enp1s0
valid_lft forever preferred_lft forever
Маршруты
default via 192.168.101.2 dev enp1s0 proto static metric 100
192.168.101.0/24 dev enp1s0 proto kernel scope link src 192.168.101.3 metric 100
Я также пробовал добавить некоторые прямые правила, и мой direct.xml
на VM1 выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<direct>
<passthrough ipv="ipv4">-t nat -A POSTROUTING -o enp7s0 -j MASQUERADE</passthrough>
<passthrough ipv="ipv4">-A FORWARD -i enp1s0 -o enp7s0 -j ACCEPT</passthrough>
<passthrough ipv="ipv4">-A FORWARD -i enp7s0 -o enp1s0 -m state --state ESTABLISHED,RELATED -j ACCEPT</passthrough>
</direct>
Чего мне не хватает, что вызывает Packet filtered? Заранее спасибо за любую помощь! 😊
РЕДАКТИРОВАТЬ: Я могу пинговать enp1s0 и enp7s0 с VM1, но не внешние, например, 8.8.8.8
РЕДАКТИРОВАТЬ: Я установил target=ACCEPT в Зонах, теперь работает, я просто недогадался.
Ответ или решение
Чтобы понять и решить проблему маршрутизации трафика одной виртуальной машины (VM2) через другую (VM1) с использованием firewalld
, необходимо тщательно проанализировать конфигурацию, сетевые настройки и применять надлежащие практики маршрутизации и настройки фаервола. Похоже, что первоначальная проблема, возникающая при попытке выполнить ping
с VM2, заключалась в состоянии "Packet filtered", что указывает на проблемы настройки фаервола или маршрутизации.
Теория
Использование firewalld
в данном сценарии включает в себя правильную настройку зон и правил, чтобы обеспечить корректную передачу пакетов через межсетевые интерфейсы виртуальных машин. Важные аспекты настройки включают:
- Перенаправление IP-пакетов: Для достижения цели маршрутизации необходимо, чтобы функция перенаправления IP-пакетов была включена, как это сделано с настройкой
sysctl net.ipv4.ip_forward=1
. - Настройка NAT: Для того чтобы пакеты могли покидать локальную сеть и взаимодействовать с интернетом, они должны проходить через процесс трансляции сетевых адресов (NAT). Это достигается с помощью
MASQUERADE
в таблице POSTROUTING nat. - Межсетевой экран (фильтрация пакетов): Файрволд может блокировать пакеты на основании настроек зон. Правильные правила должны быть установлены для разрешения входящего и исходящего трафика через требования forwarding и masquerading.
Пример
Рассмотрим вашу специфическую конфигурацию:
VM1 (в виде маршрутизатора)
-
Интерфейсы:
enp7s0
: Подключен к Интернету / внешней сети.enp1s0
: Виртуальная сеть соединяющая VMs.
-
Настройки маршрутизации (fw):
<passthrough ipv="ipv4">-t nat -A POSTROUTING -o enp7s0 -j MASQUERADE</passthrough> <passthrough ipv="ipv4">-A FORWARD -i enp1s0 -o enp7s0 -j ACCEPT</passthrough> <passthrough ipv="ipv4">-A FORWARD -i enp7s0 -o enp1s0 -m state --state ESTABLISHED,RELATED -j ACCEPT</passthrough>
VM2
-
Интерфейс:
enp1s0
: Соединяет VM с использованием VM1 в качестве шлюза.
-
Настройки маршрута:
default via 192.168.101.2 dev enp1s0 proto static metric 100
Применение
Первоначальная проблема, с которой вы столкнулись с "Packet filtered", была связана со стандартными целями (targets) зон в firewalld
, которые занимали значение default
. Это значение могло блокировать или фильтровать пакеты, не отвечающие стандартным критериям фильтрации.
Как выяснилось, установка target=ACCEPT
для зон в firewalld
решает проблему:
- Конфигурация зон:
- Зона, связанная с
enp7s0
интерфейсом на VM1, должна иметь masquerade включённым, чтобы поддерживать работу NAT. - Forwarding трафика между
enp1s0
иenp7s0
требует, чтобы пакеты из внутренней сети могли свободно проходить в сеть через VM1.
- Зона, связанная с
Практические шаги:
-
Подтверждение forwarding пакетов: На обеих VMs, убедитесь, что
net.ipv4.ip_forward=1
, что позволяет транзитное прохождение пакетов. -
Настройка masquerading: Проверьте наличие записи MASQUERADE в конфигурации
firewalld
или IPTables на VM1. -
Проверка целей Zone: Убедитесь, что используемые
firewalld
зоны настроены с учетом правильных целей. Зона, используемая на интерфейсе, подключенном к интернету (VM1 enp7s0), должна иметьmasquerade
активированным. -
Диагностика: Если проблема все еще сохраняется, используйте инструменты вроде
tcpdump
илиwireshark
для отслеживания трафика и понимания, какой этап приводит к фильтрации пакетов.
Резюмируя, решение таких проблем требует системного подхода и внимательной настройки сетевых интерфейсов и правил фаервола, чтобы обеспечить сквозную маршрутизацию и поддержку NAT. Комбинация правильной настройки firewalld
, masquerading и forwarding является ключевой для успешной маршрутизации через виртуальные машины.