понедельник, 25 апреля 2011 г.

Настройка OpenVPN на маршрутизаторе dd-wrt и Windows клиентах

Для создания безопасного тоннеля к своей домашней сети остановил выбор на OpenVPN.
Во-первых, данный сервис поддерживается dd-wrt и можно скачать уже готовую прошивку для маршрутизатора (не все модели). Во-вторых, данный сервер поддерживает VPN через http (https) прокси.
Как установить прошивку уже писалось, теперь настроим безопасное соединение с нашей сетью и возможность использовать безгранично интернет из любого места мира через своего провайдера.
Небольшое отступление. Вопрос это мне в голову не приходил до определенного времени, а именно рабочий интернет начали ограничивать мне, из-за постоянного забивания мною канала скачиванием полновесных документов, каталогов, необходимого ПО и прочее. Меня просто поставили в очередь пользователей, жаль что не в первых рядах;) Скорость в связи с этим упала до обидных 0,5 Мбит. Что меня очень не устраивало, особенно когда тебе надо скачать новый каталог от производителей размером 200 МБ и ждать скачки этого каталога необходимо час, а то и два.
Хоть провайдеры предоставляющие интернет у меня дома и на работе разные, но дружат, таким образом основные пулы у них объединены отдельным оптическим каналом который никак не ограничен. Разумеется и у нас в очередях в серверной это никак не прописано и я могу подключаться к своему маршрутизатору даже не подключая интернет. Так же свою роль сыграл мой киевский друг (привет тебе, Вадим), у которого в офисе стоял жесткий (резали почти всё) прокси с авторизацией с неограниченным украинским трафиком и очень ограниченным мировым.
Теперь собственно перейдем к настройке всего этого дела.


1. Установка OpenVPN.
Качаем сборку с официального сайта, самая свежая на момент написания 2.1.4 и устанавливаем всё по умолчанию.


2. Сборка ключей и сертификатов для сервера/клиентов.
Запускаем консоль Windows - "Пуск - Строка поиска - cmd".
Выполняем команду, которая создаст папку для наших ключей и сертификатов, а также скопирует в неё файлы serial.start и index.txt.start без суффикса .start:
cd "c:\Program Files\OpenVPN\easy-rsa" && mkdir keys && copy serial.start keys\serial && copy index.txt.start keys\index.txt
Теперь надо скопировать vars.bat.sample и openssl.cnf.sample в vars.bat и openssl.cnf следующей командой:
cd "c:\Program Files\OpenVPN\easy-rsa" && init-config.bat
Теперь необходимо создать Diffie-Hellman key:
C:\Program Files\OpenVPN\easy-rsa>build-dh.bat
В результате в каталоге C:\Program Files\OpenVPN\easy-rsa\keys появится файл dh1024.pem.
Создаем Certificate Authority, с помощью команды в консоли "build-ca.bat":
C:\Program Files\OpenVPN\easy-rsa>build-ca.bat
Так в каталоге keys было создано два файла ca.crt и ca.key.
При нижеследующих запросах я отвечал "по-совести":

Country Name (2 letter code) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [OpenVPN]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address [mail@host.domain]:

Далее генерируем ключи для сервера пакетным файлом "build-key-server.bat" как имя сервера указываем ddwrt:
C:\Program Files\OpenVPN\easy-rsa>build-key-server.bat ddwrt
На эти вопросы так же отвечал:


A challenge password []:
An optional company name []:

Затем для клиентов, я создавал для 3-х (себя, друга и на всякий случай, соответственно user1, user2, user3):
C:\Program Files\OpenVPN\easy-rsa>build-key.bat user1
В итоге у нас в папке C:\Program Files\OpenVPN\easy-rsa\keys множество нам нужных ключей и сертификатов.


