![Подключение из WAN в LAN](https://rvso.com/image/1490207/%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B8%D0%B7%20WAN%20%D0%B2%20LAN.png)
Я разрабатываю приложение для своей семьи, которое использует сокеты для связи между устройствами в LAN или WAN. Поскольку IP-адреса постоянно меняются, я планирую FTP-сервер для адресной книги и TCP/IP для связи.
Моя проблема:
подключение из WAN в LAN. Я думаю, что маршрутизатор должен быть настроен на разрешение подключения извне к порту в LAN. Как это сделать?
решение1
Да, большинство маршрутизаторов-шлюзов NA[P]T позволяют указать правило «сопоставления портов», «переадресации портов» или, иногда, «виртуальный сервер», где соединения из WAN к определенному порту TCP или UDP на IP-адресе WAN маршрутизатора перенаправляются на частный IP-адрес и порт локальной сети, где фактически находится служба.
В примере с FTP порт 21/TCP обычно используется для входящих управляющих подключений, поэтому вам может потребоваться настроить сопоставление портов на маршрутизаторе для переадресации порта 21/TCP с WAN-адреса маршрутизатора на частный IP-адрес и порт локальной сети, на котором запущен FTP-сервер (например, 192.168.1.2:21).
Таким образом, находясь в глобальной сети (WAN), вы указываете своему FTP-клиенту подключиться к WAN-IP-адресу вашего маршрутизатора, а на самом деле подключаетесь к своему FTP-серверу, который на самом деле находится по другому адресу за NAT.
Помните, что FTP — это очень сложный протокол для работы за NAT. Помогает, если ваш шлюз NAT имеет код FTP "ALG" (Application-Layer Gateway), который знает, как работать с FTP-сервером за NAT. Видите ли, когда клиент FTP находится за NAT, использование пассивного режима FTP (PASV) может заставить FTP работать через NAT. Но когда FTPсервернаходится за NAT, даже с необходимым сопоставлением портов для 21/TCP, пассивный режим ломается, тогда как активный режим работал бы. Если FTP-клиент находится за одним NAT, а FTP-сервер — за другим NAT, вам определенно нужен FTP ALG в одном или обоих NAT.