我使用了一种有点奇怪的设置(我认为是这样),它允许我在欺骗我的 IP 和 MAC 的同时连接到子网(在测试环境中,正在做网络安全学院 ^^)。但是,路由器似乎没有路由我的任何请求,我不明白为什么。
我的设置如下:
Ip: 169.254.66.66
route options:
Destination Gateway Genmask Flags
0.0.0.0 169.254.66.1 0.0.0.0 UG
169.254.0.0 0.0.0.0 255.255.0.0 U
Arp options:
Address HWType HWAddress Flags
169.254.66.1 ether xx:xx:xx:xx:xx:xx CM
然后有一些 iptables 和 ebtables 规则用于重写传出请求的 IP 和 MAC(我想这些不可能是问题所在,它们已经工作了数周)但它们看起来像这样:
target prot source destination
SNAT icmp 169.254.66.66 anywhere to:some_legit_ip_from_subnet
通过此设置,我可以 ping 默认网关(或 arp 表中的任何硬件地址),但网关不会在子网上进一步路由我的请求。更奇怪的是,它确实将我的请求路由到互联网。因此,例如,我可以顺利 ping 8.8.8.8,但没有来自子网的 ips。
我不知道这样说是否清楚。如果不清楚,请询问。
感谢您的时间!
答案1
谢谢重力我找到了解决方案。有两个问题导致了这个问题。第一:网关默认不将流量路由到内部子网。第二:当使用除您发送请求的子网之外的其他 IP 时,ARP 表不会自动更新,这会导致对邻居的请求失败。
因此解决方案是:在网关的子网内分配一个 IP,并让 ARP 自行更新或手动更新 ARP 表。
谢谢你!
编辑:测试表明解决方案是两者的结合。不知道这是否总是如此,但在我的系统中,我的交换机和路由器不响应 ARP 请求。这意味着必须手动添加这些 MAC。
编辑 2:更多测试表明,如果您希望能够同时访问内部网络和外部网络,这是一个部分解决方案。如果外部 IP 以与您的子网相同的数字开头,它将尝试对其进行 ARP,而不是通过网关到达它。