同一主机内部两网卡互相通信如何强制过物理网卡?

2021-11-14 14:58:24 +08:00
 violence123456
rt ,一张网卡( ip 为 192.168.3.11 )做网关,监听来自另一个网卡( ip 为 192.168.3.5 ) mac 地址的包,但是由于两网卡处于同一 linux ,可能( 192.168.3.5 )的包经过操作系统的优化,没有过物理网卡就发给了 192.168.3.11 ?导致我部署在 192.168.3.11 上监听 mac 地址( 192.168.3.5 所在网卡)的程序失效,请教大佬如何让“内部两张网卡或者说两 ip 互相通信如何强制过物理网卡”?
3100 次点击
所在节点    Linux
14 条回复
senghoo
2021-11-14 15:13:26 +08:00
本机内部转发直接在 lo 网卡应该就能听到吧。
xarthur
2021-11-14 16:09:01 +08:00
写路由表?
ch2
2021-11-14 16:55:16 +08:00
改路由表,route add -host 192.168.3.5 gw 192.168.3.11
这一句是强行让所有目的地是 192.168.3.5 的包都从 192.168.3.11 走一下
如果不生效,再改一下 metric
documentzhangx66
2021-11-14 17:50:21 +08:00
1.如果两张网卡做了 route 路由,那么数据包是直接由 OS 的路由功能进行转发,不会再经过本机程序的 TCP Server 与 UDP Server 的端口监听。

这种情况下,如果要监听数据包,应该使用抓包工具,比如 Wireshark 、TCPDump 等等。这些工具也可以进行记录或转发数据包,相当于旁路复制。

2.如果你的目的,是想自己写程序,进行 TCP Server 或 UDP Server 的监听,然后由你自己写的程序进行转发,那么你这种模式,其实是代理了。两张网卡是不能做 OS 级的路由的。
adoal
2021-11-14 19:39:32 +08:00
两张网卡插在同一网段配同段 IP ?你确定真要这样做?这可能是一个 X-Y 问题。
violence123456
2021-11-14 21:21:38 +08:00
@ch2 现在我感觉从 3.11 到 3.5 貌似没啥问题,但是 3.5 到 3.11 有问题。体现就是在机器上抓 icmp 报文,只有到 3.5 的 request ,没有 3.5 出来的 response 。(背景是 3.5 的网关设置为 3.11 ,他们写了 raw socket 监听 3.11 的网卡,如果收到给这个网卡的包就做转发处理,之前 3.11 和 3.5 不同机器是没问题的,但是现在同一机器就出问题了)。至于为什么需求这么蛋疼,一时半会讲不清楚。。
violence123456
2021-11-14 21:22:03 +08:00
@documentzhangx66 现在我感觉从 3.11 到 3.5 貌似没啥问题,但是 3.5 到 3.11 有问题。体现就是在机器上抓 icmp 报文,只有到 3.5 的 request ,没有 3.5 出来的 response 。(背景是 3.5 的网关设置为 3.11 ,他们写了 raw socket 监听 3.11 的网卡,如果收到给这个网卡的包就做转发处理,之前 3.11 和 3.5 不同机器是没问题的,但是现在同一机器就出问题了)。至于为什么需求这么蛋疼,一时半会讲不清楚。。
violence123456
2021-11-14 21:22:18 +08:00
@senghoo 这个值得尝试下,谢谢
violence123456
2021-11-14 22:51:07 +08:00
@adoal 需求很蛋疼,一两句话解释不清,可以理解为要在本机做底层协议转换仿真的一些工作
violence123456
2021-11-15 00:37:50 +08:00
@adoal 请教大佬有什么更好的建议
documentzhangx66
2021-11-15 02:07:48 +08:00
@violence123456

1.既然能看到 icmp 包到 3.5 ,那就继续跟踪下去,到下一个节点去抓包。另外 icmp 以及 udp 抓包都很麻烦,而且有些软硬件还可能有 bug 导致丢包甚至更换端口。

2.底层协议转换仿真?为啥要转换协议?直接现在 OpenVPN 可以在广域网上组建虚拟私网,然后 gRPC 协议直接通信,感觉转换底层协议没啥应用场景。
xzysaber
2021-11-15 07:44:41 +08:00
必须要抓到以太网帧吗?可以尝试下 TAP 。
adoal
2021-11-15 20:35:46 +08:00
@violence123456 讲真,我看不懂你的表达。
另外我没做过底层网络开发,只是凭运维人员的经验觉得这样配置很扯淡。
adoal
2021-11-15 20:40:09 +08:00
你在三个回答里都说需求蛋疼讲不清楚。
所以我怀疑这是个 X-Y 问题。
也许你自己梳理一下原始需求,好好组织一下文字,表达清楚了,也就知道是怎么回事了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/815284

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX