Немного о компьютере

Как настроить socks5 прокси для сокрытия IP адреса. Прозрачное Socks5 проксирование приложений в linux Что такое SOCKS proxy server

С vpnki вы можете иметь доступ к домашней сети через прокси сервер . Точнее говоря, мы используем два прокси сервера:

  • для HTTP соединений - http proxy
  • для любых соединений по протоколу TCP - SOCKS5 proxy

С помощью http прокси вы сможете иметь доступ из сети Интернет к веб-интерфейсу своего домашнего устройства (сервера, видеорегистратора, видеокамеры и т.д.), а с помощью SOCKS5 прокси вы сможете иметь доступ к домашним устройствам по таким протоколам как ssh и VNC (впрочем и по многим другим, которые используют протокол TCP).

Доступ через прокси сервер осуществляется при наличии:

  • подключенного к системе vpn туннеля от вашего устройства по любому из протоколов (PPTP, L2TP, L2TP/IPsec, OpenVPN)
  • наличия галочки (об использовании proxy) на вашей личной странице vpnki
  • настроенного клиентского программного обеспечения (браузер, ssh или VNC клиент)

Используемый логин/пароль, который вы будете вводить в момент подключения через прокси НЕ должен быть подключен через VPN Proxy-cоединения без авторизации приниматься не будут.

Перед использованием уточните может ли ваше клиентское программное обеспечение использовать proxy сервер с авторизацией.

Краткая инструкция по использованию HTTP и SOCKS5 proxy соединений

1. При установленной галочке на личной странице системы vpnki вам будут выделены два порта TCP:

  • один для http proxy
  • второй для SOCKS5 proxy

Запишите их и используйте при настройке своего клиентского ПО

2. Настройка браузера (в общем виде подходит для любого браузера)

2.1. Войдите в настройки браузера и выберите там пункт похожий на "Сетевые настройки"

2.2. Перейдите в настройки соединения с Интернет

2.3. Укажите в качестве http прокси - msk.сайт и порт, выданный вам на личной странице для http соединений (в данном примере 54505)

2.4. Наберите в строке браузера адрес веб-интерфейса в домашней сети

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

Таким образом, с выполненными ранее настройками браузера вы получите доступ к домашней сети, но не сможете обратиться к любому сайту в Интернете.

В такой ситуации есть два выхода:

  • Использовать два браузера (один с настройками прокси для доступа к домашней сети, второй - без настроек прокси для доступа к всем ресурсам Интернет), но это не очень удобно
  • Использовать дополнительный плагин для браузера, в котором правила использования прокси пишутся более гибко. Таким плагином может являться плагин AutoProxy для Firefox

2.6. Плагин AutoProxy для Firefox. В нем вам необходимо: а) указать прокси сервер - msk.... б) Создать группу правил и сами правила, указав только те адреса, соединения с которыми должны осуществляться через прокси сервер. Все остальные соединения будут осуществляться без использования прокси. Пример правил представлен на рисунке ниже. В данном случае, в группе правил vpnki есть три правила (адреса домашней сети) для которых будет использоваться прокси соедиение. Указание адресов в правилах начинается с символа ||

3. Настройки VNC клиента

3.2. Настройте VNC Viewer: укажите в настройках Proxy - msk.сайт и порт, выданный вам для SOCKS5 соединений на личной странице vpnki

3.3. Создайте соединение к своему устройству и запустите его

ДОПОЛНИТЕЛЬНО ПО ТЕМЕ

  • Немного более подробно про IP адреса можно прочитать на нашем сайте
  • Про выход в Интернет через VPN и центральный офис можно
  • Про удалённый доступ к компьютеру можно почитать на нашем сайте
  • Про VPN и протоколы можно почитать

Опубликовали инструкцию по обходу возможной блокировки Telegram - популярного мессенджера, разработанного командой Павла Дурова. В статье описывается способ обхода, который основывается на использовании сетевого протокола SOCKS5. Этот протокол незаметно пересылает пакеты данных от клиента к серверу через прокси-сервер.

