Необходимо выполнить правила в противоположном порядке. Iptables чувствителен к порядку, который были выполнены команды. Если правило соответствует, оно не продолжает проверять больше правил, оно просто повинуется тому. При установке отбрасывания сначала принять правило никогда не будет тестироваться. Путем установки определенного принимают с исходным IP, затем устанавливание более общей политики для отбрасывания Вас будет влиять на ожидаемое поведение.
iptables -A INPUT -s x.x.x.x -p ICMP --icmp-type 8 -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type 8 -j DROP
Что касается подвешивать проблемы Вы, кажется, имеете, действительно ли Вы уверены, что ввели допустимый IP-адрес? Возможно, можно снабдить префиксом ту команду strace iptables …
видеть то, что это делает, в то время как это, кажется, зависает.
В том же окне можно просто ввести bash
запустить новый. Это эквивалентно закрытию окна и повторному открытию нового.
С другой стороны, можно ввести source ~/.bashrc
к источнику .bashrc
файл.
В дополнение к тому, что предлагали другие, я обнаружил, что источник
не сбрасывает ранее назначенные переменные среды. Итак, если вы хотите отключить переменные среды, вам нужно сделать это вручную.
Добавляя к другому ответу , я считаю полезным определить следующий псевдоним:
alias refreshenv="bash;exit"
Это гарантирует, что родительский экземпляр bash будет уничтожен, как только вы выйдете из дочернего экземпляра bash и так далее. Избавляет вас от необходимости набирать exit
несколько раз, как если бы вы просто набирали bash
.
Поскольку этот вопрос возникает в Google, когда вы ищете, как перезагрузить среду внутри сценария оболочки, вот один из них:
Создайте оболочку входа в систему с пустой средой, а затем проверьте ее состояние:
eval "$(exec /usr/bin/env -i "${SHELL}" -l -c "export")"
Обратите внимание, что этот не будет учитывать не -экспортированные переменные . Вместо этого я бы предложил set -o posix && set
, но у него есть проблема, заключающаяся в том, что он может сломаться, так как вы не можете просто написать каждую переменную в Bash. Анализ его вывода также непрост, поэтому я бы не рекомендовал его. Хотя вряд ли это то, что вы хотите.
source
корректный путь – Matteo 13.12.2011, 08:18source
. можно просто ввести точку вместо него:. ~/.bashrc
. ввод – rush 13.12.2011, 08:31source
показывает пользователю, которым называют команду. Я не верю в показ неукомплектованных команд новым пользователям, пока они не понимают то, что делает код. – n0pe 13.12.2011, 08:34source
bashism, который длиннее для ввода все же предложений никакие преимущества перед его портативным устройством через все эквивалентные оболочки,.
, Я не вижу точку поощрения никого, нового или опытного, для использования его. – jw013 15.12.2011, 04:27