У меня есть установка три Ubuntu VMs в VMware. Они соединены как:
Теперь я хочу использовать UBUNTU2 в качестве маршрутизатора, так, чтобы, когда я выполняю эти команды в UBUNTU1, я получил ответ от UBUNTU3, команды:
ping 192.168.4.103 -I eth1
ping 192.168.4.103 -I eth2
ping 192.168.4.103 -I eth3
И я получаю ответ в UBUNTU3 от UBUNTU1 для команд:
ping 192.168.1.101
ping 192.168.2.101
ping 192.168.3.101
Помогите мне с этим.
У меня есть маршруты как это:
Проигнорируйте интерфейс eth0. Это подключено ко всему VMs.
UBUNTU1:
root@ubuntu:/home# ip route show
default via 192.168.8.2 dev eth0
169.254.0.0/16 dev eth2 scope link metric 1000
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.101
192.168.2.0/24 dev eth2 proto kernel scope link src 192.168.2.101
192.168.3.0/24 dev eth3 proto kernel scope link src 192.168.3.101
192.168.8.0/24 dev eth0 proto kernel scope link src 192.168.8.101
root@ubuntu:/home#
UBUNTU2:
root@ubuntu:/home# ip route show
default via 192.168.8.2 dev eth0 metric 100
169.254.0.0/16 dev eth3 scope link metric 1000
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.102
192.168.2.0/24 dev eth2 proto kernel scope link src 192.168.2.102
192.168.3.0/24 dev eth3 proto kernel scope link src 192.168.3.102
192.168.4.0/24 dev eth4 proto kernel scope link src 192.168.4.102
192.168.8.0/24 dev eth0 proto kernel scope link src 192.168.8.102
root@ubuntu:/home#
UBUNTU3:
root@ubuntu:/home# ip route show
default via 192.168.8.2 dev eth0 metric 100
169.254.0.0/16 dev eth1 scope link metric 1000
192.168.4.0/24 dev eth1 proto kernel scope link src 192.168.4.103
192.168.8.0/24 dev eth0 proto kernel scope link src 192.168.8.103
root@ubuntu:/home#
EDIT1
Я включил передачу IP в UBUNTU2 с командой:
echo 1 > /proc/sys/net/ipv4/ip_forward
И затем я добавил эти маршруты к UBUNTU3:
ip route add 192.168.1.0/24 scope global via 192.168.4.102 dev eth1
ip route add 192.168.2.0/24 scope global via 192.168.4.102 dev eth1
ip route add 192.168.3.0/24 scope global via 192.168.4.102 dev eth1
И я добавил эти маршруты к UBUNTU1:
ip route add 192.168.4.0/24 scope global via 192.168.1.102 dev eth1
В данный момент я смог проверить с помощью ping-запросов UBUNTU3 от UBUNTU1 как:
ping 192.168.4.103 -I eth1
И, я смог проверить с помощью ping-запросов UBUNTU1 от UBUNTU3 как:
ping 192.168.1.101
Но затем я пытался добавить второй маршрут в UBUNTU1 как:
ip route add 192.168.4.0/24 scope global via 192.168.2.102 dev eth2
и команда, отказавшая с маршрутом, существует ошибка.
Как я могу направить к той же другой сети (192.168.4.0/24) от различных интерфейсов в машине.
EDIT2:
Я добавил основанную на правиле маршрутизацию в UBUNTU1 как:
1) Составленная дополнительная таблица называет в /etc/iproute2/rt_tables
поэтому теперь файл содержит:
255 local
254 main
253 default
0 unspec
1 net1
2 net2
3 net3
2) Созданные правила в RPDB:
ip rule add from 192.168.1.101 table net1
ip rule add from 192.168.2.101 table net2
ip rule add from 192.168.3.101 table net3
3) Добавленные маршруты в новых таблицах маршрутизации:
ip route add 192.168.4.0/24 table net1 scope global via 192.168.1.102 dev eth1 src 192.168.1.101
ip route add 192.168.1.0/24 table net1 scope link dev eth1 src 192.168.1.101
ip route add 192.168.4.0/24 table net2 scope global via 192.168.2.102 dev eth2 src 192.168.2.101
ip route add 192.168.2.0/24 table net2 scope link dev eth2 src 192.168.2.101
ip route add 192.168.4.0/24 table net3 scope global via 192.168.3.102 dev eth3 src 192.168.3.101
ip route add 192.168.3.0/24 table net3 scope link dev eth3 src 192.168.3.101
Теперь я могу проверить с помощью ping-запросов весь eth1, eth2 и eth3 UBUNUT1 от UBUNTU3, но тем не менее я не могу проверить с помощью ping-запросов 192.168.4.103 (eth1) UBUNTU3 от eth1 или eth2 или eth3 UBUNTU1.
Я сделал это!
На UBUNTU1 у меня есть файл / etc / iproute2 / rt_tables
как:
root@ubuntu-primary:/home# cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
1 net1
2 net2
3 net3
0 unspec
#
# local
#
#1 inr.ruhep
root@ubuntu-primary:/home#
Я создал правила с командами:
ip rule add from 192.168.1.101 table net1
ip rule add oif eth1 table net1
ip rule add from 192.168.2.101 table net2
ip rule add oif eth2 table net2
ip rule add from 192.168.3.101 table net3
ip rule add oif eth3 table net3
Теперь мои правила в RPDB выглядят так:
root@ubuntu-primary:/home# ip rule show
0: from all lookup local
32759: from all oif eth3 lookup net3
32760: from all oif eth2 lookup net2
32761: from 192.168.3.101 lookup net3
32762: from 192.168.2.101 lookup net2
32763: from all oif eth1 lookup net1
32765: from 192.168.1.101 lookup net1
32766: from all lookup main
32767: from all lookup default
root@ubuntu-primary:/home#
Затем я создал маршруты в каждой таблице, команды net1, net2 и net3 wit:
ip route add 192.168.4.0/24 table net1 scope global via 192.168.1.102 dev eth1 src 192.168.1.101
ip route add 192.168.1.0/24 table net1 scope link dev eth1 src 192.168.1.101
ip route add 192.168.4.0/24 table net2 scope global via 192.168.2.102 dev eth2 src 192.168.2.101
ip route add 192.168.2.0/24 table net2 scope link dev eth2 src 192.168.2.101
ip route add 192.168.4.0/24 table net3 scope global via 192.168.3.102 dev eth3 src 192.168.3.101
ip route add 192.168.3.0/24 table net3 scope link dev eth3 src 192.168.3.101
Теперь все три новые таблицы маршрутов выглядят так:
root@ubuntu-primary:/home# ip route show table net1
192.168.1.0/24 dev eth1 scope link src 192.168.1.101
192.168.4.0/24 via 192.168.1.102 dev eth1 src 192.168.1.101
root@ubuntu-primary:/home#
root@ubuntu-primary:/home# ip route show table net2
192.168.2.0/24 dev eth2 scope link src 192.168.2.101
192.168.4.0/24 via 192.168.2.102 dev eth2 src 192.168.2.101
root@ubuntu-primary:/home#
root@ubuntu-primary:/home# ip route show table net3
192.168.3.0/24 dev eth3 scope link src 192.168.3.101
192.168.4.0/24 via 192.168.3.102 dev eth3 src 192.168.3.101
root@ubuntu-primary:/home#
Моя основная таблица маршрутов выглядит например:
root@ubuntu-primary:/home# ip route show table main
169.254.0.0/16 dev eth1 scope link metric 1000
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.101
192.168.2.0/24 dev eth2 proto kernel scope link src 192.168.2.101
192.168.3.0/24 dev eth3 proto kernel scope link src 192.168.3.101
root@ubuntu-primary:/home#
А затем я добавил эти маршруты в UBUNTU3:
ip route add 192.168.1.0/24 scope global via 192.168.4.102 dev eth1
ip route add 192.168.2.0/24 scope global via 192.168.4.102 dev eth1
ip route add 192.168.3.0/24 scope global via 192.168.4.102 dev eth1
И я включил пересылку IP в UBUNTU2 с помощью команды:
echo 1 > /proc/sys/net/ipv4/ip_forward
И теперь все работает нормально.
Я могу пинговать все eth1, eth2 и eth3 в UBUNTU1 из UBUNTU3, и я могу пинговать eth1 из UBUNTU3 из UBUNTU1 с привязкой приложения ping к интерфейсу как:
ping 192.168.4.103 -I eth1
ping 192.168.4.103 -I eth2
ping 192.168.4.103 -I eth3
Вы не можете добавить два разных шлюза в одну сеть.
Из ubuntu1 вы должны определить, какой интерфейс будет маршрутом к 192.168.4.X, вы можете пройти через 192.168. 1.102 или 192.168.2.102 или 192.168.3.102.
После того, как вы настроили маршрутизацию по 192.168.1.102, единственный способ выполнить маршрутизацию по 192.168.2.102 - удалить 192.168.1.102 и добавить 192.168.1.102.
После вашего идея, вы добавите все три интерфейса в качестве шлюза, теперь как система может выбрать, какой шлюз использовать? случайный? может быть, вы ищете протокол динамической маршрутизации, например маршрутизируемый или стробируемый?