Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux debian上同一接口上具有不同网络路由的多个ip地址_Linux_Tcp_Routing_Debian_Iptables - Fatal编程技术网

Linux debian上同一接口上具有不同网络路由的多个ip地址

Linux debian上同一接口上具有不同网络路由的多个ip地址,linux,tcp,routing,debian,iptables,Linux,Tcp,Routing,Debian,Iptables,我想在debian的同一个物理NIC上配置一个具有多个ip地址(在同一子网中)的debian box,而每个地址都应该使用自己的网络路由 我认为它不能使用ipaddr add,但是可以使用eth0:0这样的伪接口吗?或者linux TCP堆栈阻止了这一点?如果可能,我如何将多个默认路由绑定到它们的(伪)接口或ip地址?它可以使用iptables roules吗?使用iptables roules时,不需要别名即可执行此操作。您可以使用iproute2执行此操作 ip addr add <i

我想在debian的同一个物理NIC上配置一个具有多个ip地址(在同一子网中)的debian box,而每个地址都应该使用自己的网络路由


我认为它不能使用
ipaddr add
,但是可以使用eth0:0这样的伪接口吗?或者linux TCP堆栈阻止了这一点?如果可能,我如何将多个默认路由绑定到它们的(伪)接口或ip地址?它可以使用iptables roules吗?使用iptables roules时,不需要别名即可执行此操作。您可以使用iproute2执行此操作

ip addr add <ip> dev eth0
ip地址添加开发工具eth0
然后将路由添加到特定于ip的路由表中

ip route add subnet dev eth0 table <tableid>   
ip route add default via <GATEWAY> table <tableid>
ip路由添加子网开发eth0表
ip路由添加默认通过表
然后添加与ip匹配的规则,以便它使用特定的表

ip rule add from any to <ip> lookup <tableid>
ip route add from <ip> to any lookup <tableid>
ip规则从任意添加到查找
ip路由从添加到任何查找

这可能会让人非常困惑,因为路由现在是多个路由表

如果您的所有地址都在同一子网中,内核如何知道使用哪一个来访问给定的目标IP?传入的包将分配给虚拟网络开发人员(例如eth0:0)。这工作-确认!如果一个服务绑定到一个ip地址,流量将通过给定的虚拟网络设备进行路由。这同样有效-确认!但是,如果这些设备位于同一子网上,我可以为它们分配不同的路由吗?看起来只有一个全局路由表。通过使用iptables设置标记,它会工作吗?AIUI,虚拟网络设备是一种
ipconfig
hack,它们根本不存在于内核中。如果使用新的
ip
没有虚拟设备,则单个设备可以有多个地址。使用
ip-route
创建的路由条目有一个
src
参数,该参数是源ip,可能有助于。。。