Назад | Перейти на главную страницу

Как я могу заставить Squid Proxy использовать определенный шлюз для доступа в Интернет?

Наконец-то я смог настроить свой сервер ubuntu 10.04 как прозрачный прокси с помощью squid. Работает именно так, как я хотел, но у меня серьезная проблема ...

На обеих сетевых картах у меня есть возможность выйти в Интернет (два разных ISP), но я бы хотел, чтобы этот сервер использовал только eth1 для обслуживания всех интернет-запросов.

Таким образом, последняя схема будет использовать eth0 для сбора всех входящих запросов прокси и позволить squid собирать информацию из Интернета, используя сверхбыстрое соединение на eth1.

Проблема в том, что у меня есть брандмауэр, подключенный к eth0: этот брандмауэр позволяет филиалу подключаться к прокси через мост Wi-Fi.

Чтобы обеспечить связь между филиалом и прокси-сервером, я вынужден установить шлюз по умолчанию на моем брандмауэре eth0, который, к сожалению, также предлагает подключение к Интернету (но медленное). Squid полностью использует eth0 для сбора запросов и получения данных из Интернета.

Я не могу установить уникальный правильный шлюз по умолчанию, потому что в этом случае я бы не отправлял пакеты обратно в наш филиал, используя мост Wi-Fi.

Надеюсь, я был немного яснее, прошу прощения за мое плохое изложение.

Мой фактический маршрут показывает:

Kernel IP routing table`
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
193.206.x.x   *               255.255.255.0   U     0      0        0 eth1
128.0.x.x       *               255.255.0.0     U     0      0        0 eth0
default         128.0.x.x    0.0.0.0         UG    100    0        0 eth0
default         193.206.x.x 0.0.0.0         UG    100    0        0 eth1

Есть подсказки?

Если вам понадобятся какие-то подробности, я отправлю их.

Оригинал

Из командной строки:

sudo route add default gw i.p.add.ress eth1

Затем в /etc/network/interfacesдобавьте эту строку:

up route add default gw i.p.add.ress eth1

Конечно, заменив i.p.add.ress с IP шлюза в обеих строках.

Редактировать для нового вопроса

Если вам нужно удалить маршрут, просто замените «добавить» на «del». Пример:

(command) sudo route del default gw 128.0.x.x eth0
(/etc/network/interfaces) up route del default gw 128.0.x.x eth0

Вы также можете установить статический маршрут для филиала с помощью команды маршрута

route add -net (network_id/prefix) GW (gateway) (interface)

У вас есть две проблемы: во-первых, вам нужно заставить squid использовать правильный исходный IP-адрес. Во-вторых, вам необходимо убедиться, что пакеты с этим исходным IP-адресом направляются на правильный шлюз (исходная маршрутизация).

Первая проблема - проблема Squid. Вы можете использовать Squid's tcp_outgoing_address , чтобы установить правильный IP-адрес источника.

tcp_outgoing_address 128.0.x.x

Вторая проблема - это проблема конфигурации системы. Вы не хотите отправлять пакеты с исходным адресом 128.0.x.x на шлюз 193.206.x.x и наоборот. Это называется source routing и сделано с iptables.

Более изощренный способ сделать это - иметь две таблицы маршрутизации. Один будет использоваться для пакетов с адресами отправителя 128.0.x.x и будет иметь маршрут по умолчанию к шлюзу 128.0.x.x. Наоборот, для другого. http://wlug.org.nz/SourceBasedRouting