установка маршрутизатора Linux

У меня есть установка три Ubuntu VMs в VMware. Они соединены как:

enter image description here

Теперь я хочу использовать 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.

1
задан 22 July 2015 в 09:35
2 ответа

Я сделал это!

На 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
1
ответ дан 4 December 2019 в 00:03

Вы не можете добавить два разных шлюза в одну сеть.

Из 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.

После вашего идея, вы добавите все три интерфейса в качестве шлюза, теперь как система может выбрать, какой шлюз использовать? случайный? может быть, вы ищете протокол динамической маршрутизации, например маршрутизируемый или стробируемый?

0
ответ дан 4 December 2019 в 00:03

Теги

Похожие вопросы