У нас есть установка из двух компьютеров. 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
Мы добавляем следующее в / etc / network / interfaces в S (ранее подключенном к C через eth0), и выполняет «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 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
Когда мы меняем обратно, все работает, и мы даже можем пинговать eth0.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
Надеюсь, это поможет!