Перейти к содержимому
Калькуляторы

Linux часть сайтов грузить с другого eth

Возникла дурацкая задача, нет понимания чем ее решать.

На фирме дорогой инет с платой за трафик.

Изначально на squid были запрещены всякие видеосервисы типа yotube? но сейчас возникла производственная необходимость им пользоваться.

Для этого был куплен безлимитный радиоканал, который естественно все запросы предприятия не потянет.

Есть мысль, повесить на этот радиоканал всякие низкоприоритетные сервисы типа youtube.com и прочего.

Сходу совершенно непонятно, чем это сделать?

Где можно прописать, что к примеру для сайта *.youtube.com default route eth2 ?

Подскажите, в какую сторону смотреть?

.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ip r add подсеть via адрес_на_eth2

Как-то так. Подсети нужно искать самому.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Abram

Это и так очевидно. Вопрос-то как сделать по имени домена, а не по IP.

 

Michail

Делайте так:

1. Пишите acl в squid

2. Используете директиву tcp_outgoing_address сквида, чтобы назначить src ip для определённых доменов

3. По исходящему src ip с помощью iptables в таблице mangle маркируете интересный исходящий трафик

4. С помощью ip rule выпускаете промаркированный трафик через нужный gw.

5. Не забудьте отключить rp_filter, иначе обратный трафик через 2ой интерфейс будет дропаться.

 

Идея понятна?

Изменено пользователем s.lobanov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Michail

Делайте так:

1. Пишите acl в squid

2. Используете директиву tcp_outgoing_address сквида, чтобы назначить src ip для определённых доменов

3. По исходящему src ip с помощью iptables в таблице mangle маркируете интересный исходящий трафик

4. С помощью ip rule выпускаете промаркированный трафик через нужный gw.

5. Не забудьте отключить rp_filter, иначе обратный трафик через 2ой интерфейс будет дропаться.

 

Идея понятна?

В общих чертах да, но подробней придется читать документацию.

Более простых вариантов не существует?

Или более подробных руководств вам не попадалось?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мне кажется кабельный оператор вас разводит, может с ним проще поговорить?

Это как так что вам по дохлому радио дают без учёта трафика, а на кабеле дерут за трафик?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мне кажется кабельный оператор вас разводит, может с ним проще поговорить?

Это как так что вам по дохлому радио дают без учёта трафика, а на кабеле дерут за трафик?

Увы, интернет прилагается к договору аренды, где прямым текстом запрещено пользоваться услугами других операторов связи. Канал 100 мегабит, трафик стоит 0,1$ мег, что для youtube - убийственно. Соответственно дополнительный радиоканал это махровая нелегальщина, с целью снизить ежемесячные платежи. Использование дополнительного канала надо замаскировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Или более подробных руководств вам не попадалось?

Иногда пишу более подробно, но squid не входит в мою область интересов, поэтому всю схему собирать не буду.

По iptables/ip rule могу более подробно расписать, если надо, тогда вам останется только разобраться с acl и установкой source ip

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Более простых вариантов не существует?

Или более подробных руководств вам не попадалось?

1. ACL-ем описываете youtube-овский домены, ну и другие по желанию.

http://www.squid-cache.org/Doc/config/acl/

2. Squid-ом разворачиваете трафик на них.

http://www.squid-cache.org/Doc/config/tcp_outgoing_address/

 

А вот зачем s.lobanov предлагает ещё iptables-ом пакеты метить я как-то не догоняю...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Kirya

Ну так два оператора, в таблице маршрутизации main будет дефолт на основного(дорогого) оператора, в дополнительной таблице маршрутизации(создаём её в файлике /etc/iproute2/rt_tables) будет дефолт на второго оператора. Если не метить трафик и не использовать эти метки в ip rule, то тогда пакеты до ютубов пойдут через default gw таблицы main с src ip второго оператора, что является в чистейшем виде ip spoofing-ом и такой абонентский трафик основной сервис-провайдер должен дропать

Изменено пользователем s.lobanov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Или более подробных руководств вам не попадалось?

Иногда пишу более подробно, но squid не входит в мою область интересов, поэтому всю схему собирать не буду.

По iptables/ip rule могу более подробно расписать, если надо, тогда вам останется только разобраться с acl и установкой source ip

Со сквидом то понятно, там все относительно просто.

примерно так:

acl radio_net src 10.0.1.0/24

tcp_outgoing_address 10.1.0.2 radio_net

tcp_outgoing_address 10.1.0.3

 

А вот с iptables пока разбираюсь, не совсем понятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Допустим, на eth1(радио-канал) ip 1.1.1.2, со стороны провайдера 1.1.1.1

 

Тогда

acl radio_net ютубы

tcp_outgoing_address 1.1.1.2 radio_net

 

Дальше добавляете таблицу radio в /etc/iproute2/rt_tables , далее:

 

ip ro add t radio default via 1.1.1.1

ip ru add fwmark 100 lookup radio

iptables -t mangle -I OUTPUT -s 1.1.1.2 -j MARK --set-mark 100

 

 

default gw в таблице main оставляете, т.е. дорого провайдера

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Kirya

Ну так два оператора, в таблице маршрутизации main будет дефолт на основного(дорогого) оператора, в дополнительной таблице маршрутизации(создаём её в файлике /etc/iproute2/rt_tables) будет дефолт на второго оператора. Если не метить трафик и не использовать эти метки в ip rule, то тогда пакеты до ютубов пойдут через default gw таблицы main с src ip второго оператора, что является в чистейшем виде ip spoofing-ом и такой абонентский трафик основной сервис-провайдер должен дропать

Это у Вас слишком большой опыт работы в операторских сетях. :)

