作者chigi ( )
看板C_and_CPP
标题Re: [问题] 多网卡的raw socket疑问
时间Wed Aug 21 16:32:55 2019
※ 引述《Schottky (顺风相送)》之铭言:
: ※ 引述《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 禁收本机外送封包的功能。
这样说起来,的确是..
promisc mode应该也要监看自己电脑其他process是否有丢东西出来
听起来好绝望阿,有点难判断来源呢..
如果不用promisc应该就没办法当bridge,
真苦恼
: 至於 APR table 的问题,我不是很确定原因,
其实他只要能当bridge,我也不太想管它(?
: 照理说
: 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 封包
其实是这样 我也没有要改动MAC,
而且我也没有想要弄到router层级XD
所以才觉得这样要搞定封包在那边两个socket中转来转去很苦恼
不然直接把自己mac的封包都drop掉,倒是蛮简单的
因为照现在的写法,就变成我只能跟後面固定的人收送封包,
因为他们的MAC我写在filter里
其他人的封包一来我就会爆炸 这样这个bridge就太难用啦 哈哈
这样都不知道怎麽改进了..写个ip table吗..
: 不过这也只是猜测,我没有自己 implement 过 ARP
: 再说看你的动作模式还是比较像 bridge 的无脑转发,
: 是不是不要理这个 ARP table 看起来不美观的问题就好
没错 就是这样 眼不见为净XD
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.160.200.71 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1566376377.A.7E2.html
1F:推 Schottky: 只是要当 bridge,开个 iptables 或 nftables 就好了 08/22 22:40
2F:→ Schottky: 中间要截收封包做处理也没问题 08/22 22:41
3F:→ Schottky: 来源不是看 MAC Address 就好了吗? 08/22 22:43