Pull to refresh

Настройка прокси на прошивке Tomato

Reading time3 min
Views13K
Начну, пожалуй, с главного — для чего, собственно, нужен мне лично прокси-сервер. У нашего провайдера (думаю как и у всех прочих) есть внутренние ресурсы, доступ на которые возможен только с компьютера, подключенного к этому самому провайдеру. Ранее, я использовал схему: белый IP у компьютера, прокси-сервер (CCProxy) и не выключал компьютер. Идея о том, что на роутере можно поставить прокси-сервер витала давно, так как на роутерах стоит Linux, вопрос был лишь в реализации. Squid слишком тяжел для данной задачи, ведь мне нужно простое и практичное решение и вот недавно, я наткнулся на одну программу — srelay, которая осуществляет «проброс» трафика через HTTP и SOCKS прокси.

Итак, теперь приступим к настройке роутера, в моем случае это NETGEAR WNR-3500L-RUS и прошивка Tomato (модификация прошивки не имеет значения). Данная статья рассчитана на продвинутого пользователя и считается. что человек уже умеет обращаться с командной строкой, putty и знает что делает.

Сперва, необходимо сделать так, чтобы прокси работал всегда и не зависел ни от флешек ни от чего-либо ещё, то есть будем размещать программу в памяти роутера, для этого в разделе Администрирования включаем опцию JFFS — это небольшой раздел, в моем случае 320 кб, на программу для прокси хватит.

Итак, идем в Administration / JFFS, включаем галочку Enable и нажимаем Format / Erase, ждем некоторое время, и нажимаем Save.
Когда раздел JFFS отформатирован и смонтирован, то появится доступ к папке /jffs, сюда то и поместим программу srelay.

Чтобы скачать программу (файл расположен мной на моем же сайте гугла для удобства, уже скомпиленный из optware), выполняем следующий скрипт, можно в разделе Tools / System:

wget "http://sites.google.com/site/denserru/Home/srelay/srelay?attredirects=0&d=1" -O "/jffs/srelay"
chmod +x /jffs/srelay


Теперь у нас есть программа srelay в разделе jffs, который находится в памяти роутера, остается настроить порты, автозапуск программы и её параметры.
Параметры программы можно увидеть по команде:

root@denser-router:/tmp/home/root# /jffs/srelay -h
srelay 0.4.6 2003/04/13 (Tomo.M)
usage: srelay [options]
options:
-c file config file
-i i/f listen interface IP[:PORT]
-m num max child/thread
-o min idle timeout minutes
-p file pid file
-a np auth methods n: no, p:pass
-u file srelay password file
-f run into foreground
-r resolve client name in log
-s force logging to syslog
-t disable threading
-b avoid BIND port restriction
-v show version and exit
-h show this help and exit


Нам понадобится следующие из них:

/jffs/srelay -i :9999 -t -a pP@ssW0rD

Где 9999 — порт, который будет использоваться для подключения, используйте какой угодно, кроме стандартных. P@ssW0rD замените на пароль, который будет использоваться для авторизации(обратите внимание на букву р перед паролем), имя пользователя при доступе к прокси — root. Добавляем эту строку в поле Execute When Mounted, чтобы программа запускалась при инициализации раздела JFFS с заданными параметрами, а именно:
  • работа по протоколам HTTP, SOCKS4 и SOCKS5
  • авторизация на порту 9999 пользователь: root, пароль: P@ssW0rD.

Приблизительно так должно выглядеть в итоге:



Теперь, добавим правило в Firewall на открытие порта 9999, для этого переключаемся в раздел Administration / Scripts, вкладка Firewall, туда добавляем через перенос строки следующее:

iptables -I INPUT -p tcp --dport 9999 -j ACCEPT

Выглядеть это будет приблизительно вот так:



Теперь перезагружаем роутер и проверяем работу программы любым доступным методом, например, браузером. Надеюсь вам пригодится эта инструкция как и мне.

Было замечено, что после длительной работы, программа могла закрываться, для этих целей я ставлю программу monit, но это тема другой статьи.

Используемые материалы:

1. Исходники самой программы — socks-relay.sourceforge.net
2. Очерк одного из пользователей — www.linksysinfo.org/index.php?threads/a-socks-proxy-server-for-tomato.23898
Tags:
Hubs:
Total votes 5: ↑5 and ↓0+5
Comments5

Articles