AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1169813
Accepted
jurijus01
jurijus01
Asked: 2025-01-06 06:16:36 +0800 CST2025-01-06 06:16:36 +0800 CST 2025-01-06 06:16:36 +0800 CST

尽管允许 ipv6,ipTables 仍阻止 ipv4 端口 25 流量。可以修复吗?

  • 772

对端口 25 上的有限 IPv4 连接进行故障排除。

有 ipTables 规则:

  Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  185.121.228.0/24     anywhere            
ACCEPT     all  --  127.0.0.0/24         anywhere            
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:smtp

一旦默认 INPUT 策略为 ACCEPT,

root@mail:/home/ubuntu# echo “HELO” | nc -4 smtp.google.com 25
220 mx.google.com ESMTP ffacd0b85a97d-38a1c8bb5f7si23003263f8f.375 - gsmtp
502-5.5.1 Unrecognized command. For more information, go to
502 5.5.1  https://support.google.com/a/answer/3221692 ffacd0b85a97d-38a1c8bb5f7si23003263f8f.375 - gsmtp

一旦默认 INPUT 策略为 DROP,相同的命令将无限期挂起。

现在最有趣的部分是 INPUT 策略的改变对

root@mail:/home/ubuntu# echo “HELO” | nc -6 smtp.google.com 25

无论如何,它都会得到 Google 的回应。

需要让邮件服务器将邮件发送到所有其他邮件服务器,而不仅仅是兼容 ipv6 的邮件服务器。

如果有人能解释一下发生了什么,那就太好了!

更新:ip-save 打印输出为:

:INPUT DROP [41791:1739301]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6390374:3802889072]
-A INPUT -i ens3 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -s 127.0.0.0/24 -i lo -j ACCEPT
-A INPUT -s 185.121.228.0/24 -i ens3 -j ACCEPT
COMMIT
iptables
  • 1 1 个回答
  • 53 Views

1 个回答

  • Voted
  1. Best Answer
    Nikita Kipriyanov
    2025-01-07T02:39:40+08:002025-01-07T02:39:40+08:00

    您过滤输入的方式也会阻碍输出。这是因为任何“传出”连接实际上都需要回复(返回数据包),而这些目前在您的防火墙中是不允许的。

    想想传出连接是如何工作的,比如 TCP:您的机器发送 SYN,然后它需要接收 SYN 和 ACK(将在 INPUT 链中处理),发送自己的 ACK,等等,例如,当连接从内部发起时,流量总是双向流动。您的防火墙在 INPUT 链中没有任何规则来识别和允许该 SYN 和 ACK,因此它会根据策略进行处理,例如丢弃,并且传出连接无法继续。

    对于某些情况,简单的无状态防火墙(不考虑某些数据包是对其他数据包的回复)就足够了。只有当您能够制定涵盖所有转发和返回流量的规则集时才行。但对于绝大多数情况,您无法做到这一点,这就是为什么我们必须在防火墙中引入连接概念(适用于所有内容,包括显然无连接的 UDP、ICMP 等)并区分与某些实时连接相关的数据包。

    长话短说,Linux 有一个连接跟踪器模块可以执行此操作,通常称为conntrack,并且它的 iptables 接口在规则集语法中有一些匹配和目标。此外,整个 Linux 的 NAT 功能都是基于 conntrack。

    在典型的状态防火墙规则集中,第一条规则是使用 conntrack 来允许来自所有当前已建立连接或与已建立连接相关的新连接的数据包。可以像这样添加:

    iptables -t filter -I INPUT 1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    

    即使 INPUT 策略为 DROP,你的传出连接也会神奇地开始工作。

    此规则还有一种较旧的形式,即使用过时的state模块-m state --state RELATED,ESTABLISHED。我告诉你这一点,以防你在网上的一些旧指南中遇到它;只需知道它是什么,但不要使用它。最近的内核中没有这样的模块,但这种古老的形式仍然可以工作,被默默地翻译成模块conntrack,所以最好明确使用它。-I INPUT 1意思是“插入到前面”(成为第一个)。

    需要注意的是,如果您已经建立了连接并且想要删除它,您不仅需要在它下面添加一条规则;您还需要断开实际的实时连接,以便连接跟踪器停止识别和允许它。对于 TCP,这通常不是什么大问题,但是当您开始使用基于 UDP 的协议时,尤其是像 SIP 这样的复杂协议,您会遇到一些棘手的问题,您需要非常了解连接跟踪器的行为才能解决这些问题。

    至于 IPv6,我怀疑你没有为其设置防火墙。它是一个独立的东西,使用 进行设置ip6tables,可以使用 进行查看ip6tables-save,并且它具有相同的conntrack模块。

    • 1

相关问题

  • OpenVPN 的 Linux IP 转发 - 正确的防火墙设置?

  • iptables 单个规则中的多个源 IP

  • 存储 iptables 规则的规范方法是什么

  • 使用 iptables 和 dhcpd 进行端口转发

  • 根据 Apache 日志数据自动修改 iptables 以阻止行为不良的客户端

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve