Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Как заставить "кальмара" (Squid) отдать интернет?
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Russian
View previous topic :: View next topic  
Author Message
burbulator
n00b
n00b


Joined: 18 May 2007
Posts: 22
Location: Tomsk

PostPosted: Wed Feb 27, 2008 9:52 am    Post subject: Как заставить "кальмара" (Squid) отдать интернет? Reply with quote

Доброго времени суток форумчане!

Задумка такая. Есть сервер с двумя интерфейсами eth0 - к ISP т.е. реальная адресация, но "внешка" закрыта, и eth1 - LAN т.е. "фэйковая" сеть (172.18.1.0/24). На этом сервере работает DHCP и Squid. Внутри LAN пользователи получают настройки сети автоматически (DHCP). Также на сервере поднят туннель PPTP с интерфейсом PPP0, на котором "есть внешка".
Нужно пользователей (не обязательно из числа LAN, например начальник c домашнего компьютера :) ) выпускать через PPTP туннель, т.е. подключаться они должны к Squid слушающего только интерфейс eth0, а выходить в "мир" через PPP0, соответственно тем кому "не разрешено" пользоваться прокси идут как обычно через GW=10.20.30.1, где "внешка" рубиться провайдером.
Сразу оговорюсь, что вариант пускать всех через PPP0 и разруливать всех с помощью самого Squid не подходит т.к. в туннеле PPTP скорость в 4-6 раз медленней чем через eth0 и работать "без внешки" становиться невозможно. Внешка нужна для "серфинга", почты, бухгалтерии (банк-клиенты) и конечно же ICQ :)

eth0:
IP=10.20.30.40
MSK=255.255.255.0
GW=10.20.30.1

eth1:
IP=172.18.0.1
MSK=255.255.255.0

PPP0:
IP=201.202.203.204
MSK=255.255.255.255

Внимание вопрос! Знающие, умеющие люди подскажите пути возможной реализации задуманного. Пока раскуриваю возможность задействовать iptables и самого Squid на предмет выпускать через другой "не слушающий" интерфейс, за любое содействие в данном вопросе буду благодарен.
Back to top
View user's profile Send private message
sa10
Apprentice
Apprentice


Joined: 20 Jan 2005
Posts: 251
Location: Minsk

PostPosted: Mon Mar 03, 2008 7:35 am    Post subject: Reply with quote

Нет, ну зачем писать фиг знает на каком языке? :evil:
Но если я правильно понял отдельные фразы, можно включить авторизацию на squid и пускать по паролю тех кого нужно.
Есть еще такая возможность:
https://help.ubuntu.com/community/SinglePacketAuthorization
Back to top
View user's profile Send private message
burbulator
n00b
n00b


Joined: 18 May 2007
Posts: 22
Location: Tomsk

PostPosted: Mon Mar 03, 2008 10:00 am    Post subject: Reply with quote

sa10 wrote:
Нет, ну зачем писать фиг знает на каком языке? :evil:

Вродебы разжёвано как нельзя лучше, конечно в адресах можно запутаться, но всё корректно ;)
Quote:
Но если я правильно понял отдельные фразы, можно включить авторизацию на squid и пускать по паролю тех кого нужно.
Есть еще такая возможность:
https://help.ubuntu.com/community/SinglePacketAuthorization

Что авторизация есть и будет это понятно. И именно только! для авторизовавшихся пользователей и должен быть доступен "внешний" интернет через Squid - это всё есть и работает как надо.
Вопрос был в том, что как средствами Squid или ещё чего, пользователей прокси выпускать во "вне", а остальных как обычно через шлюз "по умолчанию". Т.е. в таблице маршрутизации есть только один! шлюз, работая через который "внешки" нет.

Пока дошел только до такого решения - это Squid+iptables + iproute2.
########################
Для Squid:
http_port 10.20.30.40:3128 # IP адрес провайдела (не VPN!)
....
....
acl proxy_users proxy_auth REQUIRED
tcp_outgoing_address 201.202.203.204 proxy_users # А вот тут уже IP адрес VPN-провайдера!
http_access allow proxy_users
http_access deny all
....
########################
Для iptables:
...
iptables -t mangle -A OUTPUT -m owner --uid-owner (ID Squid) -d ! 127.0.0.1 -j MARK --set-mark 10
iptables -t mangle -A OUTPUT -m owner --uid-owner (ID Squid) -d ! 172.18.0.0/24 -j MARK --set-mark 10
iptables -t nat -A POSTROUTING -m owner --uid-owner user -o ppp0 -j MASQUERADE
...
########################
И правила для iproute2:

ip rule add fwmark 10 table user
ip route add default dev ppp0 table user
ip route flush cache
########################

Но честно говоря ещё не пробовал, занят был более приоритетными делами (окончательно мне проксю нужно запустить не позднее 20-х чисел марта), поэтому корректировки и дополнения а также критику готов выслушать :)
На днях опробую этот вариант и если никто до этого времени не подскажет возможные грабли и etc., то потом сам отпишу что из этого компота получилось :)

З.Ы. может конечно и немного косноязычно написано, не знаю, могу если есть вопросы пояснить.
Back to top
View user's profile Send private message
burbulator
n00b
n00b


Joined: 18 May 2007
Posts: 22
Location: Tomsk

PostPosted: Mon Mar 03, 2008 10:23 am    Post subject: Reply with quote

Ещё у меня есть запасной вариант, более прозрачен в действии, правда не хотелось бы писать скрипт :).
Суть - забить в таблицу маршрутизации все местные сети и пускать в них через шлюз (GW=10.20.30.1). В этом случае уже можно будет поменять шлюз "по умолчанию" на PPP0 тогда по идее можно обойтись без доп. правил в iptables и вообще без iproute2 НО! нужно будет придумывать и писать скриптик (скрипт должен будет скачивать в корректном для route формате адресные пространства с сайта провайдера, очищать таблицу и забивать в новую) + обновлять таблицу маршрутизации хотябы раз в месяц по cron.
Поэтому этот вариант менее предпочтительней его надёжность как видите хромает, (если сайт по какой то причине не доступен и т.п.) + не правильно выдумывать какие то свои скрипты т.к. это нарушает целостность всей системы и превращает её в файло-помойку.

Жду Ваших комментариев и дополнений.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Russian All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum