White IP HOWTO

Материал из Wiki - thelogin.ru
Перейти к: навигация, поиск

Содержание

Постановка задачи

Имеем: Провайдера, предоставляющего серые IP (на примере «Новотелекома»).
Требуется: Иметь белый IP (слать почту, качать с файлообменников, хостить персональный сайт/FTP/IRC и т.п.).

Решение

Описание технологии

Технология простая: берём сервер с внешним IP где-нибудь в Интернете и делаем VPN (виртуальную частную сеть) между ним и домашним компьютером. После чего устанавливаем на тот сервер прокси, пробрасываем порты и радуемся внешнему IP, причём (актуально для помегабайтных тарифов), защищённого от паразитного трафика, вызванного SYN и UDP-флудом, сканированием портов и т.п. От паразитного трафика на открытых TCP-портах спасения нет.

Заказываем сервер

В качестве сервера я использую VPS (виртуальный сервер) от firstvds.ru. За 149 рублей в месяц получаем белый IP, процессор 300 мегагерц (для шлюзования трафика хватит с лихвой) и гигабайт свободного места на диске, а так же отзывчивый саппорт (к сожалению, платный, но если возьмёте сервер с моей реферальной ссылкой, могу помочь советом бесплатно). При заказе сервера выбираем шаблон debian-4.0-i386-minimal. Внимательно прочитайте письмо об открытии VPS — там содержится важная информация, особенно если вы не знаете что такое ssh и ни разу не управляли удалённым сервером. Если собираетесь много качать, желательно будет докупить неограниченный трафик (100 рублей в месяц) — в минимальный тариф включено всего 25 гигабайт.

Пишем в саппорт

Заходим на страницу поддержки и создаём тему с приблизительно следующим содержанием:

 Здравствуйте  
 Активизируйте, пожалуйста, TUN/TAP-устройства для сервера {IP вашего сервера}, а так же включите NAT

Предоставьте поддержке выбрать стоимость вопроса, мне они сняли за него 0 рублей. Как только ответят, перезагрузите сервер из VDSManager'а.

Допиливаем шаблон

Что мне не понравилось в шаблоне debian-4.0-i386-minimal так это то, что отсутствуют русские локали. Логинимся как root и выполняем:
apt-get update && apt-get upgrade
Таким образом мы приведём кэш APT (мэнеджера пакетов) в актуальное состояние. Теперь можно поставить некоторые нужные пакеты:
apt-get install mc locales
. На все вопросы отвечаем Y. После установки делаем:
mcedit /etc/environment
Стираем всё, что есть в файле и вписываем:
LANG="ru_RU.UTF-8"
Сохраняется файл клавишей F2, покидаем редактор клавишей F10. Так же редактируем /etc/locale.gen — туда пишем:
ru_RU.UTF-8 UTF-8
После чего выполняем:
locale-gen
После перелогинивания система станет русской.

Устанавливаем сервер VPN, настраиваем клиент VPN

По этой теме написано огромное количество HOWTO, Google в помощь :) Я настраивал по вот этому.

Раздаём инет

Так как маскарад на большинстве OpenVZ-машин у них не включен, да и не нужен он тут, хватит обычного SNAT:
iptables -t nat -A POSTROUTING -j SNAT -o venet0 --to-source $ВНЕШНИЙ_IP_СЕРВЕРА

Мапим порты

Мапим порты виртуального сервера на домашний:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.8.0.6:80
Думаю, тут всё понятно.

Решение проблем с сервером за VPN, когда маршрут через VPN не дефолтный

Предположим вы решили дефолтным маршрутом использовать обычный интернет от вашего провайдера (то есть опция push "redirect-gateway def1" в конфиге сервера OpenVPN осталась закомментированной). Тут возникают проблемы — DNAT не изменяет адрес источника пакета. Поэтому пакеты через VPN приходят к нам с IP-адресом отправителя и, соответственно, на домашнем сервере маршрутизируются не через VPN, а через внешний интерфейс и отбрасываются отправителем (то есть соединение установить не получается). Под *nix решается проблема так:

  • Ставим пакет iproute2
  • Добавляем в /etc/iproute2/rt_tables таблицу маршрутизации, например, 128 VPN.
  • Добавляем в конфиг клиента openvpn up /etc/openvpn/up
  • Пишем скрипт /etc/openvpn/up:
#!/bin/bash
ip route add 0/0 dev tun0 src 10.8.0.6 table VPN
ip route prepend default via 10.8.0.6 table VPN
ip rule add from 10.8.0.6 table VPN

После перезапуска openvpn всё должно работать.

Под Windows извращённое решение описано здесь.

Заключение

Получить внешний IP можно без слёзных звонков в саппорт НТК. Достаточно всего лишь иметь прямые руки, желание и немного денег :)

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты
Тэги