Это общая проблема, вызванная невозможностью сделать NAT шпильки. Большинство дешевых домашних маршрутизаторов справляются с этим, просто включив переадресацию портов. Однако маршрутизаторам более высокого уровня на самом деле нужны отдельные правила для решения этой проблемы.
Ваши обычные правила NAT работают только за пределами вашей сети. Если вы попытаетесь подключиться изнутри вашей сети, возникнет проблема с NAT.
Учти это...
- У вас есть
Server A
в вашей локальной сети с IP 10.10.10.10
.
- У вас есть
Computer A
в вашей локальной сети с IP 10.10.10.20
.
- У вас есть
Router A
с IP-адресом LAN
10.10.10.1
и IP-адресом WAN
11.11.11.11
.
- У вас есть
Computer B
вне вашей сети с IP 12.12.12.12
.
- У вас есть
port 22
перенаправленный с вашего WAN IP на Server A
Из-за пределов вашей сети трафик выглядит так:
Компьютер B пытается подключиться к серверу A:
Source IP: 12.12.12.12 Src Port: 12345
Destination IP: 11.11.11.11 Dest Port: 22
Маршрутизатор A NATs пакет и отправляет его на сервер A:
Source IP: 12.12.12.12 Src Port: 12345
Destination IP: 10.10.10.10 Dest Port: 22
Сервер A отвечает на компьютер B:
Source IP: 10.10.10.10 Src Port: 22
Destination IP: 12.12.12.12 Dest Port: 12345
Маршрутизатор A NATs пакет и отправляет его на компьютер B:
Source IP: 11.11.11.11 Src Port: 22
Destination IP: 12.12.12.12 Dest Port: 12345
Все работает как задумано. Теперь рассмотрим тот же сценарий, но внутри вашей сети:
Компьютер A пытается подключиться к серверу A:
Source IP: 10.10.10.20 Src Port: 12345
Destination IP: 11.11.11.11 Dest Port: 22
Маршрутизатор A NATs пакет и отправляет его на сервер A:
Source IP: 10.10.10.20 Src Port: 12345
Destination IP: 10.10.10.10 Dest Port: 22
Сервер A отвечает на компьютер A:
Source IP: 10.10.10.10 Src Port: 22
Destination IP: 10.10.10.20 Dest Port: 12345
Исходный IP-адрес находится в той же подсети, что и IP-адрес назначения. Server A
не отправляет пакет обратно маршрутизатору, он отправляет его непосредственно на Computer A
Computer A
отбрасывает пакет, поскольку он пришел с 10.10.10.10
и отправил исходный пакет на 11.11.11.11
. Ожидается, что пакет вернется с 11.11.11.11
.
Чтобы решить эту проблему, вы должны создать второе, более конкретное правило NAT для соответствия трафику, исходящему из вашей сети. Это придет после вашего исходного правила NAT. Вам нужно будет сделать Source NAT, который выглядит следующим образом:
srcnat src-address=10.10.10.0/24 dst-address=10.10.10.10 dst-port=22 out-interface=LAN action=masquerade
Теперь давайте посмотрим на это снова:
Компьютер A пытается подключиться к серверу A:
Source IP: 10.10.10.20 Src Port: 12345
Destination IP: 11.11.11.11 Dest Port: 22
Маршрутизатор A NATs пакет и отправляет его на сервер A:
Source IP: 10.10.10.1 Src Port: 12345
Destination IP: 10.10.10.10 Dest Port: 22
Сервер A отвечает на компьютер A:
Source IP: 10.10.10.10 Src Port: 22
Destination IP: 10.10.10.1 Dest Port: 12345
Маршрутизатор A NATs пакет и отправляет его на компьютер A:
Source IP: 11.11.11.11 Src Port: 22
Destination IP: 10.10.10.20 Dest Port: 12345
Все работает как задумано.
Как вы реализуете это второе правило NAT, зависит от аппаратного и программного обеспечения вашего маршрутизатора. Ваш пробег может отличаться.