Предположим, следующая конфигурация: маршрутизатор, который объявляет IP-подсети и несколько хостов KVM на основе Proxmox. На каждом хосте виртуализации на основе Proxmox работает несколько виртуальных серверов, управляемых клиентами, и каждому виртуальному серверу назначается один или несколько IP-адресов.
Как я могу предотвратить, что (неправильно настроенный или злой) виртуальный сервер объявляет IP-адреса, которые не принадлежат их серверу?
Лучшая идея, которую я мог придумать, - это использовать iptables
-Правила брандмауэра для блокировки любого трафика, кроме входящего с правильным адресом назначения и исходящего с правильным исходным адресом. Это должно сработать (но также заблокировало бы любой широковещательный трафик, я думаю, это было бы приемлемо для этого сценария). Однако есть ли лучший способ сделать это (без изменений на маршрутизаторах)? Какова обычная практика решения этой проблемы?
IPTables не может блокировать трафик DHCP, поскольку он использует фильтры пакетов, которые встраиваются в стек IP перед межсетевым экраном. Эта ссылка говорит о CentOS, но принцип тот же.
Если вы еще один клиент на этих хостах, срочно отправьте запрос в службу поддержки в NOC вашего провайдера, указывающий на мошеннический DHCP-сервер в сети, и они должны (если они выполняют свою работу должным образом) довольно быстро подключиться к нему. Если это ваше оборудование, на котором работают эти виртуальные машины, и у вас нет доступа к вещанию виртуальной машины, я бы отключил сеть на нем и попросил клиента подключиться через консоль для решения проблемы.
Выяснив, что iptables
не подходят для этого, отчасти благодаря ответу Кристофера выше за эту информацию, я немного прочитал ebtables
, просто чтобы выяснить, что Proxmox уже имеет встроенную поддержку для предотвращения IP-спуфинга.
Все, что необходимо, это добавить следующее правило к настройкам межсетевого экрана каждой виртуальной машины в Proxmox (см. /etc/pve/firewall/<VMID>.fw
файлы) и работает с IPv4 и IPv6:
[IPSET ipfilter-net0]
1.2.3.4
2f1:2:3:4::1
Во всяком случае, это уже было скрыто в официальных документах: см. раздел Наборы IP > Стандартный IP-адрес ipfilter-net *