我有一个 C++ 程序,用于嗅探通过我的 Linux 机器的每个数据包。但是,我现在需要让我的 Linux 机器监听我网络中的每个流量。我可以购买托管交换机并设置端口跨接,但我不会为交换机支付 200 多英镑,而且它还给了我学习的机会。
我的网络
+---------Computer A
|
Internet-----Router------Switch-------------+---------Linux Box
|
+---------Computer B
拟议网络
+---------Computer A
|
Internet-----Router------Linux Box--------Switch
eth0^ ^eth1 |
+---------Computer B
我该如何在 Linux 中设置它?我是否只需在同一网络上的不同 IP 地址上配置以太网?或者我完全走错了路
我的系统
- Fedora 13。
谢谢
答案1
我假设您当前的网络位于私有子网上,并且您的路由器执行 NAT 以进行外部通信(即,对于外界来说,您的所有机器看起来都具有相同的 IP 地址)。您有两个选择:
- 将机器设置为桥接器
- 将机器设置为 NAT 路由器
要将其设置为路由器:
- 将 eth0 设置为当前路由器的客户端
- 将 eth1 放在不同的子网上
- 将服务器配置为通过 DHCP 将此子网上的地址分发给其他计算机
- 添加适当的 iptables 规则,以便盒子对来自 eth1 侧的传出连接执行 NAT
- 如果你目前在路由器上有任何手动端口转发设置,则需要将其设置为指向新盒子,并将新盒子设置为将这些连接进一步转发到网络中
具体如何永久地执行上述操作(即,使其在重启后继续运行)取决于您的 Linux 发行版和您需要遵守的任何其他本地网络设置。http://www.linuxjournal.com/article/8172显示了使用 RedHat/Fedora/CentOS 风格系统的桥接设置示例,Debian/Ubuntu 或 Slackware 或其他系统可能需要进行一些细微的改动。
答案2
brctl addbr br0
ifconfig eth0 up
brctl addif br0 eth0
ifconfig eth1 up
brctl addif br0 eht1
ifconfig br0 <your.ip.address>
请注意,两个以太网接口都没有 IP 地址;单个地址分配给网桥(br0
)。
答案3
答案4
您可以购买一个hub
来替换开关。它很便宜,困难的只是找到一个,现在每个人都喜欢使用开关。在互联网上,您应该能够以较低的成本找到一个。
按照设计,将所有流量广播hub
到每个端口。
在这种情况下,当前的网络拓扑就足够了(并将 Linux eth0 设置为promiscuous mode
- 否则 NIC 将丢弃所有未针对 Linux 机器的数据包。如果您使用wireshark来监听网络,软件可以自动将网卡设置为混杂模式)。
如果你确实想使用“计划网络”,你可以
- 如果你想让Linux发挥积极的网络作用,你最好的选择是实现NAT伪装;因为我假设您没有 C 类网络,或者无论如何,没有足够的 IP 来将您的盒子变成路由器。在这种情况下,WAN 端应该是您的公共(Internet)地址,而 LAN 端是私有网络(如 10.1.1.1/24)。
- 或者,按照评论中的建议,让你的盒子成为一个桥。
我肯定会去的hub
。