我有一个交换机配置为将所有流量镜像到服务器的以太网接口。我实际上可以看到使用 tshark、tcpdump 等接收到的数据包,但 iptables 似乎没有看到这个流量。我的最终目标是 ulog 用于连接记帐的同步数据包。
我试图在 PREROUTING 链中放置规则,但没有成功。
iptable 可以捕获没有发送到本地机器的数据包吗?如果没有,有没有办法做到这一点?
iptables
仅适用于以某种方式指向您的机器的 IP 数据包。因此,您尝试实现的目标将无法使用iptables
. 要使其工作,您需要将记帐机器设置为所有 IP 流量的路由器。
这个任务的 tcpdump 有什么问题?
tcpdump -G 3600 -w tcpsyn-%FT%T.pcap tcp and 'tcp[tcpflags] & (tcp-ack|tcp-syn) = tcp-syn'
如果您想要所有 TCP 启动尝试。
tcpdump -G 3600 -w tcpsynack-%FT%T.pcap tcp and 'tcp[tcpflags] & (tcp-ack|tcp-syn) = (tcp-ack|tcp-syn)'
如果您希望实际建立所有 TCP 会话。
您使用哪个表进行监控?
您要做的是使用过滤表(默认)和FORWARDING
链:它专门用于捕获“遍历”机器的数据包。例如:
iptables -A FORWARDING -p tcp --dport 80 -j LOG
该INPUT
链将捕获来自外部的发往本地机器的OUTPUT
数据包,该链将捕获来自该机器并向外发送的数据包。
附带说明:通过环回传输的数据包会同时通过INPUT
和OUTPUT
链。
至于PREROUTING
,它是一个链,如果有必要,在路由决策之前修改数据包——这就是为什么,例如,端口重定向在那里完成。这就是为什么过滤表没有钩子的原因:它没有意义。