суббота, 12 февраля 2011 г.

Реализация простейшего socks-proxy на openSUSE 11.3

Как-то раз, ещё до покупки роутера, мне понадобилось расшарить свое интернет подключение соседу по общежитию. В наличии имелся компьютер с 1 сетевым интерфейсом, подключенный к локальной сети с доступом в Интернет через шлюз, и компьютер в той же локальной сети, но без доступа к Интернету.
Самым простым решением на мой взгляд было настроить squid через Yast2, что и было сделано буквально в пять клтков. Всё бы ничего, веб-страницы заработали, но вот p2p программы, типо ICQ, Skype, Torrent-клиентов работать не пожелали. Было решено также поднять socks proxy.
В репозиториях я быстро нашел прокси сервер Dante и начал разбираться с настройками.
Все настройки хранятся в файле /etc/sockd.conf, который по доброй Unix традиции содержит подробные инструкции в виде комментариев. Ниже приведу откомментированный рабочий файл настройки, реализующий простейший прокси сервер, раздающий интернет одному клиенту без каких-либо ограничений и не требующий авторизации:

logoutput: /var/log/socks/socks.log # указываем файл для хранения логов
internal: eth0 port = 1080 # внутренний интерфейс и порт, на котором будем слушать клиентов, допустимо также указывать IP адрес.
external: eth0  # внешний интерфейс, с которого выходим в Интернет, допустимо что-то вроде external: 192.168.1.1 
method: username none # метод авторизации (rfc931) в данном случае - без авторизации  

# далее идет набор правил, правила со словом pass разрешают действия, со словом block - запрещают

client pass { 
from: 192.168.1.2/32 to: 0.0.0.0/0 
log: connect disconnect iooperation 
} # разрешаем пользователю 192.168.1.2 подключаться к серверу и логируем события подключения/отключения и ввод/вывод

pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: connect udpassociate
log: connect disconnect iooperation
} # разрешаем серверу соединяться с любыми серверами, выполняя команды connect, udpassociate и также пишем логи

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

Комментариев нет:

Отправить комментарий