标签: iptables

使用 iptables 将允许的 IP(输入/输出)列入白名单

我有几个 ip 范围,我希望我的服务器能够连接和用户连接。其他一切都应该被阻止。

我应该如何使用 iptables 做到这一点?

我的操作系统是基于 Debian 的 linux 发行版。

linux iptables blacklist

24
推荐指数
3
解决办法
10万
查看次数

我有一个包含所有 iptable 设置的文件。如何将其加载到我的服务器中?

我的系统管理员给了我一个包含 iptables 规则的文件。我输入什么命令来加载它?

我之前看过他做的,他在1行里做的!像...iptables > thefile.dat ??

iptables

24
推荐指数
2
解决办法
7万
查看次数

如何导出和恢复我的 iptables 设置?

我有一套看起来很奇怪且令人费解的规则,目前对我有用。有没有办法“导出”这些内容并将它们保存到文件中,以便以后可以在出现问题时恢复它们?

linux redhat iptables

24
推荐指数
1
解决办法
3万
查看次数

为什么运行服务器的 Docker 容器会向外界公开端口,即使该端口被 iptables 阻止?

我在 Docker 容器内运行 MySQL 时遇到问题。我的测试映像是从以下 Dockerfile 构建的:

# See: https://index.docker.io/u/brice/mysql/

FROM ubuntu:12.10
MAINTAINER Joni Kahara <joni.kahara@async.fi> 

# Because docker replaces /sbin/init: https://github.com/dotcloud/docker/issues/1024
RUN dpkg-divert --local --rename --add /sbin/initctl
RUN ln -s /bin/true /sbin/initctl

RUN apt-get update
RUN apt-get upgrade -y

RUN apt-get -y install mysql-server

RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf

RUN /usr/bin/mysqld_safe & \
    sleep 10s && \
    mysql -e "GRANT ALL ON *.* to 'root'@'%'; FLUSH PRIVILEGES;"

EXPOSE 3306

VOLUME ["/var/lib/mysql", "/var/log/mysql"]

CMD ["mysqld_safe"]
Run Code Online (Sandbox Code Playgroud)

从上面的文件构建图像后,我运行它:

docker run …
Run Code Online (Sandbox Code Playgroud)

iptables docker

24
推荐指数
1
解决办法
3万
查看次数

取消端口转发

我需要将所有对端口 80 的请求转发到 8020。我用谷歌搜索了一下,得到:

iptables -t nat -I PREROUTING --source 0/0 --destination 0/0 -p tcp --dport 80 -j REDIRECT --to-ports 8020

现在如果我必须撤消它,我该怎么做(除了重新启动系统)?

iptables port-forwarding

23
推荐指数
2
解决办法
3万
查看次数

使用 IPtables 或空路由将大约 100 万个 IP 地址列入黑名单?

我遇到过这样的情况,客户端需要将一组不到 100 万个单独的 IP 地址(无子网)列入黑名单,并且网络性能是一个问题。虽然我猜想 IPTables 规则对性能的影响比路由小,但这只是猜想。

有没有人有任何确凿的证据或其他理由支持 IPTables 或空路由作为将长 IP 地址列表列入黑名单的解决方案?在这种情况下,一切都是自动化的,因此易用性并不是真正的问题。

编辑 11 年 11 月 26 日

经过一些测试和开发,这些选项似乎都不可行。似乎路由查找和 iptables 都通过规则集进行线性搜索,并且处理这么多规则花费的时间太长。在现代硬件上,将 100 万个项目放入 iptables 黑名单会使服务器减慢到每秒大约 2 打数据包。所以IPTables和空路由都出来了。

ipset,正如 Jimmy Hedman 所推荐的那样,会很棒,只是它不允许您在一组中跟踪超过 65536 个地址,因此除非有人有任何想法,否则我什至无法尝试使用它。

显然,阻止这么多 IP 的唯一解决方案是在应用程序层中进行索引查找。不是这样吗?


更多信息:

此实例中的用例是阻止 IP 地址的“已知违规者”列表访问 Web 服务器上的静态内容。FWIW,通过 Apache 进行阻塞Deny from同样缓慢(如果不是更慢),因为它也进行线性扫描。


仅供参考:最终的工作解决方案是将 apache 的 mod_rewrite 与 berkeley DB 映射结合使用来对黑名单进行查找。伯克利数据库的索引性质允许列表以 O(log N) 性能扩展。

route iptables blacklist

23
推荐指数
3
解决办法
1万
查看次数

调试 iptables 和常见的防火墙陷阱?

这是一个建议的 关于理解和调试 Linux 系统上的软件防火墙的规范问题

为了回应 EEAA 的回答@Shog 的评论,我们需要一个合适的规范问答来结束关于 iptables 的常见的相对简单的问题。

什么是调试 Linux 软件防火墙问题的结构化方法,netfilter包过滤框架,通常被用户界面接口iptables引用?

有哪些常见的陷阱、反复出现的问题和简单或更模糊的事情,以检查偶尔的防火墙管理员可能会忽略或以其他方式从了解中受益?

即使您使用诸如UFWFirewallD(又名firewall-cmd)、Shorewall或类似的工具,您也可以从没有这些工具提供的抽象层的情况下查看引擎盖中受益。

这个问题不是用于构建防火墙的方法:检查产品文档,例如为iptables Trips & Tricks贡献食谱或搜索标记的 问题以获取现有的常见且备受推崇的高分问答环节。

linux firewall iptables ufw firewalld

23
推荐指数
3
解决办法
2万
查看次数

iptables 规则只允许一个域的 HTTP 流量

我需要将我的机器配置为仅允许进出 serverfault.com 的 HTTP 流量。所有其他网站、服务端口均无法访问。我想出了这些 iptables 规则:

#drop everything
iptables -P INPUT DROP
iptables -P OUTPUT DROP

#Now, allow connection to website serverfault.com on port 80
iptables -A OUTPUT -p tcp -d serverfault.com --dport 80 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#allow loopback
iptables -I INPUT 1 -i lo -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

它不太好用:

  • 在我放下一切之后,继续规则 3:

    iptables -A 输出 -p tcp -d serverfault.com --dport 80 -j 接受

我收到此错误:

iptables v1.4.4: host/network `serverfault.com' not found
Try `iptables -h' …
Run Code Online (Sandbox Code Playgroud)

domain-name-system iptables loopback

22
推荐指数
3
解决办法
8万
查看次数

如何使iptables规则过期?

有人告诉我这是可能的,但我在谷歌或手册页上找不到任何内容。

我需要在一定时间内禁止 IP,然后自动取消禁止。

linux iptables centos

22
推荐指数
3
解决办法
3万
查看次数

使用iptables将ipv6转发到ipv4?

目前我有一个设置,由于配置需要永远修复,我有一个只能通过 ipv4 访问的服务器。但是,我也有一台可以通过 ipv6 访问的服务器。我想知道是否可以使用 iptables 将某个端口上的 ipv6 流量从一台服务器转发到另一台使用 ipv4 流量的服务器。

iptables port-forwarding

22
推荐指数
4
解决办法
3万
查看次数