build立一个Linux交换机

我有一个C ++程序来嗅探每一个穿过我的Linux机器的数据包。 不过,我现在需要让我的Linux盒子听我的networking中的每一个stream量。 我可以买一个可pipe理的交换机,并设置端口跨越,但我不支付200+英镑的交换机,加上给我一个学习的机会。

我的networking

+---------Computer A | Internet-----Router------Switch-------------+---------Linux Box | +---------Computer B 

build议的networking

  +---------Computer A | Internet-----Router------Linux Box--------Switch eth0^ ^eth1 | +---------Computer B 

我将如何设置这在Linux中。 我只是在同一个networking上configuration不同的IP地址上的以太网。 还是我完全错误的轨道上

我的系统

  • Fedora 13。

谢谢

我假设你现在的networking是在一个私有的子网上,并且你的路由器执行外部通信的NAT(也就是说你的机器看起来有相同的IP地址)。 你有两个select:

  1. 把机器设置成一座桥梁
  2. 将机器设置为NAT路由器

将其设置为路由器:

  • 将eth0设置为当前路由器的客户端
  • eth1在不同的子网上
  • 将服务器configuration为通过DHCP将此子网上的地址分发给其他计算机
  • 添加合适的iptables规则,以便从eth1端执行传出连接的NAT
  • 如果您在路由器上有任何手动端口转发设置,则需要将其设置为指向新框,并将新框设置为将这些连接进一步转发到networking

你究竟如何做一些以上perminantly(即所以它幸存重启)取决于你的Linux发行版和任何其他本地networking设置你需要尊重。 http://www.linuxjournal.com/article/8172显示了一个使用RedHat / Fedora / CentOS风格系统的桥接设置示例,Debian / Ubuntu或Slackware或其他应用程序可能需要进行一些小修改。

 brctl addbr br0 ifconfig eth0 up brctl addif br0 eth0 ifconfig eth1 up brctl addif br0 eht1 ifconfig br0 <your.ip.address> 

请注意,两个以太网接口都没有IP地址; 单个地址被分配给桥( br0 )。

我想这就是你要找的。 :d

不要忘记混杂模式。

 ifconfig eth0 promisc ifconfig eth1 promisc 

您可以购买hub来更换交换机。 它很便宜,难度只是find一个,现在大家都喜欢用开关。 在互联网上,你应该能够find一个小的成本。

hub通过devise将所有通信广播到每个端口。

在这种情况下,当前的networking拓扑就足够了(将eth0设置为promiscuous mode – 否则网卡将丢弃所有不是Linux目标的数据包,如果使用wireshark收听networking,软件可以设置网卡处于混杂模式)。

如果你真的想使用“计划的networking”,你也可以

  • 如果你想要Linux发挥主动的networkingangular色,你最好的select是实现NAT伪装 ; 因为我假设你没有C类networking,或者说,有足够的IP可以让你的盒子变成路由器。 在这种情况下,WAN端应该是您的公共(Internet)地址,LAN端是专用networking(如10.1.1.1/24)。
  • 或者如评论所build议的那样,让你的盒子成为一个桥梁 。

我肯定会去的hub