我可以在虚拟接口上进行策略路由吗?

我可以在虚拟接口上进行策略路由吗?

我知道可以为同一个接口提供多个 IP 地址,比如eth0. 也可以在同一个物理网卡上建立多个虚拟接口,比如eth0:1,eth0:2,...

假设现在它们都属于同一个子网。我可以对它们进行策略路由吗?例如,在同一个子网中有几台路由器,我可以为它们分配不同的网关吗?

  1. 不同的虚拟接口?
  2. 同一网卡上有不同的 IP 地址?

到目前为止,我尝试过但失败了。我现在想知道这是我的配置问题,还是原则上IE,这根本就不可能实现。

编辑:

最后,我终于让它工作了,我想与有需要的普通读者分享这个指南。我使用的是 Debian 系列发行版。当我有时间的时候,我会发布systemd发行版,Fedora,Arch Linux,...

我不想使用 IP 别名,因为它是一种过时的技术,仅用于向后兼容,请参阅此git.kernel.org页面。因此,我让 eth0 通过 192.168.73.129 路由,但我希望创建一个新的虚拟接口通过 192.168.73.1 路由。我这样做:我不更改/etc/网络/接口,其中我没有配置任何内容。我添加了以下行

  200 lab

到 /etc/iproute2/rt_tables。然后我发出命令:

  ip link add link eth0 mac0 address 56:61:4f:7c:77:db type macvlan

这将创建虚拟接口mac0其 MAC 地址为 56:61:4f:7c:77:db,我使用它在路由器中保留地址;

  ip link set mac0 up

这就引出了

  dhclient mac0

并为其提供一个 IP 地址(由于地址保留,因此始终相同);

  IP=$(ifconfig | grep -A 1 mac0 | grep inet | awk '{print $2}' | awk -F ":" '{print $2}')

存储虚拟接口的 IP 号码mac0在 shell 变量中知识产权

  ip route del default via 192.168.73.1 dev eth0 
  ip route add default via 192.168.73.129 dev eth0 
  ip route add 192.168.73.0/24 dev eth0
  ip route add default via 192.168.73.1 dev mac0 table lab
  ip route add 192.168.73.0/24 dev mac0 table lab
  ip route del 192.168.73.0/24 dev mac0 table main

这将配置路由表,使用 192.168.73.129 作为路由表中 eth0 的默认网关,使用 192.168.73.1 作为 mac0 的网关实验室

        ip rule add from $IP table lab

该规则指定在什么条件下使用路由表实验室.所有上述命令都插入到可执行的 shell 脚本中,运行该脚本的命令放在/etc/rc.local,以便系统在启动时已经正确配置。

最后要做的事情是一些端口转发和地址保留。完成。

感谢您的帮助。

附言:如果有人想知道的话……我需要这个,因为我家里有两个路由器,192.168.73.1 和 192.168.73.129;第一个是普通路由器,另一个是 DD-WRT 路由器,充当我实验室 OpenVPN 服务器的 OpenVPN 客户端。出于明显的工作原因,所有到 192.168.73.129 的流量都会重定向到我的实验室,而家里的其他人使用 192.168.73.1,它执行 DHCP 服务。我的工作电脑使用 192.168.73.129 作为网关。当我在路上时,我有时需要在我的 PC 上访问与工作相关的业务,我的 PC 确实有一个正在运行的 SSH 服务器,但它会通过 192.168.73.1。因此,如果我尝试从家外通过 ssh 连接到我的工作电脑,请求通过 192.168.73.1 发送,但回复通过 192.168.73.129,并且 ssh 会话永远不会建立。上面的装置解决了这个难题。

答案1

  1. 是的你可以。
  2. 是的,如果您指的是 eth0、eth0:1、eth0:2 等上的 IP,则可以。我从未见过单个 NIC 上有多个 IP 地址(这就是 :1 :2 的用途)。

所有这些都可以通过 ip 命令来完成。

您遇到路由问题的原因是您只有一个路由表,并且由于接口位于单个子网中,因此最终将应用该子网的默认网关。但是,如果您创建了多个路由表,则可以根据它们进入的接口、原始 IP 或该上下文中可用的任何其他类型的标准来引导流量进出它们。

http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.html

答案2

具体来说:

  • 这 '界面'(更具体地说是以太网接口)是实际的硬件,具有唯一的 MAC 地址并在物理层和数据链路层运行。它实际上执行通信工作。
  • 然后,您就可以在封包/數據報告此接口上的 OSI 层。
  • 虚拟接口是内核中的软件抽象,指的是实际硬件接口或隧道(我认为是接口抽象)。
  • 子网是可能的 IP 地址范围,因此需要路由器。
  • 策略路由是基于目标地址以外的路由,例如基于发送方地址的路由,以通过不同的路由引导某些流量。

让我困惑的是‘在同一个子网上有多个路由器’。

另外,如果中间没有路由器,我认为网关一次只能处理与网络接口的一个连接。

希望这能帮助你思考这个问题。网络软件可能非常复杂,有时我对实际发生的事情感到惊讶。

相关内容