Как заставить работать переадресацию портов с двух маршрутизаторов через их собственную сеть?

Как заставить работать переадресацию портов с двух маршрутизаторов через их собственную сеть?

У меня есть компьютер, подключенный к двум маршрутизаторам через их внутреннюю сеть. Я перенаправил порт 80 на свой компьютер на обоих маршрутизаторах.

RouterA:80 -> 10.0.0.10:80 работает. RouterB:80 -> 192.168.1.10:80 работает.

Итак, конфигурация переадресации портов маршрутизатора верна.

Однако, когда я подключаюсь к обеим сетям, работает только переадресация портов RouterA. Как мне заставить работать переадресацию портов RouterB? Пожалуйста, посмотрите на конфигурацию моей компьютерной сети.

network:
  ethernets:
    enp7s0:
      addresses:
      - 10.0.0.10/24
      gateway4: 10.0.0.1
      nameservers:
        addresses:
        - 10.0.0.1
    enp6s0:
      addresses:
      - 192.168.1.10/24
      gateway4: 192.168.1.1
      nameservers: {}
  version: 2

Мне не нужно использовать enp6s0шлюз, но, похоже, он нужен для переадресации портов.

Спасибо @raj за обновленную конфигурацию сети.

ПРИМЕЧАНИЕ: Это не совсем то, о чем я спрашивал, но если у вас есть другой диапазон IP-адресов для доступа к вашим маршрутизаторам, это сработает. К счастью, это был мой случай.

enp7s0:
      addresses:
      - 10.0.0.10/24
      routes:
      - to: 0.0.0.0/0  #default route
        via: 10.0.0.1
        metric: 100
      nameservers:
        addresses:
        - 10.0.0.1
    enp6s0:
      addresses:
      - 192.168.1.10/24
      routes:
      - to: A.B.C.D/24  # IP range of network that would access Router B
        via: 192.168.1.1
        metric: 10
      nameservers: {}

решение1

Обычно сетевое взаимодействие работает не очень хорошо, если определены два шлюза по умолчанию. Ваш компьютер использует только один шлюз по умолчанию (вероятно, 10.0.0.1 в этом случае) и будет использовать второй только тогда, когда первый недоступен.

Так что переадресация портов на RouterB, вероятно,являетсяработает, то есть пакеты, отправленные на RouterB:80, вероятно, достигают интерфейса 192.168.1.10 на вашей машине. Но ответные пакеты всегда отправляются на шлюз 10.0.0.1 и, вероятно, не возвращаются к месту назначения (это так называемая "асимметричная маршрутизация", которая обычно вызывает проблемы).

Если вы планируете подключаться к RouterA:80 и RouterB:80 из одного диапазона IP-адресов, то я не вижу простого решения вашей проблемы. Возможно, можно как-то подправить iptables так, чтобы ответы на пакеты, полученные через интерфейс enp6s0, всегда выходили через 192.168.1.1, но я не знаю, как это сделать (если это вообще возможно).

Если IP-адреса будут разными, вам не следует определять 192.168.1.1 как шлюз по умолчанию, а вместо этого добавить в таблицу маршрутизации маршрут к определенной сети(ям) через 192.168.1.1. Это имеет приоритет над шлюзом по умолчанию, поэтому пакеты в указанную сеть(и) будут отправляться через 192.168.1.1, а не через 10.0.0.1.

Связанный контент