> Linux如何在向10.0.150.5或173.194.43.102发出请求时选择使用哪个网络接口?
>我有没有办法在网络层面影响这个?从子网中删除路由会影响这个吗?我在AWS环境中使用我无法登录的设备AMI,因此像this这样的东西将无效.
AWS VPC环境,运行Ubuntu 12.04的其他机器,不知道我正在尝试影响的机器正在运行(因为我无法登录).
澄清:
>两个子网都设置为/ 24s
网络:10.0.100.5
面具:/ 8
这意味着您的子网是:10.0.100.5/8
基本上任何有效的10.xxx.xxx.xxx系列IP都属于该子网.
只能使用一个接口来访问此子网中的主机.所以在你的情况下它是eth0或eth1.其他接口可以在同一子网中具有IP,但它无法正常工作.
如果您所描述的情况与eth0和eth1连接到相同网络且同一子网上的IP相同,则会发生这种情况.
> eth0 10.0.100.5/8
> eth1 10.0.200.5/8
现在只有其中一个接口有路由(假设它是eth0),表示访问子网10.0.100.0/8使用eth0.因此,离开此接口的数据包将具有源地址10.0.100.5
!注意
– 10.0.100.5/8和10.0.200.5/8是相同的子网(因为掩码掩码持续3个字节,我们也可以将其写为10.0.0.0/8)
所以现在考虑我们在这个子网上有主机尝试与10.0.200.5通信
数据包通过eth1进入系统但不能从eth1返回,因为eth0只是一个到网络10.0.0.0/8的路由,而来自eth0的响应有不同的IP;因此,启动与10.0.200.5的连接的人将无法理解来自其他来源的响应.
编辑
要确定将使用哪个接口,您需要查看路由表.由于问题不包含路由表,我将尝试用以下路由表来解释
$route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
替代路由表输出
$ip route show default via 192.168.0.1 dev wlan0 proto static 10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.5 192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.14
所以我们在上面的示例中有2个接口.
子网10.0.0.5/255.255.255.0上的> eth0,IP 10.0.0.5或CIDR表示法10.0.0.5/24
> wlan0,子网192.168.0.14/255.255.255.0上的IP 192.168.0.14或CIDR表示法192.168.0.0/24
现在路由表告诉我们什么;逐行解释,自下而上:
192.168.0.0/24 dev wlan0 proto内核范围链接src 192.168.0.14
要访问子网192.168.0.0/24中的主机,请使用interface wlan0和src IP 192.168.0.14
10.0.0.0/24 dev eth0 proto内核范围链接src 10.0.0.5
要访问子网10.0.0.0/24中的主机,请使用interface eth0和src IP 10.0.0.5
默认通过192.168.0.1 dev wlan0 proto static
要访问上述规则未涵盖的任何其他主机,请使用默认路由,该路由可通过接口wlan0访问,而网关可通过其他网络访问192.168.0.1