Рейтинг:0

Сервер Linux игнорирует пакеты от шлюза

флаг ke
ENM

У меня есть сервер Proxmox Linux, который может отправлять и получать пакеты на хосты в локальной сети, но не будет обрабатывать пакеты от шлюза. Это приводит к сбою интернет-трафика, поэтому я не могу запустить apt для обновления пакетов. Похоже, все протоколы затронуты.

ВМ, работающие на сервере может доступ к шлюзу просто отлично.

Мой файл /etc/network/interfaces содержит:

авто вот
iFace Lo Inet Loopback

iface enp10s0 инет руководство

авто вмбр0
iface vmbr0 инет статический
    адрес 10.0.1.200/24
    шлюз 10.0.1.1
    bridge_ports enp10s0
    мост_стп выключен
    bridge_fd 0

авто wlp7s0
Статический инет iface wlp7s0
    hostapd /etc/hostapd/hostapd.conf
    адрес 10.0.2.1
    сетевая маска 255.255.255.0

авто вмбр1
iface vmbr1 инет статический
    адрес 10.1.2.1
    сетевая маска 255.255.255.0
    мост_порты нет
    мост-стп выкл.
    мост-fd 0

    последующее эхо 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '10.1.2.0/24' -o wlp7s0 -j ​​MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.1.2.0/24' -o wlp7s0 -j ​​MASQUERADE

wlp7s0 и vmbr1 настроены на NAT, чтобы разрешить виртуальной машине доступ к беспроводным устройствам Интернета вещей, которые не должны иметь доступа к общей сети/Интернету.

Моя таблица маршрутов:

$ IP-маршрут
по умолчанию через 10.0.1.200 dev vmbr0 метрика 100 
10.0.1.0/24 dev vmbr0 прото-область ядра ссылка src 10.0.1.200 
10.0.2.0/24 dev wlp7s0 ссылка на область ядра proto src 10.0.2.1 
10.1.2.0/24 dev vmbr1 прото-область ядра ссылка src 10.1.2.1

После некоторого чтения я попытался изменить rp_filter, но изменение значения с 2 на 0 не помогло. Настройки по умолчанию (с удаленными интерфейсами ВМ):

$ sysctl-а | grep \.rp_filter
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.enp10s0.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.vmbr0.rp_filter = 0
net.ipv4.conf.vmbr1.rp_filter = 0
net.ipv4.conf.wlp7s0.rp_filter = 0

ip_forward установлен:

$ кошка /proc/sys/net/ipv4/ip_forward
1

Я проверил через tcpdump, что пакеты принимаются от шлюза, когда я пытаюсь пропинговать с сервера на шлюз или с сервера на шлюз. В этом примере используется пинг:

# tcpdump -n -i хост vmbr0 10.0.1.1 и icmp
tcpdump: подробный вывод подавлен, используйте -v или -vv для полного декодирования протокола
прослушивание на vmbr0, тип канала EN10MB (Ethernet), размер захвата 262144 байт
22:42:37.136341 IP 10.0.1.200 > 10.0.1.1: эхо-запрос ICMP, идентификатор 22073, последовательность 1, длина 64
22:42:37.136478 IP 10.0.1.1 > 10.0.1.200: эхо-ответ ICMP, идентификатор 22073, последовательность 1, длина 64
22:42:38.142240 IP 10.0.1.200 > 10.0.1.1: эхо-запрос ICMP, идентификатор 22073, последовательность 2, длина 64
22:42:38.142429 IP 10.0.1.1 > 10.0.1.200: эхо-ответ ICMP, идентификатор 22073, последовательность 2, длина 64

Вывод ping -v просто пуст:

$ пинг -v 10.0.1.1
PING 10.0.1.1 (10.0.1.1) 56 (84) байт данных.
^ С
--- 10.0.1.1 статистика пинга ---
22 пакета передано, 0 получено, 100% потери пакетов, время 511 мс

