iptables, что действительно открыто?

Удалить комментарии из строк, которые имеют IP, запускающийся с 10.4 (это удалит первое #, Я предполагаю, что у Вас никогда не будет больше):

sed -i '/^#10\.4/{s/^#//}' /etc/hosts

Добавить комментарий к тем строкам:

sed -i '/^10\.4/{s/^/#/}' /etc/hosts

Так, почему был Вашим сбой? Вы использовали c\ что означает:

c\
текст

Удалите строки, соответствующие адресу или диапазону адресов, и произведите строки текста, которые следуют за этой командой (каждый, но последнее окончание \, которые удалены из вывода) вместо последней строки (или вместо каждой строки, если никакие адреса не были указаны). Новый цикл запускается после того, как эта команда сделана, так как пространство шаблона будет удалено.

Так, когда Вы работали sed -i '/#10\.4\..*/c\10\.4\..*' /etc/hosts, эта предназначенная "замена #10\.4\..* с литеральной строкой #10\.4\..*". То, что Вы хотели сделать:

sed -i 's/#10\.4\.\(.*\)/10.4.\1/' /etc/hosts`

Вышеупомянутое использование оператор замены (s/from/to/) и получение шаблона, первый шаблон в \( \) может упоминаться как \1, второе как \2 и т.д. Как Вы видите из ответа Michael, это не нужно также, можно просто заменить #10.4 с 10.4. Или, как в моем ответе выше, можно просто удалить # один.

2
07.11.2014, 15:18
1 ответ

iptables не похоже на файл конфигурации PAM, где первое правило удовлетворяет процедуру. В iptables все правила должны быть удовлетворены.

Это совершенно неправильно. Правила проходят в порядке, и когда правило, которое соответствует прыжкам на один из встроенных целей (, принять , , капля или очереди ), обработка Пакета заканчивается там: больше никаких правил не пройдено. Последнее утверждение о том, что «если бы не было никакого принять все угодно, ничто не пройдет через брандмауэр», является True (с политикой падения), но пакет не должен соответствовать всем правилам принимать, чтобы быть правдой, он только должен достичь один.

Это возможно для обработки пакета несколькими правилами сопоставления, потому что могут быть правила, которые переходят на пользовательские цепи (в этом случае, в этом случае правила в цепочке пробуются по порядку), или это не прыгает в Все и присутствует только для каких-либо других причин, таких как регистрация. Но однажды принимают или DROP , вот и все, вот в этом, пакет либо отправляется, либо отбрасывается; Если достигается Очередь , пакет передается в пользовательскую связь для дальнейшей обработки; И в любом случае больше не обрабатываются правила для этого пакета. Наконец, если (и только если) обработка достигает конца встроенной цепи, применяется политика цепи.

Например, предположим, что iptables -l показывает

Chain INPUT (policy DROP) target prot opt source
destination ACCEPT all -- anywhere anywhere

, поскольку политика капля , только пакеты, явно принимаемые некоторым правилом. Единое правило выглядит , как оно принимает все, но это не обязательно так: могут быть условия, которые iptables -l опускают. Беги iptables -vl для распечатки всех условий. Общее пропущенное условие - это интерфейс; Имея правило, которое принимает все петлевое движение, довольно распространено. Вы бы увидели что-то вроде

# iptables -L INPUT 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
# iptables -vL INPUT
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            

, если правило принято все трафик, вы увидите любой в столбце в в IPTables Iptables .

3
27.01.2020, 22:05

Теги

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