Перейти к содержимому

Донат
На хостинг
ISK за переводы
до 75kk за 1000зн.
Хроники EVE
Сборник
Новичкам
Полезная информация

Demonsh

Фотография Demonsh

Demonsh

Регистрация: 04 Jan 2009
Не на форуме Активность: Mar 21 2014 12:48
-----

GNU Linux + Прокси через 80й порт.

04 January 2009 - 17:47

Всем привет. Может кому пригодится мой опыт, сколько не искал, подобных решений не находил.
Итак задача: рабочая станция под linux (в моем случае делал на opensuse, но разницы нет), выход в интернет возможен ТОЛЬКО через 80й порт, прокси поддерживает метод Connect. Задача запустить еву.

Имеем в локалке прокси (proxy.myorg), который слушает порт 3128 (к примеру) и пускает в инет только на 80й порт. Тут есть большое НО! в данной ситуации подключиться на евовому серверу без какого-либо внешнего компонента неполучится никак. Этот внешний компонент должен слушать именно 80й порт. Я у себя дома поставил роутер который слушает сервисом ssh на 80м порту в интернет (Asus WL500-Pv2). Алгоритм такой: устанавливаем соединение через прокси с удаленным компонентом, открываем локальный сокс сервер соединения которого пробрасываются на удаленный компонент, все локальные соединения которые нам нужны принудительно заворачиваем в сокс сервер.

Итак, на рабочей станции:
1. Ставим утилитку для проброса ssh через http прокси. Взять можно тут: http://www.agroman.n...crew-2.0.tar.gz. К примеру ставим в /usr/local

2.в ~/.ssh/config прописываем строчку, что-бы соединения по ssh шли через прокси
ProxyCommand /usr/local/bin/corkscrew proxy.myorg 3128 %h %p

3.соединяемся по ssh и открываем сокет сервер локально:
ssh -D localhost:1080 -l admin <ip_address> -p 80
тут мы говорим открыть на лупбеке на порте 1080 сокс сервер (стандартный ssh это умеет, 1080 это дефолтный порт для соксов). Вместо <ip_address> нужно подставить интернетовский ip адрес нашего удаленного компонента на котором слушается ssh на 80м порту. вместо "admin" имя пользователя по которому мы соединяемся. Тут вместо localhost можно прописать ip вашей сетевухи, и тогда другие участники локальной сети могут ходить в инет свободно через вас. После выполнения команды мы должны увидеть стандартное приглашение на ввод пароля и зайти в шелл. Тут я столкнулся с глюком, если некоторое время нет обмена трафиком, то ssh закрывает соединение. Что бы это не происходило, я в шеле запускаю команду "top" - много трафика не жрет и все время что-то передает.

4.качаем и компилим tsocks, с параметрами:
./configure --enable-socksdns --disable-hostnames
make
sudo make install

Копируем скомпилиную библиотеку и симлинк в /usr/lib (по дефолту кидает ее в /lib а ищет потом в /usr/lib). Исходники можно взять тут: https://sourceforge....rojects/tsocks/

5.ставим tsocks и в конфиге /etc/tsocks.config пишем:
server = 127.0.0.1
server_type = 5
server_port = 1080


Далее качаем сам инстал евы в формате rpm и dat файл и устанавливаем (внимательно читая инструкцию с офф сайта). Качнуть можно и через наш тунель, но раз не вы админите прокси, то не попалят ли вас по размеру закачки?

6.ищем файл ~/.cedega/.ui/Point2Play.py а в нем строчку:
pid = self.exec_winex(script_path, options, new_env, version, "/dev/null", 0)
ПЕРЕД ней вставляем строку:
new_env["LD_PRELOAD"]="/usr/lib/libtsocks.so"
Поясню, любое приложение, в окружении которого прописано LD_PRELOAD=/usr/lib/libtsocks.so будет автоматически соксифицироваться и пускаться через наш тунель, независимо от того куда оно лезет (исключения можно настраивать в конфиге tsocks).

7.запускаем
eve

К чему этот весь гемор с tsocks? дело в том что все остальные соксификаторы что я встречал требуют формат запуска: <соксификатор> <приложение> <параметры>. Если так запускать еву то она не идет через тунель. Более того даже если в переменных окружения прописать заранее LD_PRELOAD то все-равно эти значения будут игнорироваться, скрипты запуска их перетерают.

Ну вот и все, если что критикуйте :1_7:

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