На 99,9% у Michail стоящий Linux выполняет и функции NAT-а.

Иначе б мы услышали вопрос как средствами BGP развернуть youtube во второй канал. :)))

Соответственно метить ничего не надо.

Просто забивается командочка

ip route add default dev $IF2 src $IP2 metric 2

где нужно подставить значения второго интерфейса.

(Пишу на память, linux-а под рукой нет)

Iproute2 в отличии от сисек умеет роутить по src-ip.

Далее все, имеющее IP второго интерфейса, полетит соответсвенно через второй канал.

Изменено пользователем Kirya

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Kirya

Ну так два оператора, в таблице маршрутизации main будет дефолт на основного(дорогого) оператора, в дополнительной таблице маршрутизации(создаём её в файлике /etc/iproute2/rt_tables) будет дефолт на второго оператора. Если не метить трафик и не использовать эти метки в ip rule, то тогда пакеты до ютубов пойдут через default gw таблицы main с src ip второго оператора, что является в чистейшем виде ip spoofing-ом и такой абонентский трафик основной сервис-провайдер должен дропать

Это у Вас слишком большой опыт работы в операторских сетях. :)

На 99,9% у Michail стоящий Linux выполняет и функции NAT-а.

Иначе б мы услышали вопрос как средствами BGP развернуть youtube во второй канал. :)))

Соответственно метить ничего не надо.

Просто забивается командочка

ip route add default dev $IF2 src $IP2 metric 2

где нужно подставить значения второго интерфейса.

(Пишу на память, linux-а под рукой нет)

Iproute2 в отличии от сисек умеет роутить по src-ip.

Далее все, имеющее IP второго интерфейса, полетит соответсвенно через второй канал.

Точно!

"Внутриофис" естественно натится. ;)

Спасибо за упрощение задачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Просто забивается командочка

ip route add default dev $IF2 src $IP2 metric 2

где нужно подставить значения второго интерфейса.

(Пишу на память, linux-а под рукой нет)

Iproute2 в отличии от сисек умеет роутить по src-ip.

Далее все, имеющее IP второго интерфейса, полетит соответсвенно через второй канал.

PBR делается с помощью ip rule, а не ip route

 

Что-то я не вижу в документации на ip route возможность классификации пакетов по src_ip. http://www.policyrouting.org/iproute2.doc.html#ss9.5.1

 

src это указание предпочительного src_ip, которое используется в случае, если приложение само не заказывает src_ip (тогда он назначается по лучшей записи в таблице маршрутизации). К маршрутизации на основе адреса источника вроде как никакого отношения не имеет.

 

Если я не прав, подскажите, с удовольствием будут использовать ip route вместо iptables+ip rule+ip route.

 

"Внутриофис" естественно натится. ;)

Исходя из Вашего первого у вас в офисе используется прокси, а не нат. Или и то и то? Или прозрачная прокси? Уточните, пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

"Внутриофис" естественно натится. ;)

Исходя из Вашего первого у вас в офисе используется прокси, а не нат. Или и то и то? Или прозрачная прокси? Уточните, пожалуйста.

NAT + прозрачный squid на который трафик заворачивает iptables.

Внутриофисные компы имеют адреса из 192 подсети.

Изменено пользователем Michail

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Т.е. на squid заворачивается только 80ый порт?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Т.е. на squid заворачивается только 80ый порт?
Вот так заворачивается:

iptables -t nat -A PREROUTING -s 192.168.Х.0/24 -i eth1 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.Х.Х:3128

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

То что я описал будет работать в вашей схеме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если я не прав, подскажите, с удовольствием будут использовать ip route вместо iptables+ip rule+ip route.
Хочешь корректно-документированно работать через ip rule - No Problem.

ip rule add from IP_2 table Radio

ip route add default via GW_2 src IP_2 table Radio

 

Зачем только в этой задаче лишнюю маркировку делать - не понимаю.

 

ps. Данная схема кстати в дальнейшем всего лишь игрой содержимого таблицы Radio позволит принудительно заворачивать

не-web-трафик нужных ip внутрисети в радиоканал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если я не прав, подскажите, с удовольствием будут использовать ip route вместо iptables+ip rule+ip route.
Хочешь корректно-документированно работать через ip rule - No Problem.

ip rule add from IP_2 table Radio

ip route add default via GW_2 src IP_2 table Radio

 

Зачем только в этой задаче лишнюю маркировку делать - не понимаю.

Ага, так согласен. Забыл что у rule есть селектор from, поэтому сходу дал универсальное решение(с помощью mark).

 

Всё же интересно, без ip rule можно обойтись? похоже что нельзя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

То что я описал будет работать в вашей схеме.

 

Поднимаю старую тему, возник дурацкий вопрос, а как проверить, что эта конструкция работает нормально?

Делать с клиентских машин из внутрисети "tracert youtube.com" бессмысленно - пакеты не попадут на squid.

Из браузера youtube.com открывается, но как проверить, что он ходит через правильный интерфейс и что не образовалось "петель"?

 

Сетевая карта с дополнительным каналом - eth2

eth2 addr - 192.168.89.252

eth2 gw - 192.168.89.76

Текущие настройки:

/etc/squid/squid.conf

acl radio_net dstdomain youtube.com

tcp_outgoing_address 192.168.89.76 radio_net

 

/etc/iproute2/rt_tables

100 radio

 

и три команды:

ip ro add t radio default via 192.168.89.252

ip ru add fwmark 100 lookup radio

iptables -t mangle -I OUTPUT -s 192.168.89.76 -j MARK --set-mark 100

 

Есть у меня ощущение, что работает оно по прежнему через основной канал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.