SOCKS - сетевой протокол, который позволяет клиент-серверным приложениям прозрачно (незаметно для них) использовать сервисы за межсетевыми экранами (фаерволами). Опция уже доступна в Telegram Desktop и Mac, а мобильные клиенты получат её в ближайшем обновлении.

Совет: включите в настройках опцию автоматического обновления.

В первую очередь включите SOCKS5 до начала блокировки.

Если вы по каким-то причинам не успеете это сделать, то придётся туго, т.к. из российских Google Play и AppStore, клиенты Telegram, скорее всего, исчезнут. Здесь помогут Vpn и Tor, через которые можно будет скачать Telegram в американских магазинах. Но не обольщайтесь - впереди закон по запрету средств обхода блокировок, принятый в первом чтении в Госдуме РФ.

Совет: в настройках Android разрешите скачивание обновлений не из официального магазина, и скачайте обновление Telegram с сайта мессенджера telegram.org .

Настройка SOCKS 5

Приводим инструкцию на русском языке:

1) Зайдите в настройки настольного Telegram и нажмите «По умолчанию (сейчас:TCP)».

2) Переключите в меню «Тип соединения» на «TCP socks5-прокси»

3) Введите адрес прокси сервера (например, 192.254.68.37), соответствующий порт (1080). Лучше использовать прокси-адреса Америки, Германии, Швеции или Англии. Затем ставите галочку «Использовать IPv6» и сохраняете.

Как найти прокси-сервера?

Просто перейдите по следующим ссылкам:

Только берите сервер для SOCKS5, не перепутайте с HTTP.

Возможна настройка из этого бесплатного списка (socks - sockslist.net).

Теперь по умолчанию ваш Telegram будет соединяться через выбранный прокси-сервер.

Дополнение: Если возникнут проблемы с подключением, нужно настроить брандмауэр Windows - добавить в разрешенные приложения Telegram. Сделать это просто, но у вас должны быть права администратора.

  • Войдите в «Панель управления» и перейдите в «Брандмауэр Windows».
  • Нажмите на пункт «Разрешения взаимодействия с приложениями или компонентами...». Откроется окно с большим количеством программ, но вряд ли вы там найдете Telegram. Поэтому нужно будет его туда добавить.
  • Нажмите на «Изменить параметры», а затем на нижнюю кнопку «Разрешить другое приложение».
  • Во всплывающем окне «Добавление приложение» через Обзор добавьте Telegram.
  • Всё. Снова настраивайте соединение с прокси-сервером.

Анонимность в сети — тема не новая. И вы наверняка устанавливали к себе на комп прогу типа A4Proxy, SocksChain
и им подобные. Лично я не люблю, когда для работы с проксями нужна какая-то отдельная прога. Во-первых
некрасиво, когда много окон на панели задач или значков в трее, во-вторых проги эти требуют кряков, а их
искать лень 🙂 Поэтому я и написал классы для поддержки SOCKS5-серверов, которые я теперь могу заюзать
в какой-нибудь своей проге. И вот теперь хочу всем рассказать, как это делать.

То, к каким серверам и по каким протоколам мы может обращаться через прокси, зависит от
типа этого прокси, т. е. протокола, по которому мы обращаемся к нему. Типов проксей существует нескольно:
HTTP-proxies, SOCKS4, SOCKS5, SSL CONNECT и т.д. HTTP-proxy наиболее распространены, их легче всего найти и инете, но работают они только с HTTP, к тому
же могут вставлять в заголовки запроса адрес клиента, то есть быть
не анонимными. Протокол SOCKS наиболее примечателен тем, что он инкапсулирует протоколы не прикладного, а
транспортного уровня, т.е. TCP/IP и UDP/IP. Поскольку только по этим протоколам возможна работа в Сети,
через SOCKS можно работать с любыми серверами, в том числе и такими же SOCKS и,
таким образом, организовывать цепочки SOCKS-серверов. По этой же причине ВСЕ SOCKS-сервера анонимны — невозможно
на уровне TCP/IP и UDP/IP передать дополнительную информацию, не нарушив работу вышестоящего
протокола.

