
У меня есть компьютер, подключенный к двум маршрутизаторам через их внутреннюю сеть. Я перенаправил порт 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.