LINUX.ORG.RU
решено ФорумAdmin

Squid + второй провайдер


0

1

На шлюзе (Slackware 13) запущен Squid и установлены подключения к двум провайдерам. Первый - основной, через второго ходят некоторые IP. Управляется это с помощью дополнительной таблицы маршрутизации и ip rule. В принципе, всё отлично работает, но если попытаться использовать прокси на этих компьютерах, они начинают выходить в интернет через основного провайдера. Мне же нужно сделать так, чтобы ВСЕ пакеты через прокси отправлялись второму провайдеру. Ниже некоторые выдержки, которые могут быть полезны.
ifconfig

br0       Link encap:Ethernet  HWaddr ......
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

[...]

br0:3     Link encap:Ethernet  HWaddr .......
          inet addr:222.10.166.14  Bcast:222.10.166.15  Mask:255.255.255.252
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth1      Link encap:Ethernet  HWaddr .......
          inet addr:88.28.10.20  Bcast:88.28.10.21  Mask:255.255.255.252
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
222.10.166.12    0.0.0.0         255.255.255.252 U         0 0          0 br0
88.28.10.18     0.0.0.0         255.255.255.252 U         0 0          0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 br0
127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo
0.0.0.0         88.28.10.19     0.0.0.0         UG        0 0          0 eth1
ip route show table net1
222.10.166.12/30 dev br0  scope link  src 222.10.166.14
88.28.10.18/30 dev eth1  scope link  src 88.28.10.20 
192.168.1.0/24 dev br0  scope link  src 192.168.1.1 
127.0.0.0/8 dev lo  scope link 
default via 222.10.166.13 dev br0
В squid.conf есть строчки:
tcp_outgoing_address 222.10.166.14
server_persistent_connections off
В iptables ничего интересного нет, только правила forward для всех подсетей и accept порта 3128. Чего ему ещё не хватает?

- tcp_outgoing_address 222.10.166.14
+ tcp_outgoing_address <localip>

добавляешь на локальный интерфейс <localip>

ip rule add from <localip> table <sometable>

uspen ★★★★★
()
Ответ на: комментарий от ARTIsshoque

«tcp_outgoing_address 222.10.166.14» было написано правильно.

В данном случае использовать route для просмотра настроек роутинга вредно.

А что в списке правил ?

Для отладки такого безобразия есть замечательная команда «ip ro get ...»

ip ro get XXXX

и

ip ro get XXXX from 222.10.166.14
должны различаться. После этого можно проверять tracepath/traceroute и squid

Я обычно в основной таблице (main) не держу dgw

dgw от разных провайдеров в разных таблицах

ip ru add pref 100 lookup main

ip ru add pref 110 from dgw1 table isp1

ip ru add pref 110 lookup isp2
vel ★★★★★
()

«tcp_outgoing_address 222.10.166.14» действительно было написано правильно. Проблема была в том, что Squid не перечитывал конфиг из-за отсутствия pid-файла.

ARTIsshoque
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.