Answers:
我不了解“ Ubuntu”,但是在Linux中,“ iptables”通常不是一项服务-它是操作netfilter内核防火墙的命令。通过将所有标准链上的默认策略设置为“ ACCEPT”并刷新规则,可以“禁用”(或停止)防火墙。
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
(如果您已经使用过其他表,则可能还需要刷新它们,例如“ nat”)
Ubuntu网站上的以下文章介绍了如何设置iptables与NetworkManager一起使用:https : //help.ubuntu.com/community/IptablesHowTo
iptables -F
是我所缺少的:-)
iptables-save > /tmp/rules
保存了我的一天。谢谢
你们都错了:-)
您要查找的命令是:
$ 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
该脚本是本教程的一部分,根据上述脚本,所有用于配置防火墙的命令都必须插入/etc/iptables.conf文件中。该脚本必须插入到/etc/init.d中名为iptables的文件中,并使用以下命令使其可执行
chmod+x *iptables*
并将服务添加到运行级别
update-rc.d iptables defaults
您可以从shell添加新规则,这些规则将立即生效,并且在服务停止时将被添加到/etc/iptables.conf中(这意味着当系统关闭时将确保保存这些规则)。
希望对大家有帮助。
看起来有几种方法可以在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
执行系统命令以加载防火墙规则。因此,在使用上述命令删除所有规则后执行同一命令将导致您要求的“重新加载防火墙”。
如果我没有记错的话,ubuntu指南中建议的设置iptables的方法是将其设置为网络脚本的一部分。这意味着没有像BSD风格的OS那样的/etc/init.d/iptables脚本。
在/etc/init.d/上创建一个文件
touch fw.rc
使文件可执行chmod + x
在/etc/rc2.d/上建立到该文件的符号链接
ln -s /etc/init.d/fw.rc S80firewall
编辑S80firewall并添加以下内容
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
您可以在此文件上添加所有自定义iptables规则
现在,您可以通过运行/etc/rc2.d/S80firewall(必须是root用户)来重新启动防火墙(iptables)
我遇到过同样的问题。实际上,在iptables中没有持久性/etc/init.d
因此,我在以下位置创建了iptables-persistent文件 /etc/init.d
nano /etc/init.d/iptables-persistent
并在其中写入以下内容:
#!/bin/sh
# Written by Simon Richter <sjr@debian.org>
# modified by Jonathan Wiltshire <jmw@debian.org>
# with help from Christoph Anton Mitterer
#
### BEGIN INIT INFO
# Provides: iptables-persistent
# Required-Start: mountkernfs $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Start-Before: $network
# X-Stop-After: $network
# Short-Description: Set up iptables rules
# Description: Loads/saves current iptables rules from/to /etc/iptables
# to provide a persistent rule set during boot time
### END INIT INFO
. /lib/lsb/init-functions
rc=0
load_rules()
{
log_action_begin_msg "Loading iptables rules"
#load IPv4 rules
if [ ! -f /etc/iptables/rules.v4 ]; then
log_action_cont_msg " skipping IPv4 (no rules to load)"
else
log_action_cont_msg " IPv4"
iptables-restore < /etc/iptables/rules.v4 2> /dev/null
if [ $? -ne 0 ]; then
rc=1
fi
fi
#load IPv6 rules
if [ ! -f /etc/iptables/rules.v6 ]; then
log_action_cont_msg " skipping IPv6 (no rules to load)"
else
log_action_cont_msg " IPv6"
ip6tables-restore < /etc/iptables/rules.v6 2> /dev/null
if [ $? -ne 0 ]; then
rc=1
fi
fi
log_action_end_msg $rc
}
save_rules()
{
log_action_begin_msg "Saving rules"
#save IPv4 rules
#need at least iptable_filter loaded:
/sbin/modprobe -q iptable_filter
if [ ! -f /proc/net/ip_tables_names ]; then
log_action_cont_msg " skipping IPv4 (no modules loaded)"
elif [ -x /sbin/iptables-save ]; then
log_action_cont_msg " IPv4"
iptables-save > /etc/iptables/rules.v4
if [ $? -ne 0 ]; then
rc=1
fi
fi
#save IPv6 rules
#need at least ip6table_filter loaded:
/sbin/modprobe -q ip6table_filter
if [ ! -f /proc/net/ip6_tables_names ]; then
log_action_cont_msg " skipping IPv6 (no modules loaded)"
elif [ -x /sbin/ip6tables-save ]; then
log_action_cont_msg " IPv6"
ip6tables-save > /etc/iptables/rules.v6
if [ $? -ne 0 ]; then
rc=1
fi
fi
log_action_end_msg $rc
}
flush_rules()
{
log_action_begin_msg "Flushing rules"
if [ ! -f /proc/net/ip_tables_names ]; then
log_action_cont_msg " skipping IPv4 (no module loaded)"
elif [ -x /sbin/iptables ]; then
log_action_cont_msg " IPv4"
for param in F Z X; do /sbin/iptables -$param; done
for table in $(cat /proc/net/ip_tables_names)
do
/sbin/iptables -t $table -F
/sbin/iptables -t $table -Z
/sbin/iptables -t $table -X
done
for chain in INPUT FORWARD OUTPUT
do
/sbin/iptables -P $chain ACCEPT
done
fi
if [ ! -f /proc/net/ip6_tables_names ]; then
log_action_cont_msg " skipping IPv6 (no module loaded)"
elif [ -x /sbin/ip6tables ]; then
log_action_cont_msg " IPv6"
for param in F Z X; do /sbin/ip6tables -$param; done
for table in $(cat /proc/net/ip6_tables_names)
do
/sbin/ip6tables -t $table -F
/sbin/ip6tables -t $table -Z
/sbin/ip6tables -t $table -X
done
for chain in INPUT FORWARD OUTPUT
do
/sbin/ip6tables -P $chain ACCEPT
done
fi
log_action_end_msg 0
}
case "$1" in
start|restart|reload|force-reload)
load_rules
;;
save)
save_rules
;;
stop)
# Why? because if stop is used, the firewall gets flushed for a variable
# amount of time during package upgrades, leaving the machine vulnerable
# It's also not always desirable to flush during purge
echo "Automatic flushing disabled, use \"flush\" instead of \"stop\""
;;
flush)
flush_rules
;;
*)
echo "Usage: $0 {start|restart|reload|force-reload|save|flush}" >&2
exit 1
;;
esac
exit $rc
然后授予chmod 755权限。
chmod 755 /etc/init.d/iptables-persistent
现在,它可以完美运行了!希望它可以帮助某人。
您使用的是适用于RedHat和CentOS的命令,而不是Ubuntu或Debian。
http://www.cyberciti.biz/faq/ubuntu-server-disable-firewall/
默认情况下没有,但是在最近的debian派生版本(包括Ubuntu)中,您可以安装服务来管理iptables:
sudo apt install iptables-persistent
然后,您可以加载以前保存的规则:
systemctl start netfilter-persistent
回顾发生了什么:
systemctl status netfilter-persistent
netfilter-persistent.service - netfilter persistent configuration
Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)
Active: active (exited) since Sun 2019-03-24 10:49:50 IST; 16min ago
Main PID: 1674 (code=exited, status=0/SUCCESS)
Tasks: 0
Memory: 0B
CPU: 0
CGroup: /system.slice/netfilter-persistent.service
Mar 24 10:49:50 ubuntu systemd[1]: Starting netfilter persistent configuration...
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: Warning: skipping IPv4 (no rules to load)
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start
Mar 24 10:49:50 ubuntu netfilter-persistent[1674]: Warning: skipping IPv6 (no rules to load)
Mar 24 10:49:50 ubuntu systemd[1]: Started netfilter persistent configuration.
Mar 24 11:02:49 ubuntu systemd[1]: Started netfilter persistent configuration.
或停止服务:
systemctl stop netfilter-persistent
默认情况下,停止服务不会刷新iptables(即不会禁用防火墙,请参阅man netfilter-persistent
)。
/etc/init.d/
其中找到它(un)有用的是您在谷歌搜索“关闭iptables ubuntu”时获得的最重要链接。