如何使用 Linux 在 eth0 上捕获数据包并将所有数据包发送到 eth1?

如何使用 Linux 在 eth0 上捕获数据包并将所有数据包发送到 eth1?

今天用Sagemcom路由器连上企业互联网,第一次连上互联网要花20分钟升级固件。

我非常想使用具有两个 NIC 的 CentOS 主机捕获此升级的所有流量,目的是弄清楚如何验证升级。例如使用秘密用户帐户和密码?

如果我想将 CentOS 主机放在 Internet 连接和路由器之间:

问题

  • 我该如何配置 CentOS,以便所有进入的流量都eth0从 出去eth1
  • tcpdump -s0 -A -w upgrade.pcap -nni eth0如果我稍后想使用 Wireshark 来检查包裹,是否正确?

答案1

您可以将 eth0 和 eth1 设置为假设 eth0 连接到 Sagemcom,eth1 连接到互联网连接。流量将通过网桥,然后您可以在网桥上运行 TCP 转储并捕获所有流量。

你需要 bridge-utils 包

brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
ifconfig br0 up

tcpdump -s0 -w dump.pcap -i br0

答案2

首先,如果您想让流量通过,您需要将您的 CentOS 盒设置为路由器,这基本上涉及启用数据包转发(通常机器是目的地)。

其中最简单的部分就是改变/etc/sysctl.conf
改变

net.ipv4.ip_forward = 0至 1。

然后,在一个网络中设置 eth0,在另一个网络中设置 eth1,并在网络之间添加路由。

配置防火墙或 selinux 等其他内容由您决定。

我会使用tcpdump -s0 -n host < router IP > -w upgrade.pcap -i any
虽然其中一些可能是多余的,例如,如果您正在监听往返于路由器 IP 的流量,那么我相信您不需要在接口方面指定太多内容。

相关内容