Проблема, с которой вы столкнулись, связана с концепцией двойного NAT и тем, что трафик, исходящий из локальной сети на внешний IP, не возвращается обратно в локальную сеть через NAT. Чтобы обеспечить доступ из внутренней сети к сервисам, расположенным на внешнем IP, необходимо выполнить несколько шагов. Вот что рекомендуется сделать:
1. **Настройка NAT (Port Forwarding)**:
Убедитесь, что на вашем шлюзе корректно настроено перенаправление портов (Port Forwarding). Это поможет перенаправить входящие запросы на внешний IP к вашему HTTP-серверу во внутренней сети. Например, если ваш HTTP-сервер работает на порту 80, вам нужно настроить следующее правило на вашем шлюзе:
```
iptables -t nat -A PREROUTING -d <внешний_IP> -p tcp --dport 80 -j DNAT --to-destination 100.127.1.2:80
iptables -A FORWARD -p tcp -d 100.127.1.2 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
```
Замените `<внешний_IP>` на IP-адрес, который вы используете.
2. **Настройка 'Hairpinning' (NAT Reflection)**:
Для доступа к внешнему IP из внутренней сети необходимо настроить 'hairpinning' или NAT Reflection. Это позволяет клиентам локальной сети обращаться к внешнему IP, и так, что трафик продолжается через NAT обратно в локальную сеть. Убедитесь, что ваш маршрутизатор или шлюз поддерживает эту функцию. Например, для iptables можно использовать следующий подход:
```
iptables -t nat -A PREROUTING -d <внешний_IP> -p tcp --dport 80 -j DNAT --to-destination 100.127.1.2:80
iptables -t nat -A POSTROUTING -p tcp -d 100.127.1.2 --dport 80 -j SNAT --to-source 100.127.1.1
```
3. **Проверка маршрутизации**:
Убедитесь, что маршруты настроены правильно и что запросы внутри локальной сети корректно направляются к вашему шлюзу. Проверьте таблицы маршрутизации и убедитесь, что маршруты к локальной сети настроены правильно как на клиентских машинах, так и на шлюзе.
4. **Локальные DNS-настройки**:
Если при доступе к внешнему IP вы используете доменное имя, убедитесь, что ваше DNS-имя правильно разрешается в локальной сети. Возможно, вам стоит добавить соответствующий A-запись для локальной сети, чтобы она указывала на локальный IP конфликтующий сервис.
5. **Отладка и логирование**:
Включите логи iptables, чтобы просматривать пакеты, проходящие через вашу конфигурацию NAT, это поможет вам увидеть, что происходит с запросами и где могут возникать проблемы:
```
iptables -A INPUT -j LOG --log-prefix "IPTables-INPUT: "
iptables -A FORWARD -j LOG --log-prefix "IPTables-FORWARD: "
iptables -A OUTPUT -j LOG --log-prefix "IPTables-OUTPUT: "
```
После выполнения этих шагов вы должны получить доступ к вашему внутреннему HTTP-серверу из локальной сети через внешний IP. Если же проблема остается, рассмотрите возможность временной деактивации брандмауэра на клиентских устройствах или на шлюзе для диагностики.