更改为虚拟网络

更改为虚拟网络

我们设置了两台计算机。S 是可以访问互联网的服务器,C 是通过 192.168.0.0/24 网络连接到服务器的客户端。这很好用,但第三台计算机 C2 应该连接到 C。

问题是 C 和 C2 必须通过 192.168.0.0/24 连接,而 C2 不能看到 S。因此,我们要在 S 和 C 之间添加一个使用 192.168.1.0/24 的虚拟网络。

即我们有:

S <-- 192.168.0.0/24 -- C <---- X ---- C2

我们想要:

S <-- 192.168.1.0/24 -- C <-- 192.168.0.0/24 -- C2

我们在 S(之前通过 eth0 连接到 C)中的 /etc/network/interfaces 中添加以下内容,并执行“ifup eth0.1”:

auto eth0.1
iface eth0.1 inet static
    address 192.168.1.254
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255

在 C 语言中,在“ifdown eth0”之后,删除旧的 if 并输入:

auto eth0
iface eth0 inet static
    address 192.168.1.2
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.254

然后,“ifup eth0”。

但不起作用!Ping 只是说:

$ ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
From 192.168.1.254 icmp_seq=1 Destination Host Unreachable
From 192.168.1.254 icmp_seq=2 Destination Host Unreachable

当我们改回来时,一切都正常了,我们甚至可以从客户端 ping eth0.1。如何从客户端更改网络?

答案1

问题在于您使用了 VLAN 802.1q 接口,它不是别名接口,因此您有 2 个不同的 VLAN,并且您需要一个典型的现场路由器配置来执行此操作,或者您需要使用虚拟模块创建一个虚拟接口(可能更容易)以这种方式:

#! /bin/bash
modprobe dummy
ip link set name ethvirt dev dummy0
ifconfig ethvirt hw ether 00:22:22:03:02:74
ifconfig ethvirt 192.168.1.254 netmask 255.255.255.0 up

希望能帮助到你!

相关内容