URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 84780
[ Назад ]

Исходное сообщение
"Squid, определённый интерфейс для выхода в интернет"

Отправлено Sarius , 03-Апр-09 12:41 
Здравствуйте.
На сервере есть 3 сетевых интерфейса, 2 из них для выхода в Интернет.
eth0 локальная сеть.
eth1 должен использоваться для отправки почты и сайта.
eth2 для доступа пользователей в интернет.

Доступ в интернет организован с помощью NAT и прозрачного Squid следующим образом:
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -o eth0 -j SNAT --to-source IP_eth2

default gw на сервере - это eth1, соответственно сквид начинает работать именно через него.
Пытался использовать в настройках squid параментр tcp_outgoing_address, но он его игнорировал.

В итоге остановился на таком решении:

iptables -A OUTPUT -t mangle -p tcp --dport 80 -j MARK --set-mark 1
ip rule add fwmark 1 table saturn.out
ip route add default via GWIP_ETH2 dev eth2 table saturn.out
ip route flush cache

Теперь трафик со squid идёт на нужный интерфейс, но остаются сомнения о верности такого решения.


Содержание

Сообщения в этом обсуждении
"Squid, определённый интерфейс для выхода в интернет"
Отправлено Nib , 03-Апр-09 15:29 
Squid можно явно указать через какой ip/интерфейс ходить наружу:
tcp_outgoing_address out_ip



"Squid, определённый интерфейс для выхода в интернет"
Отправлено Sarius , 03-Апр-09 16:53 
>Squid можно явно указать через какой ip/интерфейс ходить наружу:
>tcp_outgoing_address out_ip

По каким-то причинам это не работает. Трафик продолжает идти по дефолтному маршруту.


"Squid, определённый интерфейс для выхода в интернет"
Отправлено kam , 03-Апр-09 22:52 
>>Squid можно явно указать через какой ip/интерфейс ходить наружу:
>>tcp_outgoing_address out_ip
>
>По каким-то причинам это не работает. Трафик продолжает идти по дефолтному маршруту.
>

Всё верно ибо маршрутизация :) Параметр сквида tcp_outgoing_address позволяет задать адрес источника, но это не означает что траффик пойдёт во второй канал автоматически. Маршрут до адреса назначения всё равно проходит через шлюз по умолчанию. Поэтому траффик во второй канал нужно заворачивать ручками и называется это Policy Based Routing. Что вы и сделали. Поэтому решение из вашего первоначального поста абсолютно верное.


"Squid, определённый интерфейс для выхода в интернет"
Отправлено Oyyo , 04-Апр-09 09:18 
>[оверквотинг удален]
>>
>>По каким-то причинам это не работает. Трафик продолжает идти по дефолтному маршруту.
>>
>
>Всё верно ибо маршрутизация :) Параметр сквида tcp_outgoing_address позволяет задать адрес источника,
>но это не означает что траффик пойдёт во второй канал автоматически.
>Маршрут до адреса назначения всё равно проходит через шлюз по умолчанию.
>Поэтому траффик во второй канал нужно заворачивать ручками и называется это
>Policy Based Routing. Что вы и сделали. Поэтому решение из вашего
>первоначального поста абсолютно верное.

да, решение правильное, но несовсем удобное, пользователи могут играть в игры и использовать службы которые не впишутся в сквиду и тогда начнутся заморочки

было бы удобней назначить дефолтный маршрут через eth2
а для отправки почты и чегото там "сайта" завернуть на eth1


"Squid, определённый интерфейс для выхода в интернет"
Отправлено mercury , 28-Май-11 15:50 
>>Squid можно явно указать через какой ip/интерфейс ходить наружу:
>>tcp_outgoing_address out_ip
> По каким-то причинам это не работает. Трафик продолжает идти по дефолтному маршруту.

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


"Squid, определённый интерфейс для выхода в интернет"
Отправлено Max , 03-Апр-11 16:23 
>[оверквотинг удален]
> через него.
> Пытался использовать в настройках squid параментр tcp_outgoing_address, но он его игнорировал.
> В итоге остановился на таком решении:
> iptables -A OUTPUT -t mangle -p tcp --dport 80 -j MARK --set-mark
> 1
> ip rule add fwmark 1 table saturn.out
> ip route add default via GWIP_ETH2 dev eth2 table saturn.out
> ip route flush cache
> Теперь трафик со squid идёт на нужный интерфейс, но остаются сомнения о
> верности такого решения

А можно поподробнее о том, как это сделать???