использовать iptables для разрешения входящих соединений с некоторым компьютером на порте XYZ?

Необходимо скопировать элементы явно. Для индексного массива:

b=("${a[@]}")

Для ассоциативного массива (отмечают это a название переменной типа массив, не переменная, значение которой является названием переменной типа массив):

typeset -A b
for k in "${!a[@]}"; do b[$k]=${a[$k]}; done

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

eval "keys=(\"\${!$name[@]}\")"
for k in "${keys[@]}"; do eval "b[\$k]=\${$name[\$k]}"; done

(Предупреждение, код в этом сообщении был введен непосредственно в браузере и не протестирован.)

2
30.07.2011, 22:02
2 ответа

Я думаю, что Ваша команда прекрасна. Хотя порядок аргументов является несколько неортодоксальным, он должен работать.

Проблема наиболее вероятна это iptables правила берут влияние в порядке, который они вводятся. При вводе правила блока, которое соответствует, то позволить правило, позволить правило не привыкнет, потому что пакет уже соответствовал правилу блока.

Общая практика при установке iptables должен сбросить все правила, установить политику, затем ввести все вещи, которые Вы хотите позволить, затем отклонить все остальное с помощью широкого правила соответствия. Я подозреваю, что Вы имеете порядок неправильно и отклоняете все должное к ранее установленному правилу и теперь пытаетесь добавить позволение.

1
27.01.2020, 22:16
  • 1
    так iptables -F INPUT; iptables -i em1 -A INPUT -j ACCEPT -p tcp --dport 9001 -v; iptables -A INPUT j DORP ? –  12312312123 30.07.2011, 22:45
  • 2
    я думаю это просто, работал :), однако я все еще хотел бы знать, оставляю ли я свое поле широко открытым или не :P –  12312312123 30.07.2011, 22:47
  • 3
    @12312312123: Кроме опечатки, которая должна была дать Вам ошибку (-j DROP нет j DORP) та комбинация должна добиться цели. Попробуйте его путем слушания на другом порте с nc или что-то простое, чтобы открыть тестовый порт и затем попытаться говорить с ним. –  Caleb 30.07.2011, 23:02

Если это - Ваши единственные правила, Вы должны быть чрезвычайно закрыты. Можно хотеть ограничить IP-адреса, из которых Вы принимаете данные. Распространено запустить цепочки с правила принять СВЯЗАННЫЕ и Установленные соединения.

Если Вы не уверены, что Вы делаете, можно хотеть использовать инструмент для создания брандмауэра. Я использую Shorewall, который хорошо документируется. Это генерирует регистрирующиеся правила для Вас так, Вы видите, что трафик заблокирован. (Обычно зондируемые порты, такие как доли окон не зарегистрированы конфигурация по умолчанию.) Существуют наборы в качестве примера для 1, 2, и 3 интерфейсных конфигурации, включенные в документацию. Существуют также команды, которые позволяют Вам просматривать свою конфигурацию брандмауэра и соединения легко.

1
27.01.2020, 22:16

Теги

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