Мы остановимся на протоколе SOCKS5. Его описание лежит в
. Для SOCKS5 стандартным является порт 1080, но, впрочем, на этот
стандарт никто особого внимания не обращает. Каждое SOCKS-соединение проходит стадию аутентификации, если она требуется, затем клиент
посылает команду. Команда может быть одна из трех:
CONNECT — исходящее TCP-соединение с указанным адресом. Использование этой команды мы рассмотрим
подробнее, так как она нужна наиболее часто. BIND — открыть порт (сервер выбирает порт и посылает клиенту адрес и порт) и принять TCP соединение.
Серверу может понадобится знать, кто будет соннектиться. На этот случай нужно передать эту инфу. UDP ASSOCIATE — открыть UDP-порт (сервер выбирает порт). Данные, предназначенные для конечного
хоста и данные от него идут тоже по UDP. Данные в SOCKS5 передаются в бинарном виде, а не в текстовом, как в HTTP, SMTP, POP3 и др.

Описание протокола

Сконнектившись с сервером, клиент шлет пакет, в котором указана версия протокола и поддерживаемые
методы аутентификации. Этот пакет имеет следующий формат:

BYTE Version;
BYTE nMethods;
BYTE methods

Версия должна быть 5. Каждый элемент methods определяет не только метод аутентификации, но и способ шифрования данных,
если оно используется. Из этих методов сервер выбирает один. Можно указывать любое количество методов, но, если сервер не требует аутентификации, то никакие методы,
кроме 0x00 (не использовать ни аутентификацию, ни шифрование) не потребуются. В ответ сервер шлет пакет следующего содержания:

BYTE Version
BYTE method,

где method — выбранный сервером метод или 0xFF (ни один из предложенных методов не поддерживается). Если метод 0x00, то можно сразу посылать команду.

Пакет команды имеет следующий формат:

BYTE Version; // 5
BYTE Cmd ; // 1 — CONNECT
BYTE Reserved; // 0

BYTE addr;
WORD port; // Байты в сетевом порядке, т. е. htons(Port);

Если используется доменное имя, то сначала идет байт длины, а затем строка без завершающего нуля.

Сервер посылает ответ:

BYTE Version; // 5
BYTE Rep ; // 0 — Ok
BYTE Reserved; // 0
BYTE AType; // 1 — IPv4; 3 — domain name; 4 — IPv6
BYTE addr;
WORD port;

Здесь адрес и порт — это адрес и порт, видимые хосту. Возвращается, как правило, IP-адрес, а не доменное
имя. Этот адрес может отличаться от того, по которому мы обращаемся к серверу, особенно, если сервер
используется по назначению, т. е. для выхода из локалки в инет. Если Rep не ноль, т. е. ошибка, то закрываем соединение, в
противном случае работаем с хостом. Мы не используем шифрование, поэтому просто передаем и принимаем данные, как при обычном соединении. Если одна из сторон закроет соединение с socks-сервером, то он сразу же закроет соединение с другой
стороной. Одно socks-соединение инкапсулирует одно TCP-соединение или попытку его установления,
так что если использовать socks для анонимного сканирования портов, то эта
процедура может занять пол дня.

Кодинг

Поскольку socks инкапсулирует TCP, целесообразно сделать класс socks-соединения производным от
класса сокета, но MFCшный CSocket не подходит, т.к. у него все методы
не виртуальные. Напишем свой класс сокета и назовем его, скажем, CTSocket

#include

class CTSocket
{
public:





virtual void Close();
virtual unsigned long GetHost(); // Узнать свой адрес. Это тоже может понадобиться.

private:
SOCKET sock;
};

Реализацию этого класса каждый сможет написать сам (кто не знает как, RTFM MSDN), так что не буду ее
рассматривать. Теперь напишем класс socks-соединения. Он будет поддерживать только самый необходимый набор
функций: поддерживается только команда CONNECT, не поддерживается аутентификация и SOCKS-сервер
задается только IP-адресом, а не доменным именем. Больше в одной статье не поместится.