Единственная запись в таблицах ip — это NAT:

# iptables-сохранить -c
# Сгенерировано iptables-save v1.8.2 в субботу, 29 января, 22:45:46 2022 г.
*сырой
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [1828405583:1847667077335]
: ВЫВОД ПРИНЯТ [10762322:981310704]
СОВЕРШИТЬ
# Завершено в субботу, 29 января, 22:45:46 2022 г.
# Сгенерировано iptables-save v1.8.2 в субботу, 29 января, 22:45:46 2022 г.
*фильтр
:ВВОД ПРИНЯТЬ [10597558:1212589593]
:ВПЕРЕД ПРИНЯТЬ [1782904005:1841102268241]
: ВЫВОД ПРИНЯТ [10762351:981313827]
СОВЕРШИТЬ
# Завершено в субботу, 29 января, 22:45:46 2022 г.
# Сгенерировано iptables-save v1.8.2 в субботу, 29 января, 22:45:46 2022 г.
*натуральный
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [29808561:4940456833]
:ВВОД ПРИНЯТЬ [2456738:231340403]
: ВЫВОД ПРИНЯТ [1168080:75403202]
:ОТПРАВКА ПРИНЯТИЯ [2829337:181352732]
[190:11400] -A ОТПРАВКА -s 10.1.2.0/24 -o wlp7s0 -j ​​MASQUERADE
СОВЕРШИТЬ
# Завершено в субботу, 29 января, 22:45:46 2022 г.
Nikita Kipriyanov avatar
флаг za
Странный. Возможно, он сброшен или отведен на более низкий уровень, чем 3, у моста? Добавьте `ip neigh`, `ip link`, `bridge fdb show`. Вы уверены, что нет другой системы (например, ВМ) с адресом 10.0.1.200? Попробуйте запустить `tcpdump -e`, чтобы увидеть MAC-адреса и сравнить MAC-адреса с информацией, полученной с помощью других команд.
флаг ke
ENM
Спасибо за комментарий @NikitaKipriyanov, он подвел меня к причине проблемы! Я разместил подробности в ответе ниже, чтобы помочь, если другие когда-нибудь столкнутся с чем-то подобным.
Рейтинг:0
флаг ke
ENM

С благодарностью Никите Киприянову за то, что указал мне правильное направление, я решил проблему.

При работе

tcpdump-en хост 10.0.1.1

Я заметил, что ответы ping приходят на интерфейс, которого не существует в системе:

# tcpdump -en хост 10.0.1.1
tcpdump: подробный вывод подавлен, используйте -v или -vv для полного декодирования протокола
прослушивание на enp10s0, тип канала EN10MB (Ethernet), размер захвата 262144 байт
10:01:49.233889 24:4b:fe:4a:11:96 > 02:29:9a:f3:0a:00, ethertype IPv4 (0x0800), длина 98: 10.0.1.200 > 10.0.1.1: эхо-запрос ICMP, идентификатор 5544, последовательность 1, длина 64
10:01:49.234053 02:29:9a:f3:0a:00 > 00:26:18:e2:68:f9, ethertype IPv4 (0x0800), длина 98: 10.0.1.1 > 10.0.1.200: эхо-ответ ICMP, идентификатор 5544, последовательность 1, длина 64

Это означает, что система видела входящие пакеты с правильным IP-адресом в tcpdump, но правильно игнорировала их для обработки на основе MAC-адреса.

Я проверил конфигурацию маршрутизатора-шлюза и заметил, что у него есть фиксированная запись ARP с этим неверным адресом (вероятно, старая конфигурация). Изменение настройки шлюза на MAC-адрес enp10s0 устранило проблему.

Nikita Kipriyanov avatar
флаг za
Пожалуйста, примите свой собственный ответ, если он решил проблему. Это не только помогает дальнейшим читателям идентифицировать душу, но и не дает вопросу остаться без ответа.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.