3. Настройка маршрутизатора. Заходим на веб-интерфейс нашего маршрутизатора во вкладку "Службы - PPTP". Включаем кнопку Start OpenVPN Daemon и раскрывается доступ к настройкам нашего сервера.
"Публичный серт.сервера" - извлекаем из "C:\Program Files\OpenVPN\easy-rsa\keys\ca.crt"  с помощью блокнота, причем ключ должен быть помещен полностью начиная с "-----BEGIN CERTIFICATE-----" и заканчивая "-----END CERTIFICATE-----".
"Публичный серт.клиента" - из файла "C:\Program Files\OpenVPN\easy-rsa\keys\ddwrt.crt".
"Личный ключ пользователя" - файл "C:\Program Files\OpenVPN\easy-rsa\keys\ddwrt.key".
"DH PEM" - "C:\Program Files\OpenVPN\easy-rsa\keys\dh1024.pem".
Пример моего конфигурационного файла:
mode server
tls-server
daemon
server 192.168.66.0 255.255.255.0
port 443
proto tcp-server
dev tun0
ca /tmp/openvpn/ca.crt
cert /tmp/openvpn/cert.pem
key /tmp/openvpn/key.pem
dh /tmp/openvpn/dh.pem
push "redirect-gateway def1"
push "dhcp-option DNS 192.168.66.1"
push "dhcp-option WINS 192.168.66.1"
keepalive 10 120
client-to-client
persist-key
persist-tun
verb 3
Нажимаем сохранить и применить.
Так же надо подправить наш брандмауэр, чтобы он пропускал подключения к нашему серверу. Делается это во вкладке "Техобслуживание - Команды" и вводим команду:
iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT
iptables -I FORWARD 1 --source 192.168.66.0/24 -j ACCEPT
Нажимаем кнопку снизу "Сохр.брандмауэр".


4. Теперь необходимо настроить клиентов. Для пользователей которые будут пользоваться моим сервером, необходимо установка OpenVPN, и сохранение в папке "C:\Program Files\OpenVPN\easy-rsa" папочки "keys" со следующими файлами - ca.crt, user1.crt, user1.key (разумеется каждому отдельному клиенту необходимы уникальные user1.crt, user1.key из тех что мы создавали с различными названиями).  Редактируем с помощью блокнота "C:\Program Files\OpenVPN\sample-config\client.ovpn". Мой конфиг:
client
dev tun
proto tcp-client
remote myIP 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\user1.crt" 
key "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\user1.key"
verb 3
Вместо "myIP" прописан мой реальный IP-адрес (можно использовать имя службы DDNS, для динамических адресов на вкладке "Установка - DDNS"), так же для каждого клиента будут пути к ключам и сертификатам с их именами.
Сохраняем файл в папку "C:\Program Files\OpenVPN\config". Запускаем OpenVPN GUI, он появляется значком в панели задач, щелкаем правой кнопкой мыши на нём и кликаем "Connect". После вывода логов значок светится зеленым светом - мы подключились.
Конфигурация для прокси с авторизацией:
client
dev tun
proto tcp-client
http-proxy proxy 3128 user.pas basic
remote myIP 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\user1.crt" 
key "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\user1.key"
verb 3
Где proxy это IP-адрес прокси-сервера, а user.pas это файл состоящий из двух строк - первая логин, вторая пароль, находящийся здесь "C:\Program Files\OpenVPN\config", это при стандартной авторизацией пользователей, при необходимости авторизации через http, строка будет выглядеть следующем образом:
http-proxy proxy 3128 user.pas ntlm


Теперь есть доступ в домашнюю сеть из любой точки мира, главное чтобы был доступ к ключам и конфигурациям, в моем случае я использовал архив с паролем загруженный на Документы Google. Загрузка маршрутизатора при одном подключении составляет порядка 30% процессорной мощности, следовательно не рекомендую подключать более двух пользователей одновременно.

четверг, 21 апреля 2011 г.

Отопление, вентиляция, кондиционирование

Думаю что мало кого не интересует данный вопрос у себя в жилом или офисном помещении. Будет освещен он и здесь. Не даром в СНиП (строительный нормы и правила) этот раздел совмещен, чтобы наглядно подчеркнуть необходимость комплексного подхода к решению этого вопроса.
Что имеем - так называемая хрущевка 64 м.кв. общей площадью, в панельном 5-ти этажном доме, со всеми вытекающими...
Что хочется получить - автономное и полноценное отопление наиболее комфортное для проживающих на данной площади (меня и семьи), систему кондиционирования и вентиляции. И все это хочется с единым управлением и автоматикой.
Для ознакомления с причинами, меня побудившими затеять это грандиозное (хотя для кого как) мероприятие, хочу порекомендовать статьи, так сказать для общего развития:
Напольное отопление.
Кто ответит за духоту в помещении.
Всегда ли эффективен тепловой насос.
Рекуперация тепла в современных системах вентиляции.
Как отключится от системы центрального отопления.
Енергетична стратегія України на період до 2030 року.
Почитав довольно много статей, пришел к следующей концепции:
  • Автономное электрическое отопление, причины - газ дорожает, получить разрешение на автономное газовое отопление в настоящее время практически невозможно, квартира не предусмотрена для установки газовой колонки (и котел так же мне никто не даст установить).
  • Воздушное отопление инверторным тепловым насосом типа воздух-воздух + теплые электрические полы как резерв и если не будут справляться кондиционеры.
  • Принудительная механическая вентиляция с рекуператором тепла и дополнительным электрическим калорифером для подогрева воздуха в холодное время года.
