- Sokolov blog
- Настройка IGMP proxy на FreeBSD
- Дейнекино
- Настройка FreeBSD для multicast-to-unicast прокси
- Как быстро настроить прокси 3proxy на своем сервере на FreeBSD?
- Содержание
- Вся инструкция очень кратко для продвинутых
- Выбор хостинга, где арендовать виртуальный сервер
- Регистрация на сайте хостинга Vultr
- Добавление платежной банковской карты в Vultr
- Создание виртуального сервера с FreeBSD в Vultr
- Проверка сервера на доступность. Удаление сервера
- Быстрая настройка сервера
- Настройка браузера на работу через прокси
- Настройка Telegram на работу через прокси
- Быстрая проверка работы прокси через командную строку Linux/UNIX/MacOS
- Дальнейший уход за сервером (основные команды)
- Улучшения статьи и скрипта freebsd-autodeploy
Sokolov blog
Настройка IGMP proxy на FreeBSD
Перепробовал всё, что можно, и routed и pimdd и xorp для мультикаста — ничего не работает. Кстати на xorp решил остановиться в будущем, многофункциональная программа, поможет во всем, но она, при запуске, рушила маршрутизацию quagga, поэтому запускать её на рабочей машине и эксперементировать не стал.
После запуска igmpproxy, заметил что стал идти трафик, вроде и хорошо что стал идти, а вроде и плохо что идет впустую — дальше машины на которой запущен никуда не уходит (на этот трафик никто не подписан). Ну по крайнее мере работает. Кстати работает только одна версия из трех что пробовал —http://lin.spb.ru/igmpproxy-freebsd-06122008.tar.gz (по имени, можно и в сети найти), она и компилируется на ура, и в архиве есть всё, что надо.
Пробовал на freebsd 7 stable и freebsd 7 svn.
Поток получаю через две машины, одна непосредственно воткнута точку обмена трафика (peer), другая — обслуживает наш сегмент нашей сети (router), ниже рабочие конфиги. Кстати, значения altnet, набраны избыточно, все сети, которые можно — надо будет убрать лишнее.
Заметил, что почти любая программа, и routed и xorp, когда у меня много вланов (6), почему то последний влан просто не видят, пришлось убрать из конфигов — иначе ругается.
Обязательно в ядро нужно добавить:
options MROUTING
для 7ки не нужно:
options PIM
Не забыть разрешить ipfw и pf трафик — igmp и udp на порт 1234 (у меня оба фаэрвола)
Дейнекино
Настройка FreeBSD для multicast-to-unicast прокси
Речь пойдет о небольшом тюнинге FreeBSD для нашей небольшой утилиты, позволяющей multicast-потоки (IPTV) отдавать зрителям по HTTP. Если планируется отдавать IPTV для 10-20 клиентов, то никакой специфичной настройки не нужно – все будет работать “из коробки”, но в том случае, если есть необходимость отгрузить полный 1Гбит/с, к вопросу следует подойти более внимательно.
Во-первых, нужен сервер с быстрой шиной и серверными Ethernet. Процессор не важен, на него нагрузки практически нет. Хорошие результаты мы получили на сервере Supermicro с материнской платой X8SIE-F с минимальным процессором (G6950). На борту – пара Intel® 82574L Gigabit Ethernet Controllers, что нам и нужно.
Один из интерфейсов включаем для приема multicast, второй у нас будет использоваться для отгрузки HTTP-потоков. Ставим на сервер FreeBSD 8.x и делаем следующее:
1) Включаем polling на интерфейсах в /etc/rc.conf:
2) Разрешаем драйверу em(4) использовать увеличенные очереди сетевых адаптеров (внимание – на desktop-ориентированных адаптерах может вызывать крэш при загрузке системы!). Для этого добавляем в /boot/loader.conf строки:
3) Добавляем в /etc/sysctl.conf строки:
4) Собираем ядро с опциями:
5) Увеличиваем в два раза размер буфера для relaying. У меня генерируется небольшой shell-скрипт для запуска relaying примерно вот такого вида:
Как быстро настроить прокси 3proxy на своем сервере на FreeBSD?
В этой статье рассмотрим, как быстро поднять свой собственный прокси-сервер.
Proxy позволяет перенаправлять трафик с вашего компьютера на сервер. Например, вы хотите открыть некий сайт через прокси. Тогда ваш компьютер обращается к прокси, прокси подключается к сайту, получает его содержимое и перенаправляет его на ваш компьютер. Таким образом, сайт видит внешний IP прокси-сервера, а не вашего компьютера, а если сайт заблокирован, например, Роскомнадзором или президентом Украины, то можно сделать прокси-сервер в другой стране, в которой нужные вам ресурсы не заблокированы, и тем самым получить к ним доступ в обход блокировок. Главное, чтобы из вашей страны не был заблокирован сам прокси-сервер.
Также вы сможете настроить, например, Telegram на работу через свой собственный прокси, который не будет периодически умирать, как большинство бесплатных прокси. Некоторые люди используют прокси для обхода региональных ограничений на покупку музыки или игр или для получения более низких цен на них.
Содержание
Вся инструкция очень кратко для продвинутых
Это краткое содержание инструкции для продвинутых пользователей; для новичков все очень подробно расписано ниже.
- Установить FreeBSD 11 на сервер
- Скачать и запустить скрипт, который настроит локаль, сделает bash шеллом рута, настроит автообновления системы, установит 3proxy, добавит его в автозапуск и добавит в него пользователя для доступа к прокси-серверу с авторизацией, а также выведет ифнормацию о сервере (IPv4, IPv6, порты HTTP и SOCKS прокси):
./freebsd-autodeploy.sh — справка по командам (параметрам) скрипта.
git pull — скачать обновления скрипта (если они есть).
Выбор хостинга, где арендовать виртуальный сервер
Определитесь с задачами прокси-сервера: куда вы собираетесь через него ходить?
Если это ресурсы, заблокированные в вашей стране, то нужен виртуальный сервер в другой стране. Например, вы живете на Украине и хотите иметь доступ к Яндексу, Вконтакте, Dr.Web, Kaspersky и другим заблокированным ресурсам. Тогда вам подойдет виртуальный сервер в России. По сравнению с, например, европейским сервером российский позволит определять ваш регион как «Россия» и выдавать соответствующий геозависимый контент сайта, а также скорость открытия сайтов будет чуть выше, т.к. магистральные каналы до российских серверов шире, чем до европейских.
Жители России могут арендовать сервер в Украине, но тогда вы попадете под различные украинские блокировки, поэтому лучше всего использовать европейский сервер, тогда вы сможете без проблем иметь доступ ко всем сайтам и месседжерам, в т.ч. получите беспроблемно работающий Telegram.
Выбираем хостинг, на котором арендуем виртуальный сервер.
Виртуальный сервер — это виртуальная машина, отдельная операционная система, работающая на хосте виртуализации, то есть на большом сервере с множеством виртуальных. Это позволяет нам платить только за нужное нам количество ресурсов. К ресурсам относят процессор, оеративную память и место на диске. Хостинг — это компания, предоставляющая услуги аренды сервера.
Вы можете встретить 2 основных типа виртуализации: OpenVZ и KVM. Про их отличия в интернете есть множество статей, нам нужен KVM, иначе не сможем запустить операционную систему FreeBSD. Нам будет достаточно любого минимального тарифа.
В качестве недорого хостинга в России рекомендую «Айхор». Он сочетает в себе низкие цены, тарифы с маленьким, но достаточным для прокси-серверов количеством ресурсов без переплаты за неиспользуемые ресурсы, и достаточно удобное управление. Ниже скриншот заказа виртуального сервера на их сайте после регистрации.
Совсем дешевые VPS за границей можно найти на сайте lowendbox.com. Обратите внимание, что обычно виртуализация OpenVZ или ее родственник Virtuozoo стоят дешевле, однако нам нужен KVM с возможностью установить FreeBSD 11 или просто произвольную операционную систему из своего образа, если FreeBSD не предлагается на выбор при автоматической настройке сервера (в таком случае берите образ FreeBSD *disk1.iso отсюда).
Мы же ниже подробно разберем весь процесс на примере недорого и надежного зарубежного хостинга Vultr.
Регистрация на сайте хостинга Vultr
- Заполняем открывшуюся форму:
- E-mail (электронная почта)
- Пароль, который должен удовлетворять следующим условиям:
- Не менее 10 символов
- Содержать хотя бы одну заглавную букву
- Содержать хотя бы одну строчную букву
- Содержать хотя бы одну цифру
- Пройти капчу
После перехода по ссылке из письма ввести пароль и нажать «Login» («Войти»)
Добавление платежной банковской карты в Vultr
После регистрации в Vultr баланс составляет 10 долларов, однако, чтобы ими воспользоваться, нужно привязать банковскую карту или пополнить счет. После того, как вы вошли в личный кабинет Vultr, перейдите в раздел «Billing» («Платежи») в левом меню и добавьте банковскую карту или пополните счет через Paypal. Заполните поля, как показано на картинке ниже. Обратите внимание, что указание адреса — это формальность, если вы его укажите неправильно, платеж все равно пройдет. Оплата за сервер почасовая.
Галка «I just want to link my credit card — 0.00$ deposit» означает, что будет выполнена просто привязка карты без списания выбранной суммы (по умолчанию ), а как закончатся подарочные 10$, деньги начнут списываться с привязанной карты. Если ее не отметить, то выбранная сумма будет списана сразу. Поставьте галку «I agree to the terms of service» («Согласен с условиями использования»).
После заполнения формы нажмите большую синюю кнопку «Link credit card» («Привязать банковскую карту»).
Создание виртуального сервера с FreeBSD в Vultr
После добавления банковской карты откроется страница создания нового виртуального сервера (в дальнейшем будем его называть прсото сервером). В любое другое время туда можно попасть из раздела «Servers»:
Теперь нужно выставить параметры создаваемого сервера.
- Выбираем дата-центр (страну), где будет расположен сервер. Когда начинал писать эту статью, из европейских локаций была доступна Франция, однако на момент снятия скриншота она временно недоступна. Выбирайте Нидерланды (Амстердам), Германию (Франкфурт) или Париж (Францию). Пинг до европейских серверов будет немного ниже, чем до американских, однако вы вряд ли заметите разницу при использовании прокси-сервера. У большинства операторов трафик в Японию (Tokyo, Japan) и Сингапур (Singapore) в обе сторону идет по маршруту Россия-Европа-США-Япония/Сингапур или Россия-Европа-Суэцкий канал-Япония/Сингапур, но у Ростелекома есть прямые каналы на Японию через Дальний Восток России (в ряде случаев трафик все равно ходит через США), что уменьшает пинг и увеличивает скорость. Я выберу Японию, но большинству пользователей рекомендую Европу или США.
- Выбираем операционную систему FreeBSD 11 x64
- Выбираем тариф. подойдет минимальный тариф за 2 с половиной долларов в месяц, если он недоступен, как на момент написания статьи, выбираем тариф за 5$ в месяц.
- Ставим галку «Enable IPv6» для включения IPv6 на виртуальном сервере (обратите внимание, что для работы прокси через IPv6 ваш интернет-провайдер все равно должен поддерживать IPv6). Если не поддерживает, то эта галка никак не помешает — будет работать через IPv4.
Внимание! Если вы не очень поняли этот пункт, то пропустите его.
Если вы на своем компьютере используете операционную систему Linux (или FreeBSD), то для удобного и безопасного захода на сервер вместо пароля можно использовать авторизацию по SSH-ключу. Сначала на компьютере создайте SSH-ключ, не от root, а от пользователя выполнив команду в терминале:
Затем выведите в терминал и скопируйте содержимое вашего публичного SSH-ключа:
Его и нужно добавить в Vultr как свой публичный SSH ключ, чтобы с компьютера заходить в управление сервером по SSH без пароля.
- В разделе «Servers» в списке своих серверов вы увидите, что на вновь созданный сервер устанавливается операционная система («Installing. «), а значит через несколько минут сервер будет готов к работе:
- Тогда желтая надпись «Installing» будет изменена на зеленую «Running». Подождите 5 минут и приступайте к настройке сервера.
После создания сервера вам на почту придет письмо с его IP адресом и, если не была настроена авторизация по SSH-ключам, паролем для пользователя root.
Проверка сервера на доступность. Удаление сервера
На сайте Роскомнадзора можно проверить, не заблокирован ли IP-адрес вашего сервера в России. Если заблокирован, то создавайте новые сервера (оплата за время использования, а не сразу за месяц), пока вам не попадется сервер с незаблокированным IP-адресом, а затем удалите все лишние ранее созданные сервера, как показано на скриншоте:
Быстрая настройка сервера
Вот мы и создали наш виртуальный сервер, поздравляю! Теперь пришло время подключиться к его командной строке и запустить скрипт для автоматической настройки прокси-сервера 3proxy. Скрипт freebsd-autodeploy был написан специально для этой статьи и операционной системы FreeBSD.
- В панели управления Vultr нажимаем на сервер и смотрим root-пароль:
Подключаемся к серверу по SSH — протоколу удаленного управления через командную строку. Если вы боитесь командной строки и думаете, что она неудобна, то в UNIX-подобных ОС она гораздо удобнее, чем в Windows, и прочитайте статью «Почему консоль, а не графический интерфейс?»
Если вы используете Linux/UNIX/MacOS, то подключиться к серверу по SSH очень просто. Для этого откройте терминал и выполните команду:
в которую подставьте IP своего сервера. В целом команда имеет следующий вид: ssh имя_пользователя@IP_или_домен_сервера -p порт . Если не указан порт, то используется стандартный — 22.
При первом подключении нужно ввести yes и нажать Enter. При вводе пароля он НЕ отображается никак! Скриншот:
Дальше у вас есть полноценный графический терминал, в котором можно мышью с помощью контекстного меню или клавишами Ctrl+Shift+C, Ctrl+Shift+V копировать и вставлять текст, а по средней кнопке мыши работает параллельный буфер обмена, вставляющий ранее выделенный текст. что очень сильно экономит время, т.к. не нужно копировать и вставлять.
Чтобы каждый раз не вводить пароль, вы можете скопировать свой локальный публичный SSH-ключ на сервер:
Если вы используете Windows, то для подключения к серверу по SSH воспользуйтесь бесплатной программой Putty (по удобству очень сильно уступает графическому терминалу в Linux):
На сервере последовательно выполняем команды ниже. Одна команда — одна строка. Копируем-вставляем команду в терминал и нажимаем Enter.
env ASSUME_ALWAYS_YES=yes pkg install -y pkg git nano (установим необходимые для работы пакеты)
cd (с помощью этой команды перейдем в домашнюю папку)
git clone -b v1.1-comss.ru https://github.com/mikhailnov/freebsd-autodeploy.git (скачаем код скрипта автонастройки)
cd freebsd-autodeploy (перейдем в папку freebsd-autodeploy)
./freebsd-autodeploy.sh 3proxy-setup (запустим скрипт автоматической настройки FreeBSD и 3proxy)
В процессе выполнения последней команды будут запрошены желаемое имя пользователя для авторизации на вашем личном прокси-сервере, а затем пароль для этого имени пользователя. Вам нужно их ввести и нажать Enter. В конце скрипт выдаст IPv4, IPv6 (при наличии) адреса прокси-сервера, порт HTTP(S) и SOCKSv5 прокси.
Порт HTTP(S)-прокси — это случайное число от 30000 до 70000. Так сделано для того, чтобы у всех читателей этой статьи не оказались одинаковые порты прокси, что могло бы упростить взлом, например, методом перебора пароля, когда заранее известен порт прокси-сервера. Порт SOCKS-прокси на 1 больше порта HTTP(S).
Ваш личный прокси-сервер готов к использованию.
Если выполнить команду ./freebsd-autodeploy.sh , то будет выведена справка по командам скрипта:
Обратите внимание, что если вы заново зайдете на сервер, то сначала нужно выполнить команду cd freebsd-autodeploy , чтобы перейти в папку, в которой находится скрипт. Затем можно выполнять указанные команды, например, ./freebsd-autodeploy.sh adduser для добавления нового пользователя прокси-сервера (с логином и паролем), ./freebsd-autodeploy.sh listusers для вывода списка имеющихся пользователей, ./freebsd-autodeploy.sh serverinfo для повторного вывода IP-адресов и портов прокси-сервера.
Если вы хотите обновить скрипт, установив его новую версию, совместимую с этой инструкцией, то выполните команду git pull .
Настройка браузера на работу через прокси
В настройках Firefox можно указать прокси, чтобы все сайты открывались через него. Достаточно указать только SOCKS-прокси.
С помощью специальных расширений, например FoxyProxy для Chromium и FoxyProxy для Firefox можно настроить так, чтобы через прокси шли запросы только к определенным сайтам, а ко всем остальным трафик шел напрямую. Это позволит и скорость интернета сохранить, и получить доступ к заблокированным сайтам, внеся их в список FoxyProxy для работы через прокси.
На сайтах 2ip.ru или yandex.ru/internet можно посмотреть свой IP-адрес: если он свопадает с IP прокси-сервера, то это значит, что все настроено правильно.
Настройка Telegram на работу через прокси
Быстрая проверка работы прокси через командную строку Linux/UNIX/MacOS
С помощью командной строки UNIX-подобных ОС можно быстро проверить работу прокси, для этого с любого другого сервера или компьютера выполните в терминале:
env http_proxy=»имя_пользователя:пароль@IP-адрес:порт» curl http://wtfismyip.com/text
В ответ вы должны увидеть IP-адрес своего прокси-сервера. Если выполнить просто curl http://wtfismyip.com/text , то вы увидите свой IP без прокси. Обратите внимание, что работа этих команд зависит от работоспособности стороннего ресурса wtfismyip.com.
Дальнейший уход за сервером (основные команды)
Логи прокси-сервера лежат в /var/log/3proxy/. Автоматическое архивирование логов раз в 30 дней. Логируется всё, кто, когда и куда ходит через прокси-сервер.
Обновление системы (установка обновлений, в т.ч. закрывающих уязвимости безопасности): pkg update; pkg upgrade
Наш скрипт сам настраивает автообновления системы раз в час, смотрите /usr/local/bin/system-autoupdate и вызов этого скрипта в 0 минут каждого часа в /etc/crontab. Это сделано для того, чтобы поддерживать безопасность сервера без вмешательства пользователя. В Linux/FreeBSD не нужно перезагружать систему для установки обновлений.
3proxy запускается автоматически, это настроено в файле /etc/rc.conf. Также можно перезапустить сервер через панельуgравления хостинга, но так лучше не делать, т.к. это эквивалентно отключению электропитания компьютера, в результате чего может произойти порча файловой системы.
Временное выключение 3proxy (до перезагрузки): service 3proxy stop
Временное включение 3proxy (до перезагрузки): service 3proxy start
Перезапуск 3proxy (остановить и запустить): service 3proxy restart
Конфиг (текстовый концигурационный файл) 3proxy расположен по адресу /usr/local/etc/3proxy.cfg, файл со списком пользователей — /usr/local/etc/3proxy.cfg.auth
Для смены стандартного порта SSH (защита от перебора паролей ботами):
В строке Port убрать знак решетки # в начале при наличии такового (то есть раскомментировать строку), 22 заменить на любой другой порт, кроме тех, что используются для прокси-сервера. Ctrl+O для сохранения и Ctrl+X для выхода из nano. Ctrl+W для поиска по тексту файла.
Перезапустить сервер SSH: service sshd restart
Если вы самостоятельно настроили фаервол, то не забудьте предварительно открыть новый порт.
Если в результате ошибки в настройках вы не можете подключиться к серверу по SSH, то попробуйте открыть браузерную консоль, эмулирующую прямой доступ к экрану сервера, как если бы был подключен монитор:
Улучшения статьи и скрипта freebsd-autodeploy
Скрипт freebsd-autodeploy был написан для использования в этой статье, однако, возможно, в будущем его функционал будет расширен, например, для автоматической настройки не только proxy, но и VPN и защиты сервера с помощью фаервола. Разработка ведется на Github. Так как в статье предлагается брать исходный код скрипта прямо с Github, для того, чтобы пользователи всегда получали именно ту версию, которая совместима с этой инструкцией, создан отдельный бранч v1.1-comss.ru, в рамках которого в скрипт могут вноситься незначительные доработки и исправления ошибок (о которых вы можете написать в комментариях к этой статье) с сохранением совместимости всего функционала с тем, что написано в этой статье. В бранче master ведется дальнейшая разработка скрипта под свободной лицензией GPLv3. В папке doc/ в дереве исходных кодов находится текст этой статьи. Если у вас есть правки к скрипту или статье, пишите в комментариях или присылайте их пулл-реквестами на Github. Спасибо.
Скрипт автоматически настраивает ОС FreeBSD версии 11 (работа на других версиях не проверялась, но должно работать): настраивает русскую UTF-8 локаль, делает bash шеллом пользователя root, настраивает автоматические обновления системы раз в час для оперативного закрытия уязвимостей, устанавливает и настраивает прокси-сервер 3proxy из репозитория. Пока не хватает автоматической настройки фаервола, смены порта SSH и fail2ban для дополнительной безопасности. FreeBSD была выбрана потому, что в репозиториях дистрибутивов Linux нет 3proxy, да и настройка Линукса заезженная тема, в отличие от FreeBSD.
Работа скрипта проверена на образах FreeBSD на хостингах «Айхор», Vultr, DigitalOcean, а также официальном установочном образе FreeBSD 11.1.