Назад | Перейти на главную страницу

несколько маршрутизаторов ipv6 в одной физической сети, как заставить их работать?

У меня есть несколько интернет-маршрутизаторов от одного и того же провайдера (я назову интернет-маршрутизаторы «боксы»), все они подключены к одному и тому же аппаратному сетевому коммутатору, образующему физическую сеть (я назову эту физическую сеть «NML» для «No Man's Land» »), К которому подключены два маршрутизатора (я назову их« маршрутизаторы »), выполняющие задачи маршрутизации и брандмауэра для частной локальной сети:

_____________________________________________ WAN (Internet)
    |           |           |           |
    |           |           |           |
 ___|___     ___|___     ___|___     ___|___
[       ]   [       ]   [       ]   [       ]
[ Box 1 ]   [ Box 2 ]   [ Box 3 ]   [ Box 4 ]
[ 0:A:1 ]   [ 0:B:1 ]   [ 0:C:1 ]   [ 0:D:1 ]
[_______]   [_______]   [_______]   [_______]
    |           |           |           |
    |           |           |           |
____|___________|___________|___________|____ NML (A physical network
          |                       |                for boxes and routers)
          |                       |
      ____|____               ____|____ 
     [         ]             [         ]
     [ Router1 ]             [ Router2 ]
     [  0:A:2  ]             [  0:A:3  ]
     [  0:B:2  ]             [  0:B:3  ]
     [  0:C:2  ]             [  0:C:3  ]
     [  0:D:2  ]             [  0:D:3  ]
     [_________]             [_________]
          |                       |
          |                       |
__________|_______________________|__________ LAN (Where people are working)

Со стороны ipv4 NML - это локальная сеть, использующая частный класс ipv4, он работает.

На стороне ipv6 все блоки имеют один и тот же префикс / 64, и каждый маршрутизатор получает автоматически настраиваемый адрес ipv6 из каждого блока (каждый маршрутизатор получает четыре IPv6, по одному на блок).

Чтобы упростить задачу, вы можете представить адреса ipv6 с 3 символами:

Таким образом, каждый маршрутизатор получает четыре адреса ipv6, по одному на коробку.

Сначала только в одном ящике был активирован ipv6, и в это время я мог запрашивать Интернет с помощью ipv6, но, поскольку я активировал ipv6 на всех ящиках, я больше не могу запрашивать Интернет с помощью ipv6. Если я сделаю traceroute6 на интернет-адрес с маршрутизатора, он никогда не выходит за рамки стандартного.

Обратите внимание, что в настоящее время мне не нужно выполнять работу с ipv6 из локальной сети через маршрутизаторы, мне нужны только маршрутизаторы, чтобы иметь возможность работать с Интернетом с использованием ipv6 (в основном для создания некоторой VPN через ipv6).

Интернет-маршрутизаторы (названные «ящиками») являются собственностью интернет-провайдера, и единственный вариант, который у меня есть, - это флажок «включить IPv6» на странице клиента, у меня нет доступа к самой конфигурации маршрутизатора и нет другого варианта, кроме включения или отключение ipv6. Маршрутизаторы между LAN и NML (называемые «маршрутизаторами») - это стандартные системы Debian, работающие на некотором сетевом оборудовании на базе x86. С точки зрения Debian вы можете представить, что это похоже на ПК: я могу делать то же, что и стандартный Debian.

Итак, два вопроса:


Я удалил некоторую информацию об истечении срока действия и тому подобное, чтобы убрать многословие, плюс я иногда добавлял некоторые ведущие 0 для выравнивания адресов для облегчения чтения, затем заменил некоторые биты, чтобы использовать пример класса ipv6.

# my boxes' ipv6 addresses
box0    2001:db8:ee84:2180::1
box1    2001:db8:ee84:21c0::1
box2    2001:db8:2f13:1ea0::1
box3    2001:db8:399a:08f0::1
box4    2001:db8:399a:39e0::1

# my router1's ipv6 addresses
# ip -6 addr show dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2001:db8:ee84:2180:200:24ff:fed1:3d9e/64 scope global mngtmpaddr dynamic
    inet6 2001:db8:ee84:21c0:200:24ff:fed1:3d9e/64 scope global mngtmpaddr dynamic
    inet6 2001:db8:2f13:1ea0:200:24ff:fed1:3d9e/64 scope global mngtmpaddr dynamic 
    inet6 2001:db8:399a:08f0:200:24ff:fed1:3d9e/64 scope global mngtmpaddr dynamic 
    inet6 2001:db8:399a:39e0:200:24ff:fed1:3d9e/64 scope global mngtmpaddr dynamic 
    inet6 fe80::200:24ff:fed1:3d9e/64 scope link 

# my router2's ipv6 addresses
ip -6 addr show dev eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2001:db8:ee84:2180:200:24ff:fed1:6336/64 scope global mngtmpaddr dynamic 
    inet6 2001:db8:ee84:21c0:200:24ff:fed1:6336/64 scope global mngtmpaddr dynamic 
    inet6 2001:db8:2f13:1ea0:200:24ff:fed1:6336/64 scope global mngtmpaddr dynamic 
    inet6 2001:db8:399a:08f0:200:24ff:fed1:6336/64 scope global mngtmpaddr dynamic 
    inet6 2001:db8:399a:39e0:200:24ff:fed1:6336/64 scope global mngtmpaddr dynamic 
    inet6 fe80::200:24ff:fed1:6336/64 scope link 

# default ipv6 routes on router1
# ip -6 route
2001:db8:ee84:2180::/64 dev eth2  proto kernel  metric 256
2001:db8:ee84:21c0::/64 dev eth2  proto kernel  metric 256
2001:db8:2f13:1ea0::/64 dev eth2  proto kernel  metric 256
2001:db8:399a:08f0::/64 dev eth2  proto kernel  metric 256
2001:db8:399a:39e0::/64 dev eth2  proto kernel  metric 256
fe80::/64 dev eth2  proto kernel  metric 256 
default via fe80::e69e:12ff:fe04:286f dev eth2  proto ra  metric 1024 hoplimit 64
default via fe80::e69e:12ff:fe03:8b35 dev eth2  proto ra  metric 1024 hoplimit 64
default via fe80::e69e:12ff:fe02:10de dev eth2  proto ra  metric 1024 hoplimit 64
default via fe80::0224:d4ff:fea7:f258 dev eth2  proto ra  metric 1024 hoplimit 64
default via fe80::0224:d4ff:febb:af9e dev eth2  proto ra  metric 1024 hoplimit 64

# default ipv6 routes on router2
# ip -6 route
2001:db8:ee84:2180::/64 dev eth2  proto kernel  metric 256
2001:db8:ee84:21c0::/64 dev eth2  proto kernel  metric 256
2001:db8:2f13:1ea0::/64 dev eth2  proto kernel  metric 256
2001:db8:399a:08f0::/64 dev eth2  proto kernel  metric 256
2001:db8:399a:39e0::/64 dev eth2  proto kernel  metric 256
fe80::/64 dev eth2  proto kernel  metric 256 
default via fe80::e69e:12ff:fe03:8b35 dev eth2  proto ra  metric 1024 mtu 1480 hoplimit 64
default via fe80::0224:d4ff:febb:af9e dev eth2  proto ra  metric 1024 hoplimit 64
default via fe80::e69e:12ff:fe02:10de dev eth2  proto ra  metric 1024 hoplimit 64
default via fe80::e69e:12ff:fe04:286f dev eth2  proto ra  metric 1024 hoplimit 64
default via fe80::0224:d4ff:fea7:f258 dev eth2  proto ra  metric 1024 hoplimit 64

# neigh from router1
# ip -6 neigh | grep eth2
fe80::224:d4ff:febb:af9e dev eth2 lladdr 00:24:d4:bb:af:9e router STALE
fe80::200:24ff:fed1:6336 dev eth2 lladdr 00:00:24:d1:63:36 STALE
fe80::e69e:12ff:fe04:286f dev eth2 lladdr e4:9e:12:04:28:6f router REACHABLE
2001:db8:2f13:1ea0::1 dev eth2 lladdr 00:24:d4:bb:af:9e router STALE
fe80::e69e:12ff:fe02:10de dev eth2 lladdr e4:9e:12:02:10:de router STALE
2001:db8:399a:39e0:200:24ff:fed1:6336 dev eth2 lladdr 00:00:24:d1:63:36 STALE
2001:db8:399a:8f0:200:24ff:fed1:6336 dev eth2 lladdr 00:00:24:d1:63:36 STALE
2001:db8:399a:39e0::1 dev eth2 lladdr 00:24:d4:a7:f2:58 router STALE
2001:db8:399a:8f0::1 dev eth2 lladdr e4:9e:12:02:10:de router STALE
2001:db8:399a:39e0:: dev eth2  FAILED
fe80::213:46ff:fe8f:1e4a dev eth2 lladdr 00:13:46:8f:1e:4a STALE
2001:db8:399a:8f0:: dev eth2  FAILED
fe80::e69e:12ff:fe03:8b35 dev eth2 lladdr e4:9e:12:03:8b:35 router STALE
fe80::224:d4ff:fea7:f258 dev eth2 lladdr 00:24:d4:a7:f2:58 router STALE
fe80::8226:89ff:fe2d:b3d3 dev eth2 lladdr 80:26:89:2d:b3:d3 STALE
fe80::20a:f7ff:fe12:e77 dev eth2 lladdr 00:0a:f7:12:0e:77 STALE
2001:db8:ee84:2180::1 dev eth2 lladdr e4:9e:12:03:8b:35 router STALE
fe80::21d:9ff:fe2c:628d dev eth2 lladdr 00:1d:09:2c:62:8d STALE

# get from router1
# ip -6 route get 2001:4860:4860::8888
2001:4860:4860::8888 from :: via fe80::e69e:12ff:fe04:286f dev eth2  proto ra  src 2001:db8:399a:39e0:200:24ff:fed1:3d9e  metric 1024  hoplimit 64

# neigh from router2
# ip -6 neigh | grep eth2
2001:db8:399a:8f0:200:24ff:fed1:3d9e dev eth2 lladdr 00:00:24:d1:3d:9e STALE
2001:db8:399a:8f0::1 dev eth2 lladdr e4:9e:12:02:10:de router STALE
fe80::e69e:12ff:fe04:286f dev eth2 lladdr e4:9e:12:04:28:6f router STALE
fe80::224:d4ff:fea7:f258 dev eth2 lladdr 00:24:d4:a7:f2:58 router DELAY
fe80::e69e:12ff:fe02:10de dev eth2 lladdr e4:9e:12:02:10:de router REACHABLE
fe80::200:24ff:fed1:3d9e dev eth2 lladdr 00:00:24:d1:3d:9e STALE
fe80::224:d4ff:febb:af9e dev eth2 lladdr 00:24:d4:bb:af:9e router STALE
2001:db8:399a:39e0:200:24ff:fed1:3d9e dev eth2 lladdr 00:00:24:d1:3d:9e STALE
fe80::e69e:12ff:fe03:8b35 dev eth2 lladdr e4:9e:12:03:8b:35 router REACHABLE

# get from router2
ip -6 route get 2001:4860:4860::8888
2001:4860:4860::8888 from :: via 2001:db8:399a:8f0::1 dev eth2  src 2001:db8:399a:39e0:200:24ff:fed1:6336  metric 1024

Некоторый пример трассировки:

# traceroute from router1
# traceroute 2001:4860:4860::8888
traceroute to 2001:4860:4860::8888 (2001:4860:4860::8888), 30 hops max, 80 byte packets
 1  2001:db8:ee84:21c0::1 (2001:db8:ee84:21c0::1)  26.146 ms  27.728 ms  28.507 ms

Я транспонирую этот пример ipv4 в ipv6.

Проблема в том, что если вы не будете активно пинговать каждый ip-адрес коробки с правильным источником, будет нелегко сопоставить (используя Mac-адрес) правильный общедоступный IP-адрес с правильной ссылкой локальный IP-адрес. Вот что я мог сделать из соседних таблиц с обоих маршрутизаторов и из того факта, что конец локальной ссылки является концом Mac:

box0 2001:db8:ee84:2180::1 <=> fe80::e69e:12ff:fe03:8b35
box2 2001:db8:2f13:1ea0::1 <=> fe80::0224:d4ff:febb:af9e
box3 2001:db8:399a:08f0::1 <=> fe80::e69e:12ff:fe02:10de
box4 2001:db8:399a:39e0::1 <=> fe80::0224:d4ff:fea7:f258

а оставшийся, который не может быть найден данными, должен быть:

box1 2001:db8:ee84:21c0::1 <=> fe80::e69e:12ff:fe04:286f

При этом становится ясно, что оба ip -6 route get Примеры в вопросе показывают, что для выбранного маршрутизатора использовался неправильный источник. В данном случае это похоже на ограничение Linux (наличие нескольких локальных сетей, наложенных на одну физическую локальную сеть).

Итак, вот что нужно сделать для router1. Кроме того, методом проб и ошибок необходимо указать "src" для маршрута по умолчанию в таблице, иначе может быть выбран другой источник. Обратите внимание, что общедоступный IP-адрес или локальный IP-адрес ссылки могут (должны) использоваться взаимозаменяемо в качестве шлюза, поэтому лучше использовать общедоступный IP-адрес, даже если RA, похоже, предпочитает IP-адрес ссылки, проще использовать общедоступный в сценарии и найти соответствие между двумя типами IP, как указано выше, больше не требуется.

# ip -6 route add 2001:db8:ee84:2180::/64 dev eth2 src 2001:db8:ee84:2180:200:24ff:fed1:3d9e table 100
# ip -6 route add default via 2001:db8:ee84:2180::1 dev eth2 src 2001:db8:ee84:2180:200:24ff:fed1:3d9e table 100

# ip -6 route add 2001:db8:ee84:21c0::/64 dev eth2 src 2001:db8:ee84:21c0:200:24ff:fed1:3d9e table 101
# ip -6 route add default via 2001:db8:ee84:21c0::1 dev eth2 src 2001:db8:ee84:21c0:200:24ff:fed1:3d9e table 101

# ip -6 route add 2001:db8:2f13:1ea0::/64 dev eth2 src 2001:db8:2f13:1ea0:200:24ff:fed1:3d9e table 102
# ip -6 route add default via 2001:db8:2f13:1ea0::1 dev eth2 src 2001:db8:2f13:1ea0:200:24ff:fed1:3d9e table 102

# ip -6 route add 2001:db8:399a:08f0::/64 dev eth2 src 2001:db8:399a:08f0:200:24ff:fed1:3d9e table 103
# ip -6 route add default via 2001:db8:399a:08f0::1 dev eth2 src 2001:db8:399a:08f0:200:24ff:fed1:3d9e table 103

# ip -6 route add 2001:db8:399a:39e0::/64 dev eth2 src 2001:db8:399a:39e0:200:24ff:fed1:3d9e table 104
# ip -6 route add default via 2001:db8:399a:39e0::1 dev eth2 src 2001:db8:399a:39e0:200:24ff:fed1:3d9e table 104

По крайней мере, маршрут по умолчанию должен быть помещен в основную (обычную) таблицу, иначе, что бы ни было сделано позже, будет ошибка типа «нет маршрута к хосту» или «сеть недоступна». Поскольку вы уже получили 5 из них из рекламы маршрутизатора, это не нужно.

Теперь давайте добавим правила, которые привязывают каждый исходный IP-адрес к соответствующей таблице, таким образом выбирая правильный источник для любого из (блочных) маршрутизаторов:

# ip -6 rule add from 2001:db8:ee84:2180:200:24ff:fed1:3d9e table 100
# ip -6 rule add from 2001:db8:ee84:21c0:200:24ff:fed1:3d9e table 101
# ip -6 rule add from 2001:db8:2f13:1ea0:200:24ff:fed1:3d9e table 102
# ip -6 rule add from 2001:db8:399a:08f0:200:24ff:fed1:3d9e table 103
# ip -6 rule add from 2001:db8:399a:39e0:200:24ff:fed1:3d9e table 104

Также возможно принудительно (или даже балансировать нагрузку с помощью statistic --mode nth match) выбор с использованием, например, ip6tables ... -j MARK ... с участием ip -6 rule add fwmark ... table 10x

Теперь лучше было бы написать это ...

Может быть другая проблема. Если коробочный маршрутизатор перейдет в автономный режим, соответствующий маршрут по умолчанию быстро исчезнет в системе Linux, потому что он больше не рекламируется, но IP останется. Тогда я не знаю, может ли этот IP-адрес по-прежнему быть ошибочно выбран для использования на оставшемся маршруте по умолчанию. Если это произойдет, добавленные IP-правила могут переопределить маршрут по умолчанию, чтобы использовать теперь автономный блочный маршрутизатор, тем самым побеждая механизм переключения при отказе, состоящий из нескольких устройств в качестве маршрутизаторов. У меня нет средств проверить это.