.png)
Я использую конфигурацию из двух маршрутизаторов со следующим оборудованием:
Netgear WNDR3400V2 - 192.168.1.1 - DD-WRT
Belkin F9K1105 v1 - 192.168.1.50 - стоковая прошивка
Belkin настроен как коммутатор, к которому подключен веб-сервер.
[Интернет] -> Netgear -> Belkin -> Сервер
При внутреннем подключении он регистрирует мой IP соответствующим образом (например, 192.168.1.51) При подключениивнешне, все IP-адреса отображаются как 192.168.1.1 (IP-адрес основного маршрутизатора)
Конечно, это прекрасно работает, если нет второго маршрутизатора, но, к сожалению, моя текущая настройка не является необходимой.
Мне было интересно, могу ли я получить какие-то конкретные инструкции о том, как правильно «видеть» внешние IP-адреса с сервера.
Заранее спасибо!
решение1
Похоже, проблема в правилах iptables по умолчанию, которые устанавливает DD-WRT.
Удаление строки MASQUERADE в POSTROUTING решило проблему: внешние подключения больше не отображаются как внутренний IP-адрес моего основного маршрутизатора.
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE 0 -- anywhere anywhere
SNAT 0 -- 192.168.1.0/24 anywhere to:1.1.1.1
RETURN 0 -- anywhere anywhere PKTTYPE = broadcast
Это удалит первый элемент в списке выше:
iptables -t nat -D POSTROUTING 1
Более подробную информацию об исправлении выше можно найти здесь:https://www.reddit.com/r/HomeNetworking/comments/40swj2/firewall_log_shows_router_ip_for_all_incoming/cyxaz3t/
Теперь все должно работать нормально.
Примечание: если вы больше не можете получить доступ к своим сервисам через внешний IP-адрес с внутреннего IP-адреса, вам может потребоваться выполнить одно или оба из следующих действий (мне потребовалось оба):
Обязательно снимите флажок «Фильтровать перенаправление WAN NAT» в «DD-WRT -> Безопасность -> Брандмауэр».
Выполните следующее:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 192.168.1.0/24 -j MASQUERADE
Замените оба вхождения 192.168.1.0/24 на то, что соответствует вашей настройке.
Чтобы упростить задачу, я рекомендую просто сохранить это в скрипте брандмауэра в разделе «Администрирование -> Команды».
iptables -t nat -D POSTROUTING 1
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 192.168.1.0/24 -j MASQUERADE