Сайт работает на локалхосте, по внешнему IP доступен всем, кроме меня. Что делать?
Установлен lighttpd, в ufw порты прописаны, на роутере стоит проброс портов в DHCP. Так же поднят виртуал сервер http на 80 порте(по умолчанию). Сайт доступен из вне по статике, даже по домену. Но я со своей машины не могу просматривать, ни домен, ни внешний IP. На счет веб платформ apache2, nginx, здесь та же ситуация. Так что дело думаю не в этом... Папки с сайтом расположены не в стандартном месте, но редирект настроен.
Вот IP: 195.78.101.141
Может кто сталкивался?
Давайте вспомним основы маршрутизации, как пойдет пакет из мира:
Мир -> Ваш роутер с внешним IP -> тут внутри роутера срабатывает правило проброса всех кто с мира ломится на определенный порт пробрасываем на такой-то серый IP -> сам сайт.
Как пойдет пакет от вас:
Ваша машина -> роутер -> опа вход то не из мира а из локалки и проброс не работает, цепочка обрывается.
Самый простой вариант для домена в файле hosts на вашей машине сделать статическую запись с серым IP сервера, на котором сайт, более сложный и не на каждом роутере, сделать правило проброса если scr ip вашей машины, а dst ip 195.78.101.141, то заворачиваем вас на нужный порт серого IP, где сайт.
Dany Krass: Не понял вопроса, какие ложные страницы? Эта запись говорит браузеру что искать сайт с именем mysitename.com надо локально и игнорировать, че нам там выдает DNS сервак, вот и все что она делает, так как веб сервер слушает и на локалхосте и на сером адресе, то обращаться можно что по одному что по другому, в принципе можете поставить вместо 127.0.0.1 тот адрес, который получаете от роутера и тоже все будет работать.
Dany Krass: не получится на одном и том же IP и порту запустить и сервер и браузер. По-моему можно заходить только через локалхост или IP виртуалки (127.0.0.1 и 192.168.0.1 допустим)
порт тут вообще ни при чем.
Так работает нат, он дропает все пакеты из локалки приходящие на wan.
а запись соответствия имени и серого адреса в hosts , либо dhcp конечно же помогает.
Артем: Собственно при том что такие симптомы очень похожы на петлю. Такое пару раз видил всегда ошибки настройки апача, но в любом случае есть несколько вариантов решения.
я предлагаю вссего навсего вариант.
Хотя куда проще было бы указать алиас в виртуал хосте и заходить локально на данный алиас.
Нет, тут немного другое. Это стандартная проблема тех кто сидит за натом.
Смотрите как это работает-
Допустим у меня есть роутер с белым адресом 195.10.10.10 и домен vasya.ru, за ним стоит компьютер с адресом 192.168.0.5 на котором поднят веб сервер.
Если пользователь из интернета набирает адрес vasya.ru, он резолвиться в 195.10.10.10, запрос идет по этому адресу и попадает на 80порт моего роутера.
На роутере срабатывает правило трансляции портов - весь входящий трафик на порт 80 пересылать на 192.168.0.5. В результате запрос приходит на 80порт сервера стоящего в локалке, и все работает отлично.
Но если пользователь из локальной сети набирает адрес vasya.ru, он резольвиться в 195.10.10.10, таких адресов в нашей локалке нет, поэтому запрос отправляется на шлюз по умолчанию, т.е на роутер.
В итоге запрос попадает на 80порт нашего роутера.
А дальше он никуда не идет, поскольку на 80порту нашего роутера нет вебсервера, а правило перенаправления не срабатывает, поскольку правило трансляции действует только для входящего трафика, а данный трафик таковым не является.
В итоге запрос дропается роутером, и на сервер в локалке не попадает.
Артем: да собственно как я и говорил. все это можно исправить фактически двумя способами. 1 намутить с роут таблицами, но це не по феншую.
2. а у вас есть возможность обращаться к сайту по другому имени ?
или например самый тупой способ дайте 2 IP сетевой карте и обращайтесь ко второму IP таким образом правило не будет закольцовываться. Можно даже второй домен приклеить. Просто в виртуал хосте пропишите алиас.
в конце концов если у вас прокси nginx то можно банально www и без него развести по разные стороны барикад. фактически ведь это уже готовый адрес.
Со внешки ничего не стоит сделать редирект в nginx а в локальной сети обращаться по определеному адресу скажем без ввв.
В таком случае роутер про этот домен не будет ни слухом ни духом.
А ввв редиректиться будет в nginx если же вы обращаетесь в локалке то обращение уже пойдет на локалхост, просто в proxy_pass нужно указать не domain а 127.0.0.1
Скорее всего, если там есть роутер или вы с маршрутизацией не справились, вас банально не пускает на ваш собственный внешний IP (dlink-и почти все этим грешат, например).