Наконец-то я смог настроить свой сервер 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