Как я использую статический IP
Я решил купить статический IP. Решил купить давно. Больше года назад. Но купил только сейчас. В принципе, цена, вполне меня устраивает — 450 рублей за подключение и 20 рублей в месяц за аренду IP. Статический IP адрес мне понадобится для того, что бы привязать к домену сайт или сервис, который я буду размещать на своем сервере. Кроме этого я решил осуществить давнишнюю мечту — иметь доступ к своим домашним устройствам и сервисам из любого места.
Устройств и сервисов, которые я бы хотел видеть снаружи, у меня немного есть. А есть у меня роутер NetGear 3500L с DD-WRT на борту. В нем жесткий диск на 320Gb и торрент-клиент. И есть у меня домашний сервер, за состоянием которого я хочу иногда присматривать. Есть немного интересных штук, но я пока не добрался до них.
Подытожу. Я хочу привязать к своему домену такие штуки, как:
- SSH сервера
- Состояние сервера (webmin)
- Веб-сервер (его пока не трогаю)
- SSH роутера
- Веб-интерфайс роутера
- Торрент клиент
- FTP-сервер (его тоже не трогаю)
План
Во-первых, нужно привязать субдомены (например, torrents.anton-shuvalov.info, webmin.anton-shuvalov.info) к своему статическому IP адресу, потом подвинуть с 80 порта веб-интерфейс DD-WRT, а на 80-ом поднять nginx. На nginx пробросить прокси ко всем сервисам, вроде:
torrents.anton-shuvalov.info > 192.168.0.1:9091
Как привязать домен к IP
Привязка домена к IP делается с помощью A записи
на NS-сервере к которому привязан домен. Мой домен привязан к NS-серверам selectel. Создать там A запись
очень просто, хотя я не думаю, что где-то это будет сложнее. В панели управления нужно перейти на вкладку домены
, дальше выбрать домен, ну и нажать на кнопку “добавить запись”. В значении “хост” пишу webmin.anton-shuvalov.info
, “тип” — A
, “Значение” — указываю свой IP.
SSH
На MacBook я создал пару профилей SSH — до консоли роутера, и до консоли домашнего сервера. Создаются такие профили в файле ~/.ssh/config
. Два моих профиля выглядят примерно так:
Host ayanami
# My home server
HostName myip
RemoteForward 52698 127.0.0.1:52698 # для rmate
User user
Port 11132 # В DD-WRT нужно пробросить этот порт на локальный IP сервера на 22-ой порт
Host router
# My home router
HostName myip
User root
Port 22
В файле /etc/hosts
я сделал запись такого вида:
44.144.244.233 myip # home
Это нужно для того, что бы в конфиге SSH зарезолвить myip в корректный IP-адрес.
Настройка DD-WRT
В DD-WRT нужно сделать две вещи для того, чтобы запрос к субдомену доходил до моего еще не установленного проксирующего сервера на nginx, который, собственно, и будет разбираться с тем, что и куда перенаправить.
- Во-первых нужно подвинуть веб-интерфейс с 80-ого порта на, например, 81-ый порт (есть альтернативный вариант — перевести веб-интерфейс с
http
наhttps
, но я его не пробовал). - Во-вторых нужно пробросить 80-ый порт до сервера, на котором будет работать nginx.
Меняем порт веб-интерфейса
Что бы сменить порт интерфейса нужно выполнить в консоли роутера следующие строки
nvram set http_lanport=81
nvram commit
reboot
После перезагрузки интерфейс откроется по адресу http://192.168.0.1:81
.
Пробрасываем 80-ый порт
Здесь нет ничего сложного. Нужная форма находится в NAT/QoS > Port Forwarding
. Слева направо название, входящий порт, протокол (TCP, UDP или оба), внутренний IP и его порт. Внутренний IP сервера у меня 192.16810.101, порт 80-ый.
Установа nginx в debian
Установка nginx была не особенно гладкой. Ну как, не особенно. Я решил поставить из aptitude
, после этого часа два пытался настроить nginx proxy_pass
, и, в итоге, измученного и злого, меня озорило:
rei@ayanami:~/$ /usr/sbin/nginx -v
nginx version: nginx/0.7.67
Уже вышел nginx/1.2.6
. Версия в сорцах жутко смердила.
Для того, что бы поставить актуальную версию, нужно добавить в /etc/apt/sources.list
следующие строчки:
deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx
Так как я ставлю ngixn исключительно для проксирования запросов внутрь моей локальной сети, то ни php-fpm
, ни mysql
я не устанавливаю. Следовательно я удалил старую версию с помощью aptitude remove --purge nginx
, а дальше все просто:
sudo aptitude install nginx
nginx proxy pass
После того, как установка nginx на мой debian сервер успешно завершилась, нужно настроить проксирование запросов в мой маленький интранет. Для каждого субдомена нужно писать отдельный конфиг. Возможно в чем-то эти конфиги могут отличаться. У меня же они одинаковые. Конфигурация сервера помещается в директиву http
.
server {
server_name router.anton-shuvalov.info; # субдомен
listen 80;
location / {
proxy_pass http://192.168.1.1:81; # локальный адрес
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Я добавил такие конфиги для веб-интерфейса роутера и торрент-клиента.
В Webmin не работают cookies
С webmin не заладилось. После того, как я настроил проксирование по адресу webmin.anton-shuvalov.info
меня встретила форма логина, но, введя имя пользователя и пароль, я увидел такую ошибку:
Error - No cookies
Your browser does not support cookies, which are required for this web server to work in session authentication mode
Надо отметить, что proxy_pass
у меня вел на https://192.168.1.101:10000
. Но на самом деле, SSL webmin’а нужно выключить. Для этого в файле sudo rmate /etc/webmin/miniserv.conf
нужно поменять ssl=1
на ssl=0
. Ну и ниже конфиг сервера в /etc/nginx/nginx.conf
:
server {
server_name webmin.anton-shuvalov.info;
listen 80;
location / {
proxy_pass http://192.168.1.1:10000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
После этого все должно было заработать. Хотя нет. Webmin очень расстроился из-за подозрительного домена, с которого я до него добрался. Во всех своих фреймах он только об этом и говорил мне. Что бы порадовать старика нужно зайти в webmin через локальный адрес, у меня это 192.168.1.101:10000
перейти в Webmin > Настройка Webmin > Проверка ссылок
и вписать, куда влезает, название своего домена. Что-то типа webmin.anton-shuvalov.info
. Теперь-то все.
Реприза
Сейчас я очень доволен — я могу добраться до консоли роутера или сервера, который я спрятал в чулане, до интерфейса роутера, до торрент-клиента, до состояния сервера из любой точки мира. Это очень здорово. Позднее я планирую поднять доступ до ftp (хотя, это должно решится с помощью установки нужного optware пакета на роутер). Ну и попробую перенести свой блог на домашний сервер, что бы посмотреть, что из этого выйдет. А на сегодня, вроде как все.
Похожие статьи:
-
Домашний сервер. Первые шаги
Цикл статей о том, как сделать домашний сервер.
-
Как к Mac OS X подключить HDD от DD-WRT
-
Настройка VPN на роутере с DD-WRT
-
Домашний сервер. Интро
Цикл статей о том, как сделать домашний сервер
-
Чейнинг
или Как сделать код проще, добавив одну строчку
-
Анализ покрытия JavaScript-кода тестами
Вместе с нашими друзьями: Mocha, JSCoverage, Coveralls и Travis
-
Ссылколог #9
Тайная гильдия, NPM@2.0, песочницы на SO и немного о console.log и Apple
-
Ссылколог #8
Полезный плагин для photoshop, шрифт от Mozila, инструменты для мобильного тестирования, this в javascript, и не только это