View previous topic :: View next topic |
Author |
Message |
burbulator n00b

Joined: 18 May 2007 Posts: 22 Location: Tomsk
|
Posted: Wed Feb 27, 2008 9:52 am Post subject: Как заставить "кальмара" (Squid) отдать интернет? |
|
|
Доброго времени суток форумчане!
Задумка такая. Есть сервер с двумя интерфейсами 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 |
|
 |
sa10 Apprentice

Joined: 20 Jan 2005 Posts: 251 Location: Minsk
|
Posted: Mon Mar 03, 2008 7:35 am Post subject: |
|
|
Нет, ну зачем писать фиг знает на каком языке?
Но если я правильно понял отдельные фразы, можно включить авторизацию на squid и пускать по паролю тех кого нужно.
Есть еще такая возможность:
https://help.ubuntu.com/community/SinglePacketAuthorization |
|
Back to top |
|
 |
burbulator n00b

Joined: 18 May 2007 Posts: 22 Location: Tomsk
|
Posted: Mon Mar 03, 2008 10:00 am Post subject: |
|
|
sa10 wrote: | Нет, ну зачем писать фиг знает на каком языке? |
Вродебы разжёвано как нельзя лучше, конечно в адресах можно запутаться, но всё корректно
Что авторизация есть и будет это понятно. И именно только! для авторизовавшихся пользователей и должен быть доступен "внешний" интернет через 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 |
|
 |
burbulator n00b

Joined: 18 May 2007 Posts: 22 Location: Tomsk
|
Posted: Mon Mar 03, 2008 10:23 am Post subject: |
|
|
Ещё у меня есть запасной вариант, более прозрачен в действии, правда не хотелось бы писать скрипт .
Суть - забить в таблицу маршрутизации все местные сети и пускать в них через шлюз (GW=10.20.30.1). В этом случае уже можно будет поменять шлюз "по умолчанию" на PPP0 тогда по идее можно обойтись без доп. правил в iptables и вообще без iproute2 НО! нужно будет придумывать и писать скриптик (скрипт должен будет скачивать в корректном для route формате адресные пространства с сайта провайдера, очищать таблицу и забивать в новую) + обновлять таблицу маршрутизации хотябы раз в месяц по cron.
Поэтому этот вариант менее предпочтительней его надёжность как видите хромает, (если сайт по какой то причине не доступен и т.п.) + не правильно выдумывать какие то свои скрипты т.к. это нарушает целостность всей системы и превращает её в файло-помойку.
Жду Ваших комментариев и дополнений. |
|
Back to top |
|
 |
|
|
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
|
|