В общем порядок действий в голове сформирован, требуется согласование бюджета, оборудование, документов и много чего ещё. Главное есть желание.
Первым пунктом стоит заняться электрической составляющей квартиры, подвод хорошего кабеля, установкой зонального электросчетчика, да и вообще заменой проводки.

среда, 20 апреля 2011 г.

Настройка статического IP

Обычно провайдер предоставляет довольно подробные инструкции для пользователей о том как подключить интернет, на всякий случай опишу как это делал я. Делается все аналогично. В dd-wrt делается это на вкладке "Установка - Основные установки - Тип соединения WAN". Выбираем "Статический IP" и водим данные полученные у провайдера.
Хочу упомянуть так же такой параметр как "Клонирование MAC-адреса". Некоторые провайдеры делают привязку выданного IP-адреса к уникальному MAC-адресу сетевой карты, прошиваемому при производстве. Если поставщик интернета позволяет поменять его, конечно измените его на адрес WAN-порта роутера, если нет скопируйте его с Вашего компьютера. Делается это "Установка - Клонирование MAC-адреса", включением кнопки"включить", и нажатием кнопки "Получить MAC-адрес данного компьютера".
Есть следующие данные:
WAN IP-адрес - 192.168.0.2
Маска - 255.255.255.0
Шлюз - 192.168.0.1
DNS - 192.168.0.100
Хочу обратить внимание что если адрес выданный провайдером имеет общую подсеть с внутренней домашней сетью, необходимо поменять адрес маршрутизатор на отличный от первоначального. Eсли выданный адрес вида 192.168.1.25, маска 255.255.255.0, шлюз 192.168.1.1, просто в параметрах внутренней сети роутера надо поменять на 192.168.2.1, маска 255.255.255.0, соответственно и адреса компьютеров и других девайсов в домашней сети, если они прописаны вручную.
Хотелось бы упомянуть такой момент, если провайдер предоставляет только один DNS-сервер, т.е. нет резервного, при выходе его из строя доступ в интернет будет, но не будет доступа к сайтам, так как маршрутизатор не будет знать по какому адресу отправлять запросы. С этой целью могу порекомендовать вот такой ресурс OpenDNS.com. Бесплатного сервиса которого вполне мне хватает. И при недоступности сервера имен провайдера (один раз было) доступ к сайтам продолжится как ни в чем не бывало, ну немного медленнее чем обычно.

Настройка маршрутизатора Asus WL-520GU

Что-что, а без интернета сейчас никуда, и первое что я сделал - это провел себе в новую квартиру интернет. Ничего в принципе особенного, описывать нечего. Местный провайдер, тарифы нормальные, оптика приходит в соседний дом (гроз не боимся), реальный IP, скорость 4 Мбит мир/6 Мбит UA-IX.
Думаю что стоит рассказать о маршрутизаторе и сервисах запущенных на нём.
Так как работаю в компьютерной фирме выбор был, да и у любого сейчас благодаря компьютерным интернет-магазинам есть. Но как известно любому хочется максимум возможностей за минимум денег.
На момент выбора в квартире (ещё съемной, но провайдер тот же) имелось два ноутбука, один мой рабочий - Dell Vostro 1000, и старый Samsung P27, так что Wi-Fi был необходим. Смотрел в сторону D-Link DIR-320, благодаря альтернативным прошивкам с помощью несложных манипуляций превращающийся из унылой "железки" в достойный роутер. Но не сложилось - когда я решился его купить, его не было в наличии, но глаза уже "загорелись" и руки "зачесались". В следствии чего выбор пал на Asus WL-520GU, который имелся в наличии на складе у нас, и был дешевле D-Link. Но сравнив параметры был удивлен - абсолютно равнозначные , кроме оперативной памяти - у D-Link 32 МБ ОЗУ, Asus имел 16 МБ. Прошивку поставил dd-wrt с поддержкой OpenVPN, чтобы можно было подключаться к домашней сети безопасно. Есть в планах сделать резервный канал через МТС-Коннект или ОГО!Мобильный.
А теперь подробнее:
Прошивка маршрутизатора в dd-wrt.
1. Необходимо включить протокол TFTP (у меня Windows 7).
Проходим "Панель управления - Программы и компоненты - Включение или отключение компонентов Winows - Клиент TFTP" и ставим "галочку", т.е. включаем возможность использования протокола в ОС.
2. Создание пакетного файла.
С помощью блокнота создаем файл следующего содержания:

