Фильтр MAC-адреса в iPtables

просто сохраните результат команды непосредственно в массиве

для этого потребуется возиться с IFS ], чтобы разделить его только на новые строки

примечание что $ '\ n' для новой строки может быть чем-то вроде bash -ism; ymmv w / zsh

OIFS=$IFS IFS=$'\n' netarray=(`airport -s |
awk '$NF=="NONE"{print}' | 
cut -c 1-32,51-54 | 
sort -r -n -k 1.34,1.36 | 
awk '{$NF=""; print}' | 
sed -e 's/ $//' `) IFS=$OIFS

например. на основе вашего образца вывода,

$ typeset -p netarray
declare -a netarray='([0]="HP-Print-93-LaserJet 1102" [1]="TPE-Free")'
1
28.11.2018, 21:34
2 ответа

Ваши правила IPtables конфликтуют. IPtables работает на основе первого совпадения -. Использование опции -Aпомещает правило в конец списка, поэтому ваше правило ACCEPTоказывается в конце.

Таким образом, если вы ввели свои правила в том порядке, в котором вы описали свой пакет, который соответствует этому описанию (tcp-соединение на порту 2001 ), оно будет удалено и не будет касаться ни одного из следующих правил. Это, конечно, если это и ваши единственные правила!

Я понимаю, что эта ссылка довольно старая , однако она предоставляет прекрасную информацию о том, как работает приоритет правил IPtables.

Итак, вы захотите убрать это правило. Сначала нужно определить правило, а затем удалить его.

sudo iptables -L --line-numbers    
sudo iptables -D INPUT [The Number of the Drop Rule]

Затем вы можете повторно -добавить правило, как вы делали до использования опции -A. Теперь ваши IPtables должны работать должным образом.

1
27.01.2020, 23:31

iptableправила основаны на «первом совпадении». Таким образом, ваше первое правило отбрасывает все, а второе правило никогда не достигается.

Если вы измените порядок (сначала "принять", а затем "отбросить" ), это сделает то, что вы ожидаете.

1
27.01.2020, 23:31

Теги

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