В настоящее время моя цепочка OUTPUT установлена на DROP. Я хотел бы изменить его на REJECT, чтобы у меня была подсказка, что именно мой брандмауэр мешает мне получить что-то, а не проблему с какой-либо службой, к которой я пытаюсь получить доступ (немедленное отклонение вместо истечения времени ожидания). Однако iptables, похоже, не заботится об этом. Если я вручную отредактировал сохраненный файл правил и попытался восстановить его, я получил, iptables-restore v1.4.15: Can't set policy 'REJECT' on 'OUTPUT' line 22: Bad policy name
и он отказался загружать правила. Если я пытаюсь установить это вручную ( iptables -P OUTPUT REJECT
), я получаю, iptables: Bad policy name. Run 'dmesg' for more information.
но в dmesg нет вывода.
Я подтвердил, что соответствующее правило скомпилировано в ядро, и я перезагрузился, чтобы убедиться, что оно загружено:
# CONFIG_IP_NF_MATCH_TTL is not set
CONFIG_IP_NF_FILTER=y
***
CONFIG_IP_NF_TARGET_REJECT=y
***
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y
(Звездочки добавлены, чтобы выделить применимое правило)
Все, что я могу найти, говорит о том, что REJECT является допустимой политикой / целью (в целом), но я не могу найти ничего, что говорит о том, что это недопустимо для цепочек INPUT, FORWARD или OUTPUT. Мой гугл-фу не помогает. Я на Gentoo, если это что-то меняет. Кто-нибудь здесь есть какое-то понимание?
источник
iptables
правило (ы) в вопросе?Ответы:
REJECT
является целевым расширением , в то время как цепная политика должна быть целью . Страница руководства говорит это (хотя это не совсем понятно), но кое-что из того, что там написано, совершенно неверно.Политика может быть только
ACCEPT
илиDROP
на встроенных цепочках. Если вы хотите получить эффект отклонения всех пакетов, которые не соответствуют предыдущим правилам, просто убедитесь, что последнее правило соответствует всему, и добавьте правило сREJECT
целевым расширением. Другими словами, после добавления всех соответствующих правил, выполнитеiptables -t filter -A OUTPUT -j REJECT
.См. Ветку «Каковы возможные политики цепочки» в списке сетевых фильтров для получения более подробной информации.
источник
Я не смог найти его документированным, но ссылка здесь указывает на то, что единственными разрешенными политиками являются ACCEPTor DROP. Это подтверждается, глядя на источник из
libiptc
(который отвечает за изменение правил) вокруг линии 2429, где код имеетОригинальный поток предлагает лучшее, что нужно сделать, это добавить REJECT в конце цепочки, что должно быть
iptables -A OUTPUT -j REJECT
.Обратите внимание, что код перед этим:
Таким образом, вы вообще не можете устанавливать политику в пользовательской цепочке.
источник
-p
для сопоставления по протоколу; он имел в виду,-A
как говорит мой ответ.REJECT
наOUTPUT
не имеет смысла; aREJECT
вернет ICMP-пакет, который должен был бы пройти через сеть.Добавьте новое
-j LOG
как ваше последнее правило (следовательно, передDROP
политикой), чтобы увидеть, что заходит так далеко вOUTPUT
цепочке.источник
REJECT
ICMP-пакет вернуться на интерфейс lo? Я согласен, что этоLOG
полезно для устранения неполадок, но я действительно надеялся, что это способ напомнить мне, что «О, да ... это, вероятно, заблокировано моимDROP
iptables default» вместо того, чтобы устранять неполадки в течение 5 минут, просит коллегу Сервер Access XYZ понимает, что он, вероятно, локальный , что является моим наиболее распространенным подходом, поскольку мой обычный рабочий день редко затрагивает вещи, для которых я еще не открыл дыру. Конечно, возможно, мне нужно помнить это лучше, но квартираREJECT
более очевидна.ethX
интерфейс генерировал трафик наlo
интерфейсе по многим причинам. Они очень независимы; Вы можете легко сделать цепочки применимы к одному, а не к другому.