最近在做一个规约转换装置,需要实现的是主站与终端之间的协议转换,于是用了一个双网口的嵌入式设备,linux应用层编程,大致的网络图如下。由于终端是TCP服务器,主站是TCP客户端,所以我的实现思路就是,利用嵌入式设备网口1模拟终端IP,网口2模拟主站IP,网口1建立侦听,主站与网口1建立链接,网口2与终端建立链接,然后实现中间的报文修改过滤与转发。但现在有一个问题。当与终端建立链接时,由于网口1地址与终端地址完全相同,应用程序就直接通过内部连接到了网口1上,而不是终端上。
在解决问题的过程中,我已经添加了路由表,并且在套接字编程中也绑定了网口地址,但是还是没有解决问题。
请问大家对这个问题有没有好的解决方案,或者这种报文转发与修改转发的有没有什么更好的思路。

解决方案 »

  1.   

    冒充節點,欺騙雙方?
    如果要實現這個功能,我想你應該用netfilter去做,截取路由之前的數據包進行處理。其他數據包也需要做手脚,不能讓整個網絡的轉發功能正常建立起來。
      

  2.   

    谢谢您提供思路,我们就是想实现冒充节点,欺骗双方,我也考虑过netfilter,但是我们用的别人的核心板,没有提供核心源代码,我的理解是netfilter编译需要核心源码,所以暂时没有实现。
      

  3.   

    無法進入内核確實很難,可否考慮配合iptables,把雙方的數據包截斷?