Здравствуйте.
На сервере есть 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_eth2default 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 можно явно указать через какой ip/интерфейс ходить наружу:
tcp_outgoing_address out_ip
>Squid можно явно указать через какой ip/интерфейс ходить наружу:
>tcp_outgoing_address out_ipПо каким-то причинам это не работает. Трафик продолжает идти по дефолтному маршруту.
>>Squid можно явно указать через какой ip/интерфейс ходить наружу:
>>tcp_outgoing_address out_ip
>
>По каким-то причинам это не работает. Трафик продолжает идти по дефолтному маршруту.
>Всё верно ибо маршрутизация :) Параметр сквида tcp_outgoing_address позволяет задать адрес источника, но это не означает что траффик пойдёт во второй канал автоматически. Маршрут до адреса назначения всё равно проходит через шлюз по умолчанию. Поэтому траффик во второй канал нужно заворачивать ручками и называется это Policy Based Routing. Что вы и сделали. Поэтому решение из вашего первоначального поста абсолютно верное.
>[оверквотинг удален]
>>
>>По каким-то причинам это не работает. Трафик продолжает идти по дефолтному маршруту.
>>
>
>Всё верно ибо маршрутизация :) Параметр сквида tcp_outgoing_address позволяет задать адрес источника,
>но это не означает что траффик пойдёт во второй канал автоматически.
>Маршрут до адреса назначения всё равно проходит через шлюз по умолчанию.
>Поэтому траффик во второй канал нужно заворачивать ручками и называется это
>Policy Based Routing. Что вы и сделали. Поэтому решение из вашего
>первоначального поста абсолютно верное.да, решение правильное, но несовсем удобное, пользователи могут играть в игры и использовать службы которые не впишутся в сквиду и тогда начнутся заморочки
было бы удобней назначить дефолтный маршрут через eth2
а для отправки почты и чегото там "сайта" завернуть на eth1
>>Squid можно явно указать через какой ip/интерфейс ходить наружу:
>>tcp_outgoing_address out_ip
> По каким-то причинам это не работает. Трафик продолжает идти по дефолтному маршруту.Если физически каналы находятся в разных сетевых картах, то надо настраивать хитрую маршрутизацию. Без хитрой маршрутизации получится лишь в том случае, если повесить на одну сетевую карту 2 IP этих каналов и выбирать, через какой IP работать вашим сервисам.
>[оверквотинг удален]
> через него.
> Пытался использовать в настройках 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 идёт на нужный интерфейс, но остаются сомнения о
> верности такого решенияА можно поподробнее о том, как это сделать???