Class CSocksSocket: public CTSocket
{
public:
virtual BOOL CreateSocket();
virtual BOOL Connect(unsigned long ip, unsigned short port);
virtual BOOL Connect(LPCSTR name, unsigned short port);
virtual int Send(const char* str, int len);
virtual int Recv(char* buf, int max);
virtual BOOL Close();
virtual unsigned long GetHost();

CTSocket* pSocket;
unsigned long socks_ip;
unsigned short socks_port;

private:
char buffer; // Такого размера точно хватит
unsigned long l_ip; // Адрес, возвращаемый функцией
GetHost()

};

// Реализация
BOOL CSocksSocket::CreateSocket()
{
if (!pSocket->CreateSocket()) return FALSE;
if (!pSocket->Connect(socks_ip, socks_port)) return FALSE;
buffer = 5; // Ver
buffer = 1; // 1 method
buffer = 0; // no auth
pSocket->Send(buffer, 3);
int n = pSocket->Recv(buffer, 2);
if (n != 2) return FALSE;
method 0 not supported
return TRUE;
}

BOOL CSocksSocket::Connect(unsigned long ip, unsigned short port)
{
buffer = 5; // Ver
buffer = 1; // CONNECT
buffer = 0; // Reserved
buffer = 1; // IPv4
*((unsigned long*)(buffer + 4)) = ip;
*((unsigned short*)(buffer + 8)) = port;
pSocket->Send(buffer, 10);
int n = pSocket->Recv(buffer, 10);
if (n != 10) return FALSE;
if (buffer != 0) return FALSE; //
Can’t connect

return TRUE;
}

BOOL CSocksSocket::Connect(LPCSTR name, unsigned short port)
{
buffer = 5;
buffer = 1;
buffer = 0;
buffer = 3; // Domain name
int m = strlen(name);
buffer = m; //
Length byte
memcpy(buffer+5, name, m); //
Копируем строку без завершающего нуля
*((unsigned short*)(buffer + 5 + m)) = port;
pSocket->Send(buffer, m + 7);
int n = pSocket->Recv(buffer, 10);
if (n != 10) return FALSE;
if (buffer != 0) return FALSE;
if (buffer != 1) return FALSE; //
Будем требовать, чтобы нам сказали IP, а не что-нибудь другое.
l_ip = *((unsigned long*)(buffer + 4));
return TRUE;
}

int CSocksSocket::Send(const char* str, int len)
{
return pSocket->Send(str, len);
}

int CSocksSocket::Recv(char* buf, int max)
{
return pScoket->Recv(buf, max);
}

void CSocksSocket::Close()
{
pSocket->Close();
}

unsigned long CSocksSocket::GetHost()
{
return l_ip;
}

