2

https://help.ubuntu.com/community/Router/Firewall

В приведенной выше ссылке описан скрипт брандмауэра. Как я могу установить этот скрипт на рабочий стол Ubuntu 10.0.4?

3 ответа3

1

Вот некоторая исчерпывающая документация, которая предоставляет несколько вариантов, которые вы можете выбрать:

https://help.ubuntu.com/community/IptablesHowTo#Configuration при запуске

0

Вы можете сохранить скрипт как /etc/iptables.up.rules например, и добавить:

post-up iptables-restore < /etc/iptables.up.rules

в файл /etc/network/interfaces под определением вашего интерфейса.

0

«Расширенный» сценарий брандмауэра - это сценарий оболочки, который должен выполняться после запуска как внутреннего, так и внешнего интерфейса.

Сначала поместите скрипт куда-нибудь, скажем /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-адресов и, возможно, название интерфейсов.

После того, как вы нашли метод, который работает, я предлагаю вам написать описание того, как вы это сделали, на вики-странице.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .