通过 macvlan 在同一个网络适配器上有两个 IP 地址

通过 macvlan 在同一个网络适配器上有两个 IP 地址

在 Debian Linux dist 上,我需要两个具有不同 mac 地址的 IP 地址。每个 IP 地址上都有一个服务器在端口 80 上运行。所以我需要这样的东西:

ip: 192.168.2.1 mac: xx:xx:xx:10:xx:xx
ip: 192.168.2.2 mac: xx:xx:xx:90:xx:xx

然后启动两个 http 服务器,每个服务器监听一个 ip 地址。

已经将 eth0 设置到正确的 ip 地址,并且我尝试通过 macvlan 设置虚拟网络适配器:

ip link add link eth0 name vlan0 type macvlan mode private
ip address add 192.168.2.2 dev vlan0 
ip link set dev vlan0 address xx:xx:xx:90:xx:xx
ip link set dev vlan0 up

当我输入 URL 192.168.2.2 时,我得到的页面与 192.168.2.1 相同。因此,基本上端口 80 上的所有内容都会路由到该服务器。我还尝试了 macvlan 的所有不同模式,但结果总是相同的。

我做错了什么?使用 macvlan 是否可行,还是我需要采用其他方法?

答案1

嗯,这没什么大不了的,因为您可以通过在单个物理接口上创建虚拟接口轻松地做到这一点。

您可以简单地按照如下方式进行操作:

ifconfig wlan0:if1 <IP> <NM>
ifconfig wlan0:if2 <IP> <NM>

我使用了 ifconfig 但您可以以相同的方式使用 ip link。

或者,您可以按如下方式手动创建接口文件条目:

 vi /etc/sysconfig/network-scripts/ifcfg-wlan0

  DEVICE=wlan0
  BOOTPROTO=static
  IPADDR=192.168.1.2
  NETMASK=255.255.255.0
  ONBOOT=yes

  vi /etc/sysconfig/network-scripts/ifcfg-wlan0:1

  DEVICE=wlan0:1
  BOOTPROTO=static
  IPADDR=192.168.1.3
  NETMASK=255.255.255.0
  ONBOOT=yes

但是,将相同的子网/IP 分配给虚拟接口并不是最佳做法,我建议使用单独的 vlan,例如 192.168.2.x

答案2

听起来你想要做的是 MAC 欺骗。对于你的情况,你应该按照 ostendali 的建议做,创建两个虚拟接口,然后在它们上欺骗 mac。这是一件非常简单的事情。有一些简单的说明这里

虽然有点不清楚,但我还是想试一试。您还提到您希望在不同的接口上运行单独的服务器,并且它们将使用端口 80。听起来您正试图在一台服务器上托管多个网站。Apache2 是一个非常受欢迎的选择,因此这是一个演练用于托管多个网站。祝你好运!

相关内容