Назад | Перейти на главную страницу

Сохраните изменения в iptables

У меня работает iptables, и я могу использовать следующую команду ...

sudo / sbin / iptables sudo / sbin / iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

но я не могу ....

сервис iptables сохранить iptables: нераспознанный сервис

Как мне на самом деле сохранить эти изменения, поскольку отображение прекращается при перезапуске сервера?

Спасибо.

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

iptables-save
iptables-restore

сохранит правила в текстовом файле и будет восстановлен при запуске системы скриптом init.d. подробности см. в iptables.conf и iptables man.

Насколько я знаю, Ubuntu использует UFW в последней версии, поэтому, скорее всего, в нем нет сценария инициализации SysV для iptables. Если тебе не нравится UFW, вы можете использовать sudo iptables-save > /etc/iptables.rules чтобы сохранить ваши текущие правила, а затем вызвать sudo iptables-restore < /etc/iptables.rules из rc.local (например) для восстановления правил при запуске.

Или вы можете добавить свой собственный сценарий инициализации для iptables как указано Вот:

#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          iptables
# Required-Start:    mountvirtfs ifupdown $local_fs
# Default-Start:     S
# Default-Stop:      0 6
### END INIT INFO

# July 9, 2007
# James B. Crocker <ubuntu@james.crocker.name>
# Creative Commons Attribution - Share Alike 3.0 License (BY,SA)
# Script to load/unload/save iptables firewall settings.

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"

IPTABLES=/sbin/iptables
IPTABLES_SAVE=/sbin/iptables-save
IPTABLES_RESTORE=/sbin/iptables-restore

IPTABLES_CONFIG=/etc/iptables.conf

[ -x $IPTABLES ] || exit 0

. /lib/lsb/init-functions


case "$1" in
start)
    log_action_begin_msg "Starting firewall"
        type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 120" || true
    if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
    log_action_end_msg $?
    fi
        type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 15" || true
    ;;

stop)
    log_action_begin_msg "Saving current firewall configuration"
    if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    log_action_begin_msg "Flushing ALL firewall rules from chains!"
    if $IPTABLES -F ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    log_action_begin_msg "Deleting ALL firewall chains [Warning: ACCEPTING ALL PORT SERVICES!]"
    if $IPTABLES -X ; then
        $IPTABLES -P INPUT ACCEPT
        $IPTABLES -P FORWARD ACCEPT
        $IPTABLES -P OUTPUT ACCEPT
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

save)
    log_action_begin_msg "Saving current firewall configuration"
    if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

force-reload|restart)
    log_action_begin_msg "Reloading firewall configuration [Warning: POTENTIAL NETWORK INSECURITY DURING RELOAD]"
    $IPTABLES -F
    $IPTABLES -X
    if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;

*)
    echo "Usage: /etc/init.d/iptables {start|stop|save|restart|force-reload}"
    exit 1
    ;;
esac

exit 0

Почему бы не сделать это простым способом? В Debian / Ubuntu вы можете:

1 - создайте свои правила iptables

2 - бег sudo apt-get install iptables-persistent; он спросит вас, хотите ли вы сохранить правила и восстановить их после загрузки.