如果一台机器没有安装iptables,防火墙还运行吗?
如果是,我该如何禁用/更改规则?
如果我输入命令,iptables
我会收到响应:
iptables v1.4.7: no command specified
[root@ruad1 ~]# iptables -L
FATAL: Module ip_tables not found.
iptables v1.4.7: can't initialize iptables table `filter': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.
我一直在搜索,但有关 centos 防火墙的所有文档似乎都提到了 iptables。
如果我做 IP 路由列表,似乎有很多规则?
编辑:回答评论中的问题:
输出ls -alL /sbin/iptables
-rwxr-xr-x 1 root root 54200 Nov 23 2013 /sbin/iptables
当我执行 iptables restart 时,我收到以下内容
内核版本:
2.6.32-5-vserver-amd64
/lib/modules/2.6.32-5-vserver-amd64 的内容
/lib/模块/2.6.32-5-vserver-amd64
我使用 iptables 发出的任何命令(重新启动、停止..)都会收到与上面粘贴的相同的错误。
/sbin/iptables output:
iptables v1.4.7: can't initialize iptables table `filter': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.
输出touch /tmp/foo; ls -la /tmp/foo
-rw-r--r-- 1 root root 0 Jun 27 16:51 /tmp/foo
答案1
看起来这台机器正在虚拟化环境中运行,或者更具体地说:操作系统级虚拟化环境,如 LXC、OpenVZ 或 Virtuozzo。内核版本(2.6.32-5-虚拟服务器-amd64) 泄露了这一点。
在这样的环境中,内核在主机和客户系统之间共享,并且并非所有内核 API 都可在虚拟机中使用。我猜这就是您在调用时出现权限错误的原因iptables
。
当你查明你的机器在哪个环境中运行时,你也许能够在线找到解决方案:
- Parallels Virtuozzo 的知识库中有一篇文章如何在容器中启用防火墙。
- OpenVZ wiki 上有一篇文章设置 iptables 防火墙。
但您可能必须联系主机系统的管理员来进行必要的更改。
答案2
首先尝试这个命令:
iptables -t nat -L
并且还检查 iptables 的已加载模块列表,可能是缺少模块。
cat /proc/net/ip_tables_matches
检查 /etc/sysconfig/iptables 中的规则是否有任何可疑的条目或空格字符。
其次尝试这个:
$ sudo grep -R "options nf_conntrack ip_conntrack_disable_ve0=1" /etc/modprobe.d/
and replace the "1" with "0":
options nf_conntrack ip_conntrack_disable_ve0=0
重启系统
答案3
通常,iptables 功能应包含在基本的 CentOS 6 安装(带最小网络)中,而其是否处于活动状态取决于是否加载模块(ip_tables 和 iptable_filter)。
要启用/禁用 iptables,您可以使用 service 命令来实现。(service iptables start/stop/restart,如 TBI infotech 所列。)
根据给定的日志 - “错误:未找到模块 ip_tables”,我看起来你的 ip_tables 模块不存在或被重新定位到某个地方。
另外,可能是你的内核版本与系统中的模块库不匹配。然后,你可以检查以下内容来确认
modinfo ip_tables(如果失败,则意味着您无法在操作内核中找到目标模块文件。)
查找您正在运行的内核版本(uname -r),您的内核模块路径应该在文件夹“/lib/modules/
uname -r
/”中。正常情况下,文件“ip_tables.ko”应该位于路径“/lib/modules//
uname -r
kernel/net/ipv4/netfilter/”中。否则,你的 iptables 服务将无法运行。
答案4
也许这只是 PATH 的问题。尝试在 PATH 定义中放入 /sbin 而不是 /bin。
编辑:啊,好吧,现在你说它是 Debian。随便吧。