@Echo Off
:BEGIN
ping -n 1 -w 1 192.168.1.1
If errorlevel 1 Goto BEGIN
If errorlevel 0 Goto FLASH
Goto END

:FLASH
Echo *** Start Flashing ****
tftp -i 192.168.1.1 put C:\bin\firmware.bin

:END
Сохраняем этот файл как flashing.cmd в папку С:\bin\
3.Качаем прошивку с сайта для нашего роутера. Сохраняем её под именем firmware.bin в папку
C:\bin.
4. Меняем вручную IP-адрес нашего компьютера подключенного кабелем в любой сетевой порт нашего роутера на 192.168.1.2 маска 255.255.255.0.
4. Заходим в консоль Winows "Пуск - в строке поиска набираем cmd - жмём Enter". Открывается окошко с командной строкой.
5. Переходим в наш созданный каталог следующей командой

cd C:\bin

И вводим команду, но Enter не жмём!

flashing.cmd

6. Теперь важно попасть в промежуток времени, когда маршрутизатор будет готов принять нашу подготовленную прошивку. Вычислить достаточно просто - при включении мигнут все свтодиоды на нём, затем один раз мигнет индикатор порта куда подключен наш кабель от компьютера. Именно в этот момент необходимо нажать Enter в консоли с набранной командой. У меня получилось со второго раза ;)
7. Наблюдаем следующее в консоли:

Ответ от 192.168.1.1: число байт=32 время=4мс TTL=100
Статистика Ping для 192.168.1.1:
Пакетов: отправлено = 1, получено = 1, потеряно = 0 (0% потерь),
Приблизительное время приема-передачи в мс:
Минимальное = 4мсек, Максимальное = 4 мсек, Среднее = 4 мсек
*** Start Flashing ****
Успешная передача: 3092480 байт за 11 сs, 281134 байт/с
8. Ждем пару минут, после перепрошивки на роутере появится индикация статус, и он будет доступен по адресу 192.168.1.1. При первом обращении к веб-интерфейсу маршрутизатора, он запросит пароль. И сразу же закройте паролем беспроводную сеть.
9. Переводим роутер на русский язык. Проходим "Техобслуживание - Управление" в ниспадающем меня "выбор языка" ставим русский и нажимаем применить.
Так же рекомендую снять параметр "Службы - Службы - Системный журнал", чтобы в память маршрутизатора не писались события типа "пропало соединение с интернетом", "восстановлено соединение с интернетом", и параметр  "Службы - Службы - Счетчик трафика WAN", он мне не нужен так как безлимит. Потому как за пару месяцев закончиться память в маршрутизаторе и будут непонятные подвисы девайса.

Начало

Ну вот теперь я обзавелся своим собственным жильем и возникло большое количество проблем, к счастью решаемых. Как человек неглупый (по отзывам окружающих меня людей), хотелось бы вопросы, мною решаемые как то освещать. В первую очередь для себя, и если кому то моя записи помогут - буду только рад. С этой целью и появился этот блог.
Почему "умный дом"?
В любом жилище будь то офис, квартира, дом всегда присутствуют и актуальны такие инженерные изыски как электричество, вентиляция, компьютерная сеть, отопление, кондиционирование, водоснабжение, канализация, телевидение и много прочих интересных и нужных вещей, которые нужно и важно сделать правильно. Именно о таких вещах и будет идти речь и помощь людей мне не помещает, дабы не наступать на грабли на которые уже кто-то наступал.