Добрый день!
Ваша ситуация вполне распространена, и проблема, с которой вы столкнулись, связана с маршрутизацией и тем, как работает NAT (Network Address Translation) на устройствах MikroTik. Когда пользователи в локальной сети пытаются получить доступ к внешнему IP-адресу, MikroTik не знает, как правильно вернуть трафик обратно во внутреннюю сеть. Ниже приведены шаги, которые могут помочь в решении этой проблемы.
### Решение 1: Настройка DNS для локальных пользователей
1. **Настройка DNS:** Если у вас есть возможность, настройте локальный DNS-сервер, который будет разрешать доменные имена `сайт1.ру` и `сайт2.ру` на локальные IP-адреса (внутренние адреса Nginx-прокси). Это позволяет локальным пользователям получать доступ к сайтам через их доменные имена, минуя NAT:
- сайт1.ру -> локальный IP Nginx (например, 192.168.1.10)
- сайт2.ру -> локальный IP Nginx (например, 192.168.1.10)
2. **Установка записи в hosts (если DNS недоступен):** Если настройки DNS не представляются возможными, вы можете временно внести изменения в файл hosts на каждом компьютере в локальной сети, добавив соответствующие записи для каждого домена.
### Решение 2: Настройка NAT на MikroTik
Если вы хотите, чтобы локальные пользователи могли использовать внешние IP-адреса, вам нужно настроить MikroTik на "hairpin NAT" (или "NAT loopback"). Вот пошаговое руководство:
1. **Настройка NAT правил для hairpinning:**
- Перейдите в `IP` -> `Firewall` -> `NAT`.
- Добавьте новое правило NAT для hairpinning.
- Введите следующие значения:
- **Chain**: `dstnat`
- **Src. Address**: укажите адреса вашей локальной сети (например, 192.168.1.0/24)
- **Dst. Address**: укажите ваш внешний IP-адрес
- **Protocol**: `tcp`
- **Dst. Port**: `443`
- **Action**: `dst-nat`
- **To Addresses**: укажите локальный IP Nginx-прокси (например, 192.168.1.10)
- **To Ports**: `443`
2. **Примените аналогичные правила для HTTP (порт 80)**, если у вас есть такие запросы.
Пример команды для создания правила в терминале MikroTik (вводить по одной строке):
```shell
/ip firewall nat add chain=dstnat src-address=192.168.1.0/24 dst-address=<внешний_IP> protocol=tcp dst-port=443 action=dst-nat to-addresses=192.168.1.10 to-ports=443
```
### Решение 3: Используйте SSL с Let's Encrypt
Если вы используете Let's Encrypt для получения сертификатов SSL для ваших сайтов, убедитесь, что ваш Nginx настроен таким образом, чтобы он принимал запросы как на внешний, так и на внутренний IP.
### Проверка
После выполнения этих шагов обязательно проверьте, чтобы:
- На роутере MikroTik проверили, что прописаны необходимые NAT правила.
- Система имени (DNS) правильно разрешает доменные имена для локальной сети.
Теперь ваши пользователи в локальной сети должны иметь возможность получить доступ к сайтам через их доменные имена так же, как пользователи из Интернета.
Если у вас все еще есть проблемы, проверьте журналы MikroTik, чтобы убедиться, что запросы поступают корректно и обрабатываются в соответствии с вашими правилами.