// Ну, а теперь тестовая прога
void main()
{
WSADATA wsadata;
CTSocket tsock;
CSocksSocket ssock(&tsock);

WSAStartup(MAKEWORD(2,2), &wsadata);

ssock.socks_ip = inet_addr(«10.10.10.10»); // Впишите сюда нужный адрес
ssock.socks_port = 1080; //
Впишите сюда порт

if (!ssock.CreateSocket()) return; // Can’t connect to socks
// or auth required
if (!ssock.Connect(«www.mail.ru», htons(80))) return; //
www.mail.ru
// is inaccessible
LPSTR q = «HEAD / HTTP/1.1\xD\xAHost: www.mail.ru:80\xD\xAUser-Agent: xakep\xD\xA\xD\xA»;
ssock.Send(q, strlen(q));

char buf;
int n = ssock.Recv(buf, 1000);
buf[n] = 0;
printf("%s", buf);

Носки бывают чрезвычайно полезны. Сейчас мы расскажем, как правильно настроить их на роутере MikroTik. Итак, поговорим о SOCKS ?

Предисловие

SOCKS (SOCKet Secure) – это сетевой протокол, с помощью которого можно обеспечивать прохождение TCP пакетов в обход блокирующих правил Firewall’а. Это реализуется за счёт proxy-сервера (также называют SOCKS-сервер), который контролирует подключение внутренних клиентов и их права на доступ к внешним ресурсам или же наоборот – внешних клиентов, к ресурсам внутри сети. SOCKS работает на сеансовом уровне, поэтому с помощью него можно проксировать FTP, HTTP, Telnet и другие верхнеуровневые протоколы. В то время как HTTP-прокси, как правило, позволяет проксировать только GET и POST запросы.

Установление соединения

Когда клиент хочет получить доступ к внешнему ресурсу, который блокирует Firewall, то соединение происходит следующим образом:

  1. Клиент подключается к proxy-серверу (обычно используется TCP порт 1080);
  2. Сервер проверяет список доступа и выясняет, есть ли у клиента права на доступ к внешним ресурсам;
  3. Если клиент имеет такие права, то proxy-сервер пересылает пакет на внешний ресурс, к которому хочет получить доступ клиент;
  4. Сервер создаёт сессию между клиентом и внешним ресурсом и между ними начинается обмен пакетами верхнеуровневых протоколов. После установления соединения можно передавать и UDP пакеты.

В настоящее время, MikroTik поддерживает SOCKS версии 4 при указании внешнего ресурса он понимает только IP-адрес. Версия SOCKS4a – может резолвить доменные имена внешних ресурсов. Более поздняя версия протокола – SOCKS5 включает расширенную поддержку аутентификации, подключение по UDP и IPv6.

На сегодняшний день, протокол SOCKS5 пока не поддерживается на устройствах MikroTik. Хотя пользователи очень просят разработчиков включить поддержку SOCKS5 в новые релизы RouterOS вот уже 8 лет. Поэтому при работе с SOCKS совместно с MikroTik, клиент также должен иметь 4 версию.

Необходимо очень тщательно настроить Firewall"ьные правила и список доступа SOCKS чтобы исключить нежелательный доступ извне. Как правило, скомпрометированные через уязвимости SOCKS устройства, используются для рассылки спама и фишинговых писем.

Перейдём к настройкам SOCKS-сервера на MikroTik:

Параметры настройки через WinBox

Параметры настройки SOCKS сервера в WinBox находятся в IP Socks :

Как только вы поставите галочку напротив Enabled сервер станет активным. Далее, необходимо настроить списки доступа, для этого нажимаем на кнопку Access :


Активные SOCKS сессии, проходящие через сервер можно отслеживать на вкладке Connections

Параметры настройки через Termial

Для того, чтобы настроить SOCKS через терминал нужно также сначала настроить параметры сервера. Настройка проводится через команду ip socks set , доступы следующие параметры:

  • enabled - включает функционал SOCKS proxy-сервера (yes - включен, no - выключен);
  • port - номер порта, на котором сервер будет слушать SOCKS запросы. По умолчанию - 1080
  • connection-idle-timeout - время, через которое будут сброшены неактивные сессии (по умолчанию – 2 минуты (2m ));
  • max-connections - максимальное число одновременных подключений (по умолчанию - 200 )

Посмотреть текущие или настроенные параметры можно командой:

  • action - действие, которое будет предпринято при соответствии критериев данного правила:
    • allow - разрешить прохождение трафика по данному правилу;
    • deny - запретить прохождение трафика по данному правилу.
  • dst-address - адрес сервера назначения;
  • dst-port - TCP порт назначения, на котором удаленный сервер слушает SOCKS
  • src-address - адрес источника пакетов (клиент);
  • src-port - TCP порт источника
Практическое применение

Допустим злой сисадмин заблокировал наш любимый сайт, выяснил адрес и забанил.


Но одному нашему сотруднику обязательно нужно иметь доступ к данному ресурсу. Поэтому сисадмин открывает активирует SOCKS сервер и настраивает список доступа.


В качестве адреса клиента указывается IP адрес компьютера сотрудника, которому нужно открыть доступ (в нашем случае 192.168.11.48 ), в качестве порта источника – любой TCP порт от 1024 до 65535..

Та же самая настройка через терминал выглядит следующим образом:

Ip socks> set enabled=yes ip socks access> add src-address=192.168.11.48 src-port=1024-65535 dst-address=212.193.249.136 dst-port=80 \ \... action=allow

Готово, теперь дело за клиентом, который должен настроить сотрудник. Покажем настройку на примере браузера Google Chrome . Открываем Settings Advanced Confidentiality and Security , крутим в самый низ до пункта System и выбираем Proxy settings . В появившемся окне выбираем LAN settings → ставим галку напротив Use a proxy server for your LAN и заходим в Advanced . В появившемся окне вбиваем параметры нашего SOCKS сервера в строку Socks (в нашем случае 192.168.11.1 и порт 1080 ) и применяем настройки:


Теперь обновляем страничку сайт и ву-а-ля, всё заработало! В окне Connections видны соединения с нашего компьютера до IP адреса сайт.



Послесловие

Данная статья носит исключительно образовательный характер и не ставит своей целью научить кого-либо обходить правила Firewall. Протокол SOCKS 4 устарел, не поддерживает аутентификацию и не может резолвить доменные адреса. В целях безопасности, мы не рекомендуем использовать этот протокол вообще и в том числе – настраивать его на MikroTik.

По умолчанию – сервер SOCKS на роутерах MikroTik отключен. Если Вы обнаружили, что он активирован, то это может быть признаком того, что Ваш роутер был скомпрометирован злоумышленниками. Об этом мы подробнее расскажем в следующих статьях.

Полезна ли Вам эта статья?

Пожалуйста, расскажите почему?

Нам жаль, что статья не была полезна для вас:(Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!

На сегодняшний день существует несколько основных технологий, целью которых является сокрытие IP-адреса. В данной статье у вас будет возможность ознакомиться одним из них, а именно с VPN.

В первую очередь для выполнения этого процесса необходимо узнать не только личный IP-адрес, но и серверный адрес DNS. В принципе, в получении данной информации нет каких-либо трудностей, достаточно, к примеру, посетить сайт www.whoer.net.


Даже если вы захотите изменить данные своего IP-адреса, недостаточно использовать VPN или Socks, так как сегодня существует масса технологий, с помощью которых можно без проблем его выявить. Итак, давайте вернемся к нашей теме и более детально изучим способ VPN.

VPN (Virtual Private Network, виртуальная частная сеть)


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

Главное, что при этом им не нужны будут какие-то настройки. В случае обращения одного из них к удаленному непосредственному сервису будет выполнено создание на компьютере специального так называемого GRE-пакета. Он же, в свою очередь, будет отправлен в зашифрованном виде VPN-серверу.


Действие VPN-сервера заключается в том, что он при получении пакета произведет его расшифровку, разборку и выполнит необходимое действие от своего лица. После получения ответа от ресурса удаленного типа, он поместит его непосредственно в GRE-пакет. После этого произведет зашифровку и отправку клиенту.

Необходимо помнить о том, что для повышения степени безопасности необходимо систематическое шифрование данных, которые передаются. Немаловажно то, что посредством использования MPPE (Microsoft Point-to-Point Encryption) может быть выполнена зашифровка PPTP-трафика.

Он представляет собой протокол Майкрософта. Немаловажно то, что первые версии были не просто непрактичными, но и систематически подвергались взломам, однако и на сегодняшний день особой эффективностью они не славятся. Все дело в том, что современные версии Майкрософта попросту не выполняют анализ каких-либо неустоек.

OpenVPN представляет собой свободную технологическую реализацию VPN, организация которой производится с учетом интернетовского общепринятого протокольного стека TCP/IP. Таким образом, можно полноценно быть уверенным в том, что соединение будет выполнено и с теми провайдерами, которые собственно не поддерживают необходимый PPTP.

В том числе деятельность OpenVPN производится в случае отсутствия у вас личного IP-адреса. Эта особенность является отличительной, к примеру, от PPTP, которому в обязательном порядке необходимы сразу две сетевые сессии.

Похожие публикации