https://help.ubuntu.com/community/Router/Firewall
В приведенной выше ссылке описан скрипт брандмауэра. Как я могу установить этот скрипт на рабочий стол Ubuntu 10.0.4?
https://help.ubuntu.com/community/Router/Firewall
В приведенной выше ссылке описан скрипт брандмауэра. Как я могу установить этот скрипт на рабочий стол Ubuntu 10.0.4?
Вот некоторая исчерпывающая документация, которая предоставляет несколько вариантов, которые вы можете выбрать:
https://help.ubuntu.com/community/IptablesHowTo#Configuration при запуске
Вы можете сохранить скрипт как /etc/iptables.up.rules
например, и добавить:
post-up iptables-restore < /etc/iptables.up.rules
в файл /etc/network/interfaces
под определением вашего интерфейса.
«Расширенный» сценарий брандмауэра - это сценарий оболочки, который должен выполняться после запуска как внутреннего, так и внешнего интерфейса.
Сначала поместите скрипт куда-нибудь, скажем /etc/init.d/local/my_firewall_script
, сделайте его исполняемым и добавьте #!/bin/sh
- первая строка в файле скрипта.
Затем вам нужно организовать запуск скрипта после того, как оба интерфейса будут запущены. У вас есть два варианта:
через выскочку. Это мое предпочтение, потому что скрипт должен запускаться, когда оба интерфейса работают. Создайте файл /etc/init/my_firewall.conf
содержащий что-то вроде этого:
description "My firewall script"
start on (net-device-up IFACE=br0 and net-device-up IFACE=eth0)
console output
pre-start exec /etc/init.d/local/my_firewall_script
Это полностью не проверено, и у меня нулевой опыт запуска, поэтому вам может понадобиться адаптировать файл. Также есть ошибка, связанная с событием net-device-up, которая может повлиять на вас.
через сценарии ifup. Это немного неудобно, потому что скрипт должен быть запущен, когда появится второй интерфейс. Создайте файл /etc/network/if-up.d/my_firewall
содержащий что-то вроде этого (без проверки):
#!/bin/sh
if [ "$IFACE" = "br0" ] || [ "$IFACE" = "eth0" ]; then
if [ -n "$(ip addr show br0 | grep '^ *inet ')" ] 2>/dev/null &&
[ -n "$(ip addr show eth0 | grep '^ *inet ')" ] 2>/dev/null; then
/etc/init.d/local/my_firewall_script
fi
fi
Если бы был один интерфейс или была гарантия, что один из интерфейсов всегда появлялся после другого, этот метод был бы более простым и предпочтительным: сценарий был бы (при условии, что единственным или последним интерфейсом является eth0
):
#!/bin/sh
if [ "$IFACE" = "et0" ]; then
/etc/init.d/local/my_firewall_script
fi
Обратите внимание, что приведенный там сценарий довольно специфичен для конкретной настройки - это пример относительно продвинутого сценария. Вы должны будете адаптировать его под свои настройки, по крайней мере, диапазоны IP-адресов и, возможно, название интерфейсов.
После того, как вы нашли метод, который работает, я предлагаю вам написать описание того, как вы это сделали, на вики-странице.