同一主机内部两网卡互相通信如何强制过物理网卡? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
violence123456
V2EX    Linux

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

  •  
  •   violence123456 2021-11-14 14:58:24 +08:00 via iPhone 3507 次点击
    这是一个创建于 1432 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 互相通信如何强制过物理网卡”?
    14 条回复    2021-11-15 20:40:09 +08:00
    senghoo
        1
    senghoo  
       2021-11-14 15:13:26 +08:00
    本机内部转发直接在 lo 网卡应该就能听到吧。
    xarthur
        2
    xarthur  
       2021-11-14 16:09:01 +08:00 via iPhone
    写路由表?
    ch2
        3
    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
        4
    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
        5
    adoal  
       2021-11-14 19:39:32 +08:00 via iPhone
    两张网卡插在同一网段配同段 IP ?你确定真要这样做?这可能是一个 X-Y 问题。
    violence123456
        6
    violence123456  
    OP
       2021-11-14 21:21:38 +08:00 via iPhone
    @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
        7
    violence123456  
    OP
       2021-11-14 21:22:03 +08:00 via iPhone
    @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
        8
    violence123456  
    OP
       2021-11-14 21:22:18 +08:00 via iPhone
    @senghoo 这个值得尝试下,谢谢
    violence123456
        9
    violence123456  
    OP
       2021-11-14 22:51:07 +08:00 via iPhone
    @adoal 需求很蛋疼,一两句话解释不清,可以理解为要在本机做底层协议转换仿真的一些工作
    violence123456
        10
    violence123456  
    OP
       2021-11-15 00:37:50 +08:00 via iPhone
    @adoal 请教大佬有什么更好的建议
    documentzhangx66
        11
    documentzhangx66  
       2021-11-15 02:07:48 +08:00
    @violence123456

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

    2.底层协议转换仿真?为啥要转换协议?直接现在 OpenVPN 可以在广域网上组建虚拟私网,然后 gRPC 协议直接通信,感觉转换底层协议没啥应用场景。
    xzysaber
        12
    xzysaber  
       2021-11-15 07:44:41 +08:00
    必须要抓到以太网帧吗?可以尝试下 TAP 。
    adoal
        13
    adoal  
       2021-11-15 20:35:46 +08:00 via iPhone
    @violence123456 讲真,我看不懂你的表达。
    另外我没做过底层网络开发,只是凭运维人员的经验觉得这样配置很扯淡。
    adoal
        14
    adoal  
       2021-11-15 20:40:09 +08:00 via iPhone
    你在三个回答里都说需求蛋疼讲不清楚。
    所以我怀疑这是个 X-Y 问题。
    也许你自己梳理一下原始需求,好好组织一下文字,表达清楚了,也就知道是怎么回事了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     945 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 19:43 PVG 03:43 LAX 12:43 JFK 15:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86