IP-адрес маршрутизатора в подсети1 конфликтует с идентичным IP-адресом хоста в подсети2

Я пытаюсь настроить Linux-машину в качестве маршрутизатора для следующих подсетей:

                             +--------------------------------------------+                 host3
                             |                  router                    |                 10.1.0.254
                             |                                            |                    |
                             |                                            |                    |
                             |                                            |                    |
-----------------------------+ ---+  eth1                      eth3  +--- +--------------------+-----
                10.1.0.0/16  |    |  10.1.0.254            10.1.0.1  |    | 10.1.0.0/16
                subnet1      |    |                                  |    | subnet3
                             |    |                                  |    |
                             |    | forward                  forward |    |
                             |    |                                  |    |
                             |    |                                  |    |
-----------------------------+ ---+  eth2                      eth4  +--- +--------------------------
                10.2.0.0./16 |       10.2.0.254          10.2.0.254       | 10.2.0.0/16    
                subnet2      |                                            | subnet4        
                             +--------------------------------------------+                

маршрутизатор должен:

  • пересылать трафик между подсетью 1 и sebnet2.
  • пересылать трафик между подсетью 3 и сетью 4.
  • держать подсети 1 + 2 изолированными от подсетей 3 + 4

Я реализовал эту настройку, используя

  • ip route (4 таблицы маршрутов, 1 на каждый ник)
  • правило ip (каждый ник связан с собственная таблица маршрутизации)

это работает хорошо с одним исключением:

  • трафик перенаправляется между подсетями 1 и 2.
    • он не может отправлять / получать трафик из подсети 4
    • он не может получить ответ arp для 10.1.0.1.
    • его ip идентичен собственному ip маршрутизатора на eth1.
    • если я даю хосту 3 другой ip в подсети 3 все проблемы решены.
      по причинам, выходящим за рамки этой публикации, я не могу изменить его IP.
      я также не могу изменить ip eth1.

поиск в Google схожих проблем указал мне на локальную таблицу маршрутов.

  • в локальной таблице маршрутов есть запись маршрута для IP-адреса eth1 (создается автоматически)
  • эта таблица имеет наивысший приоритет в системе и, по-видимому, перехватывает трафик host3.
  • Я пытался удалить эту запись -
    • ip route del table local 10.1.0.254 dev eth1 proto kernel scope host src 10.1.0.254
    • он решает проблему, host3 может отправлять / получать трафик из подсети 4.
    • Это не настоящее решение, поскольку eth1 перестает отвечать на запросы ARP из подсети 1.
      (незаметно, пока узлы подсети 1 имеют кэшированные MAC-адреса).

Каково правильное решение этой проблемы?
как сделать так, чтобы локальная таблица маршрутов не «связала» эти домены L3, которые я пытаюсь отделить?
как отключить записи локального маршрута без потери функциональности arp?
(eth1-4 используются только для пересылки, они никогда не являются целью любого TCP-трафика)

0
задан 28 November 2017 в 01:47
2 ответа

Hizaha ny tetika manaraka:

  1. latabatra iray fitaterana isaky ny faritra fitaterana misaraka (ny router dia afaka mandroso fonosana ao anatiny domaining routing, fa tsy eo anelanelan'ny domains). Ny zotra eo an-toerana dia mamela hifandray amin'ny router avy amin'ireny domains ireny.
#domain 1 (eth1 + eth2)
ip route add 10.1.0.0/16 dev eth1 table dom1
ip route add 10.2.0.0/16 dev eth2 table dom1
ip route add local 10.1.0.254 dev eth1 table dom1
ip route add local 10.2.0.254 dev eth2 table dom1
#domain 2 (eth3 + eth4)
ip route add 10.1.0.0/16 dev eth3 table dom2
ip route add 10.2.0.0/16 dev eth4 table dom2
ip route add local 10.1.0.1 dev eth3 table dom2
ip route add local 10.2.0.254 dev eth4 table dom2
  1. Mamorona fitsipi-pitaterana hanasaraka ireo faritany fitetezana:
#domain 1
ip rule add iif eth1 lookup dom1 pref 101
ip rule add iif eth2 lookup dom1 pref 102
ip rule add oif eth1 lookup dom1 pref 103
ip rule add oif eth2 lookup dom1 pref 104
#domain 2
ip rule add iif eth3 lookup dom2 pref 201
ip rule add iif eth4 lookup dom2 pref 202
ip rule add oif eth3 lookup dom2 pref 203
ip rule add oif eth4 lookup dom2 pref 204
  1. Afindrao ny làlana fitetezana miaraka amin'ny safidinao 0 ambanin'ny lalànao:
ip rule add from all lookup local pref 1000
ip rule del pref 0

Misy olana sasany ateraky ny famerenana ny adiresy amin'ny interface interface eth2 sy eth4. Azonao atao ny mamaha azy amin'ny fitsipika iptables miaraka amin'i CONNMARK.

0
ответ дан 24 November 2019 в 03:36

Azonao atao ny mampiasa namespaces tambajotra hampisarahana ny nofonao. Ny iray ho an'ny ilany havia ary ny iray ho an'ny ilany ankavanan'ny ny router. Amin'izany fomba izany dia tsy mila fisarahana fanampiny amin'ny latabatra fandeha ianao.

Fampidirana momba ny namespaces: https://blogs.igalia.com/dpino/2016/04/10/network-namespaces/

Soso-kevitra: ny ankamaroan'ny lahatsoratra momba ny namespaces dia mametraka interface interfaces ao amin'ny ns. Saingy azonao atao ny mametraka ny karazan-tseraseran'ny tamba-jotra ao anaty namespace, toy ny interfaces ara-batana aminao.

0
ответ дан 24 November 2019 в 03:36

Теги

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