Как стать автором
Обновить

Простейший обход И-нет блокировок с обеих сторон

Время на прочтение3 мин
Количество просмотров16K
C некоторых пор к задачам по обходу блокировок по IP страны добавились проблемы работы специализированного лицензионного софта. Последние не всегда решаются с помощью VPN (в переводе виртуальной частной сети [предприятия]). Кроме того, на провайдеров VPN, особенно предоставляющих бесплатный сервис, сложно полагаться в вопросах конфиденциальности. Поэтому разумно рассмотреть ручное решение с помощью удаленной виртуальной машины (VPS), которая имеет доступ в Интернет из страны её физического расположения.

Автор в свое время перебрал несколько вариантов и остановился на создании локальной сети из трех машин. Здесь будет изложен наипростейший вариант решения наглядным способом. Нужно собрать и сконфигурить локальную сеть в простейшей конфигурации, например, такую:
         +-----------+              +-------------+      +-----------------+
И-нет <->| VPS(Linux)|<-ssh tунель->| Mocт(Linux) |<-ЛС->| клиент(Windows) |
         +-----------+              +-------------+      +-----------------+

Ресурсы:
— Домашний и-нет (LAN)
— VPS сервер, арендованный в другой стране
— “Мост” — дополнительный компьютер с двумя сетевыми картами.
Для “Моста” с двумя сетевыми гнёздами можно использовать какой-нибудь старый компьютер и переходник USB-LAN. Там ставим Линукс семейства Dеbian и получаем машину с двумя сетевыми интерфейсами. Первый сетевой интерфейс(eth0) должен выходить в домашний Интернет, а второй(eth1) в локальную сеть с клиентской машиной (используемые в статье имена eth0/eth1 на практике будут другими).

Теперь надо арендовать VPS. Какой и как платить – каждый решает сам. Лучше купить, на бесплатных серверах обязательно возникают какие-либо сложности. Минимальной конфигурации за $6-$7 хватает. После покупки обычно предоставляется web-страница, где можно получить IP адрес вашего сервера и задать пароль пользователя root. Следует добавить, что решение может быть испробовано для любого удаленного Линукс сервера любой конфигурации, к которому вы имеете sudo доступ, например, на работе. Но здесь в качестве примера я опять рассматриваю VPS с Линукс семейства Dеbian.

Итак, на “Мосте” запускаем терминал, входим как root, набираем пароль, в файле /etc/sysctl.conf пишем net.ipv4.ip_forward = 1 и ставим требуемый набор инструментов(список намеренно избыточен):
su 
sysctl -w net.ipv4.ip_forward=1
apt-get install aptitude iputils net-tools bridge-utils uml-utilities

Затем с “Моста” входим на VPS по терминалу как root с паролем, указав его IP (далее $VPS_IP) и проводим настройки, указанные выше:
ssh root@$VPS_IP
sysctl -w net.ipv4.ip_forward=1
apt-get install aptitude iputils net-tools bridge-utils uml-utilities


Интерфейсы, по которым осуществляется выход в Интернет на “Мосте” и VPS, мы не трогаем!

Каждый раз при перезагрузке VPS сервера исполняем следующие команды.
tunctl -t tap0 
ifconfig tap0 192.168.0.1/24

Здесь мы организуем виртуальный интерфейс(tap0) для доставки интернетовских пакетов при помощи ssh соединения

При [пере]подключении к VPS серверу исполняем следующие команды:
iptables -F && iptables -X 
iptables -t nat -A POSTROUTING ! -d 192.168.0.0/24  -j MASQUERADE


Так мы перенаправляем наши пакеты в интернет сервера VPS. Ключ MASQUERADE означает, что оригинальный IP адрес источника меняется на IP адрес VPS страны его реального размещения.

Выходим обратно на “Мост” машину и конфигурим уже сетевой мост между виртуальным интерфейсом(tap0) и интерфейсом локальной сети(eth1) для связи с клиентской машиной.
exit
tunctl -t tap0 
ifconfig tap0 0.0.0.0 promisc up
ifconfig eth1 0.0.0.0 promisc up
brctl addbr br0 
brctl addif br0  eth1 tap0
ifconfig br0 192.168.0.2/24 up
ssh -o Tunnel=ethernet -f -w 0:0 root@$VPS_IP true

Здесь оба интерфейса поднимаются в режиме захвата всех пакетов, затем объединяются в мост-интерфейс под именем br0. Теперь уже этому интерфейсу назначается адрес 192.168.0.2. Сервис ssh доставляет интернет пакеты с VPS на “Мост”, где они перенаправляются на клиентскую машину. С точки зрения теории здесь перенаправление осуществляется на канально-сетевом уровне, в то время как на VPS это делается на транспортном уровне.
Проверяем, что ping 192.168.0.1 c “Моста” и ping 192.168.0.2 с VPS проходят.

Кратко о настройке клиентской машины. Ей следует назначить адрес из стандартного диапазона 192.168.0.0/24. Статически для Windows: Win-R, запустить ncpa.cpl; выбрать последовательно: Свойства Адаптера(в сети), Сеть, IP версии 4(TCP/iPv4), Свойства; в открывшемся диалоге надо задать адрес 192.168.0.3, маску подсети 255.255.255.0, основной шлюз 192.168.0.1 и DNS-сервер, например, 8.8.8.8 (или другой известный)

Теперь можно войти с клиентской машины в И-нет. Любой софт от любой ОС определяет ее как находящуюся в стране размещения VPS. Единственным недостатком решения является скорость.
Но это плата за надежность, даже Apple Mac не сможет найти ничего кроме шлюза 192.168.0.1 для выхода в сеть.

Всё, основная цель достигнута. Далее следует написать скрипты, уйти с root на пользователя c sudo, настроить беспарольный вход ssh по ключу, организовать раздачу динамических адресов и возможно поставить прокси для быстрого доступа в И-нет с клиентского компьютера (или другого в созданной локальной сети). Но это уже техника.
Теги:
Хабы:
Всего голосов 13: ↑4 и ↓9-3
Комментарии20

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн