Network programming 使用带有Linux和两个NIC的标准PC构建网络设备原型';s

Network programming 使用带有Linux和两个NIC的标准PC构建网络设备原型';s,network-programming,hardware,startup,linux-device-driver,Network Programming,Hardware,Startup,Linux Device Driver,我愿意建立一个网络设备的原型。 假定此设备透明地操作以太网数据包。它假设有两个网络接口卡,一个卡连接到外部支腿(即eth0),另一个卡连接到内部支腿(即eth1) 在典型的网络布局中,如附图所示,它将放置在路由器和LAN交换机之间 我的计划是编写一个在内核驱动程序级别挂钩的软件,并对传入和传出的数据包执行任何需要执行的操作 例如,一个“传出”数据包(在eth1)将被操纵并传递给另一个NIC(eth0),然后该NIC将被传输到下一个NIC 我的问题是: 这可行吗 那些网卡将没有IP地址,这应该是个

我愿意建立一个网络设备的原型。 假定此设备透明地操作以太网数据包。它假设有两个网络接口卡,一个卡连接到外部支腿(即eth0),另一个卡连接到内部支腿(即eth1

在典型的网络布局中,如附图所示,它将放置在路由器和LAN交换机之间

我的计划是编写一个在内核驱动程序级别挂钩的软件,并对传入和传出的数据包执行任何需要执行的操作

例如,一个“传出”数据包(在eth1)将被操纵并传递给另一个NIC(eth0),然后该NIC将被传输到下一个NIC

我的问题是:

  • 这可行吗
  • 那些网卡将没有IP地址,这应该是个问题吗 提前感谢您的回答

    (不,目前市场上还没有这样的设备,所以请注意,“为什么要重新发明轮子”式的回答是无关紧要的)


    显然,这是可以做到的。 实际上,我正在尝试使用我建议的方法构建一个原型,它似乎正是您想要的:

    Netfilter提供了一种机制,用于将数据包从堆栈中传递出去,以便排队到用户空间,然后将这些数据包接收回内核,并给出一个判决,指定如何处理这些数据包(例如接受或丢弃)。这些数据包也可以在重新注入内核之前在用户空间中修改


    只要NIC设置为混杂模式,它们就可以捕获网络上的数据包,而不需要在其上设置IP地址。我知道这是可以做到的,因为有很多公司生产相同类型的设备(例如:Juniper Networks、Cisco、F5、Fortinet等)。

    这更像是一个服务器故障问题,你是什么意思?你读到最后了吗?这是一个软件问题,而不是一个硬件问题。好吧,线路加密单元的工作方式类似(2个端口,一台嵌入式pc和一些定制的硅),所以它可以在硬件和软件的混合中完成,但我不知道足够的细节来发布答案。-2,想知道为什么。也许如果一个问题与ruby/c#/jquery无关,那么可能会有降低投票率的风险。感谢allot,我也会看看这个问题,在防火墙区域搜索这个问题是明智之举!如果我能够使用它快速构建一个原型,我更喜欢它而不是scapy,它比libipqIn做中间过滤/修改要慢得多,请注意,您可能会在消息流中引入一些显著的延迟,特别是在您将数据传入和传出用户空间的情况下。这将在高带宽网络中进行吗?您可能需要考虑快速硬件和内核级数据包损坏。嗯,它们也需要桥接。