Как сделать мой веб-сервер Raspberry Pi общедоступным?

8

Итак, я наконец запустил веб-сервер, за исключением того, что он доступен только для моей локальной сети, и я хотел бы сделать его общедоступным. У меня D-Link DIR-615 в качестве маршрутизатора, IP-адрес моего Pi 192.168.0.14, и моя публичная информация об IP выглядит следующим образом:

IP Information: xx.xx.xx.xx
ISP:    Xplornet Communications
Organization:   Xplornet Communications
Connection: Broadband
Services:   None Detected
City:   Sherwood Park
Region: Alberta
Country:    Canada

Все звучит хорошо, за исключением того, что я не живу в Шервудском парке, до меня около 2 часов.

Что мне нужно сделать, чтобы сделать мой сервер общедоступным?

Мой маршрутизатор поддерживает переадресацию портов, виртуальный сервер и DMZ. Я использую сервер Apache HTTP.

Спасибо, но это все еще не решает мою проблему; Я просто хочу подключиться извне, может быть, однажды, тогда я разберусь с DDNS и тому подобным, но пока он не подключится ни к чему, когда я введу свой IP-адрес Xplornet.

Джим джонс
источник

Ответы:

13

Перенаправьте порт 80 с вашего маршрутизатора на Pi, и, если вы хотите использовать SSH извне, порт 22 также. Имейте в виду, что с помощью SSH извне любой, кто может войти, может затем использовать ssh или получить доступ к другим устройствам в вашей сети.

После настройки, если ваш IP-адрес практически не изменился, вы можете использовать что-то вроде Cloudflare, чтобы указать на него домен. Если он меняется ежедневно, вам понадобится такой сервис, как DynDNS.

Джордж Пирс
источник
Итак, я настроил свой маршрутизатор на переадресацию порта 80 на порт 80 с IP-адресом моего Raspberry Pi или любым другим, но он все еще просто «истекает» каждый раз, когда я набираю свой внешний IP-адрес
Джим Джонс
Попробуйте получить к нему доступ и указать порт 80, например, xx.xx.xx.xx: 80
Джордж Пирс,
@Spencer: Вы не можете надежно проверить переадресацию портов из вашей сети, так как не все маршрутизаторы поддерживают «закрепление». Попробуйте проверить это за пределами вашей локальной сети. Например, используйте мобильный телефон с отключенным Wi-Fi и используйте сотовые данные (3G, HCSD и т. Д.) Для подключения не по локальной сети.
RedGrittyBrick
@SpencerKillen Вы тестируете снаружи? Многие устройства не будут использовать NAT для вас, если вы сидите в той же локальной сети, что и ваш Raspberry Pi, и получаете доступ к общедоступному IP-адресу вашего маршрутизатора. Если вы можете получить доступ к веб-серверу по адресу 192.168.0.14 из вашей локальной сети, RPI или Apache не виноваты, но переадресация портов не выполнена правильно, или на вашем маршрутизаторе тоже есть брандмауэр.
Если переадресация портов слишком громоздка или вообще не подходит (например, если вы находитесь за мобильным маршрутизатором), вы можете попробовать ретрансляцию, такую ​​как PageKite или Yaler.net (Раскрытие информации: я основатель Yaler)
tamberg
3

Есть несколько вещей, которые нужно иметь в виду.

Во-первых, даже если у вас правильно настроена переадресация портов на вашем маршрутизаторе, вы не сможете подключиться к общедоступному IP-адресу из дома, потому что некоторые маршрутизаторы только перенаправляют соединения, исходящие «снаружи», а не «изнутри». Другая распространенная проблема - некоторые интернет-провайдеры не хотят, чтобы их пользователи запускали публичные серверы и блокировали общие входящие порты, такие как порт 80 или 25.

Я не знаю, применимо ли это в вашем случае, но они могут. Кроме того, я бы сказал, что вы на правильном пути, настройка маршрутизатора и динамическое решение DNS являются наиболее эффективным способом сделать это, если оно работает для вас.

Однако, если это не работает по какой-то причине, я создал решение под названием PageKite ( http://pagekite.net/) чтобы сделать серверы общедоступными из-за строгих брандмауэров или с устройств, которые часто меняют местоположение. Он работает путем создания туннеля от вашего Raspberry Pi до «переднего» сервера ретрансляции, который перенаправляет ваши входящие запросы и отвечает через туннель. Таким образом, каждый раз, когда ваш Pi имеет работающее подключение к Интернету и может подключиться к реле, ваш сервер будет виден (не требуются настройки маршрутизатора или ddns). Это бесплатное программное обеспечение, но если люди используют наш онлайн-сервис для подключения (вместо того, чтобы где-то запускать собственное реле), мы просим людей заплатить немного за эту привилегию. Это похоже на localtunnel, который упоминался в другом месте, за исключением того, что PageKite был разработан с учетом надежности и постоянных соединений, а не только для временного тестирования.

Удачи!

Бьярни Рунар
источник
Я должен упомянуть, что в целях использования PageKite с Raspberry Pi лучше всего следовать инструкциям для Debian, здесь: pagekite.net/wiki/Howto/GNULinux/ConfigureYourSystem
Бьярни Рунар
0

Вам понадобится такая услуга, как DynDNSили получите статический IP. В противном случае вы могли бы рассмотреть VPN.

user1945104
источник
0

Это зависит от того, хотите ли вы постоянно делиться своим веб-контентом или вам нужен только эпизодический публичный доступ. В последнем случае нет необходимости проходить через настройку учетной записи DynDNS и открытие портов переадресации на вашем маршрутизаторе.

Довольно простым решением является использование LocalTunnel , который сделает ваш веб-сервер доступным через доменное имя, такое как:

http://8bv2.localtunnel.com

Это очень полезно для обмена информацией о прогрессе веб-сайта, который вы размещаете на своем компьютере.

Микаэль Ле Байлиф
источник
0

Мое решение для нескольких систем под динамическим ip следующее:

У меня на маршрутизаторе есть домен от godaddy Entrydns 1 cron, который загружает мой ip-адрес в entrydns с токеном (токен, предоставленный entrydns). И мой DNS-сервер под моим доменом Godaddy установлен на entrydns. Ох, и не забудьте перенести :)

Если вам нужно, я могу дать вам более подробное пошаговое руководство, но я надеюсь, что вы можете понять этот простой процесс через Google :)

crancker
источник
1
может быть лучше предоставить более подробное пошаговое руководство, особенно если оно помогает другим с подобными проблемами. Я понимаю, что поиск в Google поможет, но я думаю, что на каждый вопрос можно ответить с помощью Google!
Колин