作者Schottky (顺风相送)
看板C_and_CPP
标题Re: [问题] 多网卡的raw socket疑问
时间Wed Aug 21 14:15:15 2019
※ 引述《chigi ( )》之铭言:
: 网路的话
: 设备总共有三台,
:
: eth0 eth1
: PC1 <--------------> PC2 <----------------> PC3
: IP: 192.168.1.200 192.168.1.105
: 192.168.1.100 NA
:
: 既然是bridge,其实PC2的eth0也可以不用IP
: 试过不用IP,但是封包还是在那乱弹
: 比较特别的是PC2的 ARP table
: 192.168.1.200 <MAC> on eth0
: 192.168.1.105 <MAC> on eth1
: 192.168.1.105 <incomplete> on eth0 <====?????
: 不过也有可能是程式乱跳让系统误以为那边也有一台105,
: 所以把ARP包往那边丢 但是想当然耳,那边什麽都没有
我大概明白状况了,
promiscuous mode 本来就会收到本机所发出的 packet,判断一下来源不要转发即可,
毕竟会开 promiscuous 大部份状况你会想同时收到本机其他 process 送出的 packet
印象中并没有内建 promiscuous mode 禁收本机外送封包的功能。
至於 APR table 的问题,我不是很确定原因,
照理说
1. 无脑转送 packet 的 bridge 应该不认得 APR protocol,
所以看 bridge 的 ARP table 也很奇怪
2. 目前看到的 ARP table 问题很可能是没有正确回应 ARP 封包造成的
但同上,bridge 本来就不要求懂 ARP,他只要把 ARP forward 到另一边就算尽责
3. 问题是你这台和真的 bridge 又有点不一样,
bridge 转发时可不会更动来源 MAC Address
所以是不是得要 implement 到 IP 层,也就是 router 的层级才行
简单讲就是你要能回应 ARP/RARP 封包
不过这也只是猜测,我没有自己 implement 过 ARP
再说看你的动作模式还是比较像 bridge 的无脑转发,
是不是不要理这个 ARP table 看起来不美观的问题就好
--
桃乐丝: 可是, 如果你没有头脑, 为什麽会说话?
稻草人: ㄝ, 我也不知... 但是有些人没有头脑也能说超~多话呢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.72.237.131 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1566368118.A.DB8.html