当前位置: 首页>>技术教程>>正文


如何在Ubuntu上启动/停止iptables?

,

问题描述

如何在Ubuntu上启动/停止iptables服务?

我努力了

 service iptables stop

但它给出的是”unrecognized service”。

为什么这样做呢?还有其他方法吗?

最佳思路

我不了解”Ubuntu”,但是在Linux上,”iptables”并不是一种服务-它是操作netfilter内核防火墙的命令。您可以通过将所有标准链上的默认策略设置为”ACCEPT”并刷新规则来”disable”(或停止)防火墙。

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F

(如果您使用过其他表,则可能还需要刷新它们,例如”nat”)

Ubuntu网站上的以下文章介绍了设置与NetworkManager一起使用的iptables:https://help.ubuntu.com/community/IptablesHowTo

次佳思路

你们都错了:-)

您要查找的命令是:

$ sudo ufw disable

第三种思路

我将首先检查它是否与(可能是)一起安装:

dpkg -l | grep iptables

在Ubuntu上,iptables不是服务。为了停止它,您必须执行以下操作:

sudo iptables-save > /root/firewall.rules
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

为了恢复您以前的规则:

iptables-restore < /root/firewall.rules

它取自http://www.cyberciti.biz/faq/turn-on-turn-off-firewall-in-linux/,并已在许多Ubuntu 8.X& 9.10安装。

第四种思路

iptables是一个命令,它不是服务,因此通常无法使用类似

service iptables start

要么

service iptables stop

为了启动和停止防火墙,但是一些发行版(如centos)已经安装了一个名为iptables的服务来启动和停止防火墙以及用于配置它的配置文件。无论如何,有可能提供一项服务来管理ipotable的编辑或为此范围安装脚本。 linux中的所有服务(ubuntu也不例外)是/etc/init.d文件夹中的可执行脚本,该脚本实现了标准接口(启动,停止,重新启动)。可能的脚本如下所示:

 #!/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 

该脚本是该tutorial的一部分,必须根据上述脚本将所有配置防火墙的命令插入/etc/iptables.conf文件中。该脚本必须插入到/etc/init.d中名为iptables的文件中,并使用以下命令使其可执行

chmod+x *iptables* 

并将服务添加到运行级别

update-rc.d iptables defaults

您可以从shell添加新规则,这些规则将立即处于活动状态,并在服务停止时将添加到/etc/iptables.conf中(这意味着当系统关闭时将确保保存这些规则)。

希望对大家有帮助。

第五种思路

由于iptables和ufw都是在Linux中管理netfilter防火墙的方法,并且由于默认情况下两者在Ubuntu中均可用,因此您可以使用它们来启动和停止(和管理)防火墙规则。

iptables更灵活,但是由于ufw为简单和典型的功能提供了非常简单的界面语言,因此您可以使用:

sudo ufw disable#禁用防火墙

sudo ufw enable#启用防火墙

要查看当前的防火墙设置,请使用sudo ufw status verboseiptables -L

iptablesUFW上的Ubuntu社区文档页面提供了大量信息。

第六种思路

看起来有几种方法可以在Ubuntu中管理防火墙,因此您可能有兴趣阅读以下内容:https://help.ubuntu.com/community/IptablesHowTo#Configuration%20on%20startup

要删除所有当前规则,可以使用以下命令(将它们放入某些脚本中):

iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -F
iptables -t mangle -X
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -F
iptables -t filter -X

通常,您的默认防火墙规则保存在某些文件中(例如,/etc /iptables.rules)。在引导系统命令iptables-restore </etc/iptables.rules时执行,以加载防火墙规则。因此,在使用上述命令删除所有规则后执行同一命令将得到您要求的”reloading firewall”。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10698.html,未经允许,请勿转载。