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 / 问题 / 436465
Accepted
Avihai Marchiano
Avihai Marchiano
Asked: 2012-10-10 07:26:50 +0800 CST2012-10-10 07:26:50 +0800 CST 2012-10-10 07:26:50 +0800 CST

同一主机上 2 个以太网卡之间的 INPUT 上的 iptables 规则

  • 772

我在同一台主机上有 2 张 eth 卡。两者都直接通过 LAN 电缆连接。

I set eth0 with ip - 192.168.1.2
I set eth1 with ip - 192.168.1.1

我设定了这个规则:

iptables -A INPUT -p tcp -j NFQUEUE --queue-num 0

没有其他规则。(我运行了 iptables -X,-F)

我从 192.168.1.2 向 192.168.1.1 发送 TCP syn 数据包(通过使用原始套接字的 C++ 程序)

在 wireshark 中,我看到在 eth0 上收到了数据包,但是 iptables 规则(上面)不适用这个数据包。当我将数据包发送到远程主机并在远程主机上应用此规则时,它工作正常。

所以,我猜这是因为两张 eth 卡都存在于同一个主机上。. 我需要为本地 eth 卡(dest 和 src 在同一台机器上)创建 iptables INPUT 规则。我需要它来简化测试。

我猜对了问题吗?有没有办法绕过这个?

Ps - 通过开关连接它们没有帮助。该规则未应用。在 Ubuntu 上运行。

TCDUMP 显示数据包:

10:48:42.365002 IP 192.168.1.2.38550 > 192.168.1.1.34298: Flags [S], seq 0, win 5840, length 0

但是像这样记录 iptables 什么也没有:

iptables -A INPUT -p tcp -j LOG  --log-prefix '*****************'
iptables -A OUTPUT -p tcp -j LOG  --log-prefix '#################'

root@test:~# ip ad sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 80:1f:02:2f:d1:bb brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::821f:2ff:fe2f:d1aa/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 70:f3:55:0d:ef:31 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 brd 192.168.1.255 scope global eth1
    inet6 fe80::72f3:95ff:fe0d:ef31/64 scope link 
       valid_lft forever preferred_lft forever
root@test:~# ip ro sh
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.1 
192.168.1.0/24 dev eth1  proto kernel  scope link  src 192.168.1.2 
iptables
  • 2 2 个回答
  • 1213 Views

2 个回答

  • Voted
  1. Best Answer
    BatchyX
    2012-10-11T11:15:19+08:002012-10-11T11:15:19+08:00

    确保监听 netfilter 队列的程序确实在响应。如果你说它在你的服务器上不起作用但在另一个服务器上起作用,那是因为另一个服务器实际上有一个程序响应那个 NFQueue。

    还请记住,数据包套接字(有时被滥用为“原始套接字”)不受 netfilter 的约束,并且内核也可以丢弃数据包,例如,如果该数据包启用了反向路径过滤但失败了。

    • 1
  2. por
    2012-10-10T08:48:01+08:002012-10-10T08:48:01+08:00

    这里的问题到底是什么?

    您可以使用 -i 开关为每个接口定义 iptables 规则:

    iptables -A INPUT -i eth0 -p tcp -j NFQUEUE --queue-num 0
    iptables -A INPUT -i eth1 -p tcp -j NFQUEUE --queue-num 1
    

    匹配数据包的一种可能方法是:

    iptables -A OUTPUT -s 192.168.1.2/32 -d 192.168.1.1/32 -j LOG --log-prefix 'Going from eth0 to eth1: '
    iptables -A OUTPUT -s 192.168.1.1/32 -d 192.168.1.2/32 -j LOG --log-prefix 'Going from eth1 to eth0: '
    

    当然,请酌情使用 -t {nat,mangle}。

    • -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