具有默认路由的虚拟接口

我的Ubuntu服务器有一个物理接口eth0 。 我想分配3个IP(不同的子网)到服务器。 我不能使用默认的虚拟接口创build工具,如ifconfigip addr add (例如eth0:0 ),因为对于这3个ip中的每一个,我需要指定一个默认网关。 因此,是否有可能连接到eth0的桥接器(以及我想要的多个tap或tun接口),但是每个虚拟设备都可以通过eth0连接到子网上的accessbile。

EDIT1:

想象一下,我想要5个以太网接口连接到5个不同的networking。 但我不能有5个接口。 所以我购买一台非网pipe型交换机,并将所有5个networking的cat5线连接到该交换机,并将该交换机的一个端口连接到Ubuntu服务器的eth0 。 为了处理Ubuntu服务器上的所有5个networking,我创build了5个虚拟接口,它们的行为与物理接口(eth1,eth2等)完全相同,遍历eth0并最终到达交换机。 我不介意所有这些单独的networking是否遍历一个不受pipe理的交换机。 但是我希望我的Ubuntu服务器把这些networking看作是连接到5个物理接口的。

系统上只能有一条默认路由。

您可以添加静态路由来强制一些stream量通过不同的路由器:

  route add 172.16.1.0/24 172.26.1.250 

要么

  ip route add 172.16.1.0/24 via 172.26.1.250 dev eth0:1 

这些命令可以添加到/ etc / network / interfaces。

你想要的是影响内核中的路由决策。 这通常被称为策略路由:在你的情况下,我假设你需要一个作用于源地址的策略路由回该接口。 到达一个接口的净stream量应该在该接口上退出,并且某个接口上的数据包应该使用为该接口指定的规则,而不是默认表。 你想要的命令是ip rule

话虽如此,OP中没有足够的信息来确定是否需要策略路由。

谷歌search了好几个月后,我想我已经find了答案。 可以使用vde工具完成,该工具用于为KVM中的客户操作系统创build界面。 这里是步骤:

安装软件:

 sudo apt-get install vde2 

创build一个虚拟交换机:

 sudo vde_switch -s /tmp/switch1 -daemon 

创build一个水龙头设备:

 sudo vde_switch -tap tap0 -daemon 

创build另一个点击设备(需要指定新的套接字文件):

 sudo vde_switch -tap tap1 -sock /var/run/vde.ctl/ctl1 -daemon 

可以创build任意数量的tap设备,只要每个设备都获取一个新的套接字文件。

将您的体育器材连接到vde开关:

 sudo vde_pcapplug -d eth0 

分配IP地址给两个水龙头设备(我的eth0192.168.1.10/24 ):

 sudo ifconfig tap0 192.168.1.80 netmask 255.255.255.0 sudo ifconfig tap1 192.168.1.90 netmask 255.255.255.0 

我已经把所有的接口放在同一个networking上,这样我就可以相互ping通并testing安装是否正常。

现在,从同一networking上的其他主机(可能与您的Windows机器)ping IP的192.168.1.80192.168.1.90

从Ubuntu的networking上的其他主机可以从新的tap设备ping通,如下所示:

 ping -I tap0 192.168.1.1 

现在ifconfig可以用来重新分配属于单独networking的IP地址来点击设备。

而已。 独立的虚拟接口,像独立的接口。

我还没有find任何解释这个过程的howto / tutorial。 可能有人可以在各种情况下进行testing,看看在生产环境中是否可行的解决scheme。

您可以使用eth0:x格式来添加额外的IP地址。 只要确保将适当的networking掩码添加到每个networking。 如图所示,您可以在每个接口上路由其他networking。

 iface eth0:1 inet static address 192.0.2.6 netmask 255.255.255.0 post-up route add -net 198.51.100.0/24 netmask 255.255.255.0 gw 192.0.2.1 

在路由附加networking时,您需要知道所连接networking的网关地址。 这将是您要使用该接口路由的任何networking的网关地址。

除非您使用策略路由或类似的连接负载分担,否则您应该只有一条默认路由。

为什么不在你的linux中使用简单的tuctl工具:

 tunctl -u root -i eth5 

这将创build新的接口eth5,分配IP / MASK和voila,像任何其他接口一样configuration,应该工作得很好。