* [Sysadmins] два шлюза и проброс во внутреннюю сеть
@ 2007-10-31 6:40 altlinux
2007-10-31 11:25 ` Peter V. Saveliev
0 siblings, 1 reply; 18+ messages in thread
From: altlinux @ 2007-10-31 6:40 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
всем привет!
есть два шлюза в инет (канал U и канал S) и сервер во внутренней сети на
котором есть ftp. Нужно обеспечить доступ к ftp с этих двух каналов.
Шлюзом по умолчанию является канал U. Если я с инета пытаюсь соединиться
через канал S то пакеты доходят до внутреннего ftp, но возращаются не
через канал S, а через шлюз по умолчанию т.е. U.
проброс осуществляется
$IPTABLES -t nat -A PREROUTING -p TCP -d $EXTERNAL_U_ADDRESS --dport 21
-j DNAT --to-destination 192.168.100.8:21
$IPTABLES -t nat -A PREROUTING -p TCP -d $EXTERNAL_S_ADDRESS --dport 21
-j DNAT --to-destination 192.168.100.8:21
Как можно решить эту проблему.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-10-31 6:40 [Sysadmins] два шлюза и проброс во внутреннюю сеть altlinux
@ 2007-10-31 11:25 ` Peter V. Saveliev
2007-11-01 7:25 ` altlinux
2007-11-02 12:28 ` Igor Solovyov
0 siblings, 2 replies; 18+ messages in thread
From: Peter V. Saveliev @ 2007-10-31 11:25 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
On Wednesday 31 October 2007, altlinux@aaanet.ru wrote:
> всем привет!
> есть два шлюза в инет (канал U и канал S) и сервер во внутренней сети на
> котором есть ftp. Нужно обеспечить доступ к ftp с этих двух каналов.
> Шлюзом по умолчанию является канал U. Если я с инета пытаюсь соединиться
> через канал S то пакеты доходят до внутреннего ftp, но возращаются не
> через канал S, а через шлюз по умолчанию т.е. U.
> проброс осуществляется
> $IPTABLES -t nat -A PREROUTING -p TCP -d $EXTERNAL_U_ADDRESS --dport 21
> -j DNAT --to-destination 192.168.100.8:21
> $IPTABLES -t nat -A PREROUTING -p TCP -d $EXTERNAL_S_ADDRESS --dport 21
> -j DNAT --to-destination 192.168.100.8:21
> Как можно решить эту проблему.
>
в идеале -- самое простое -- это иметь по интерфейсу к каждому из шлюзов.
Тогда:
ip route add default via S table S
ip route add default via U table U
ip route add default via U table main
ip rule add dev ethS table S
ip rule add dev ethU table U
Эта схема опробована и работает на мэйл-сервере, который глядит в две разных
AS.
Возможно, что можно следить и не по интерфейсам, а по меткам, но это не
пробовал, а с интерфейсами работает.
--
Peter V. Saveliev
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-10-31 11:25 ` Peter V. Saveliev
@ 2007-11-01 7:25 ` altlinux
2007-11-01 7:50 ` Peter V. Saveliev
2007-11-02 12:28 ` Igor Solovyov
1 sibling, 1 reply; 18+ messages in thread
From: altlinux @ 2007-11-01 7:25 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
а у вас этот почтовик на самом сервере или в локальной сети?
если сервис на самом сервере проблем нет, а вот с пробросом во
внутреннюю сеть .....
> On Wednesday 31 October 2007, altlinux@aaanet.ru wrote:
>
>> всем привет!
>> есть два шлюза в инет (канал U и канал S) и сервер во внутренней сети на
>> котором есть ftp. Нужно обеспечить доступ к ftp с этих двух каналов.
>> Шлюзом по умолчанию является канал U. Если я с инета пытаюсь соединиться
>> через канал S то пакеты доходят до внутреннего ftp, но возращаются не
>> через канал S, а через шлюз по умолчанию т.е. U.
>> проброс осуществляется
>> $IPTABLES -t nat -A PREROUTING -p TCP -d $EXTERNAL_U_ADDRESS --dport 21
>> -j DNAT --to-destination 192.168.100.8:21
>> $IPTABLES -t nat -A PREROUTING -p TCP -d $EXTERNAL_S_ADDRESS --dport 21
>> -j DNAT --to-destination 192.168.100.8:21
>> Как можно решить эту проблему.
>>
>>
>
> в идеале -- самое простое -- это иметь по интерфейсу к каждому из шлюзов.
> Тогда:
>
> ip route add default via S table S
> ip route add default via U table U
> ip route add default via U table main
> ip rule add dev ethS table S
> ip rule add dev ethU table U
>
> Эта схема опробована и работает на мэйл-сервере, который глядит в две разных
> AS.
>
> Возможно, что можно следить и не по интерфейсам, а по меткам, но это не
> пробовал, а с интерфейсами работает.
>
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-01 7:25 ` altlinux
@ 2007-11-01 7:50 ` Peter V. Saveliev
2007-11-02 5:57 ` altlinux
0 siblings, 1 reply; 18+ messages in thread
From: Peter V. Saveliev @ 2007-11-01 7:50 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
В сообщении от Thursday 01 November 2007 10:25:21 altlinux@aaanet.ru
написал(а):
> а у вас этот почтовик на самом сервере или в локальной сети?
Да, сам сервер двумя внешними ip/24 глядит через два разных раутера в две
разные автономные системы.
> если сервис на самом сервере проблем нет, а вот с пробросом во
> внутреннюю сеть .....
Вообще говоря, есть трансанальный воркэраунд для такого случая. Поток с одного
провайдера на mail-сервер заворачиваем в один vlan, с другого -- в другой. На
самом mail-сервере имеем абсолютно ту же картинку, что я и описал: ip rule по
интерфейсам (vlan-интерфейсы) в разные таблицы.
Если честно, я ещё не смотрел, почему ядро разворачивает _исходящий_ поток
через таблицу на основании интерфейса _входящего_ потока, но тем не ме,
работает (если ещё не починили ;) или не починят в будущем)
<skip />
--
Peter V. Saveliev
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-01 7:50 ` Peter V. Saveliev
@ 2007-11-02 5:57 ` altlinux
2007-11-02 7:11 ` Peter V. Saveliev
0 siblings, 1 reply; 18+ messages in thread
From: altlinux @ 2007-11-02 5:57 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
сервак на который происходит проброс под windows.
1. не подскажите, а поможет ли мне если я на сервере(шлюзе) добавлю алиас IP адрес и добавлю таблицу маршрутов для этих адресов и на сервере на который осуществляется проброс добавить алиас IP адрес, вместо отдельных сетей/vlan.
2. и еще один вопрос, нет ли какого нибудь TCP прокси который бы пробрасывал трафик, который мог бы заменить dnat
> В сообщении от Thursday 01 November 2007 10:25:21 altlinux@aaanet.ru
> написал(а):
>
>> а у вас этот почтовик на самом сервере или в локальной сети?
>>
>
> Да, сам сервер двумя внешними ip/24 глядит через два разных раутера в две
> разные автономные системы.
>
>
>> если сервис на самом сервере проблем нет, а вот с пробросом во
>> внутреннюю сеть .....
>>
>
> Вообще говоря, есть трансанальный воркэраунд для такого случая. Поток с одного
> провайдера на mail-сервер заворачиваем в один vlan, с другого -- в другой. На
> самом mail-сервере имеем абсолютно ту же картинку, что я и описал: ip rule по
> интерфейсам (vlan-интерфейсы) в разные таблицы.
>
> Если честно, я ещё не смотрел, почему ядро разворачивает _исходящий_ поток
> через таблицу на основании интерфейса _входящего_ потока, но тем не ме,
> работает (если ещё не починили ;) или не починят в будущем)
>
> <skip />
>
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-02 5:57 ` altlinux
@ 2007-11-02 7:11 ` Peter V. Saveliev
2007-11-02 7:36 ` altlinux
0 siblings, 1 reply; 18+ messages in thread
From: Peter V. Saveliev @ 2007-11-02 7:11 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
В сообщении от Friday 02 November 2007 08:57:36 altlinux@aaanet.ru написал(а):
> сервак на который происходит проброс под windows.
Час от часу не легче :))
Короче, Вы можете разгребать ответы в ту же AS, откуда были запросы, но для
этого Вам нужно знать или хранить, откуда эти запросы таки пришли. Если
сервис не на самом шлюзе, тогда у routing engine просто нет шансов узнать, к
какому запросу относится ответ, не залезая в connection tracking. А туда оно
лазить не умеет, iirc.
Поскольку перед нами не стоит задачи научить rpdb смотреть в таблицы
connection tracking (что было бы нарушением иерархии протоколов -- ip не
должен ничего знать про вышележащее (что не мешает tcp нарушать иерархию,
однако, но опустим этот момент)), самое простое -- изолировать траффик. Можно
раскидать на разные интерфейсы, разные vlan или разные ip.
> 1. не подскажите, а поможет ли мне если я на сервере(шлюзе) добавлю алиас
> IP адрес и добавлю таблицу маршрутов для этих адресов и на сервере на
> который осуществляется проброс добавить алиас IP адрес, вместо отдельных
> сетей/vlan.
Может сработать.
> 2. и еще один вопрос, нет ли какого нибудь TCP прокси который
> бы пробрасывал трафик, который мог бы заменить dnat
# apt-cache show simpleproxy
Package: simpleproxy
<skip />
Description: Simple TCP/IP proxy
Simpleproxy program acts as simple TCP proxy. It listens on a local
socket, and any connection to this port will be forwarded to another
socket at the remote host. It can also use an HTTPS proxy server to
forward connections, and can be configured via command line as well as a
config file.
Ну, есть ещё xinetd.
<skip />
--
Peter V. Saveliev
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-02 7:11 ` Peter V. Saveliev
@ 2007-11-02 7:36 ` altlinux
2007-11-02 8:03 ` Peter V. Saveliev
0 siblings, 1 reply; 18+ messages in thread
From: altlinux @ 2007-11-02 7:36 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
Большое спасибо !!!
буду теперь решать проблему, единственно непонял чем мне xinetd может
помочь, извиняюсь за незнание.
> В сообщении от Friday 02 November 2007 08:57:36 altlinux@aaanet.ru написал(а):
>
>> сервак на который происходит проброс под windows.
>>
>
> Час от часу не легче :))
>
> Короче, Вы можете разгребать ответы в ту же AS, откуда были запросы, но для
> этого Вам нужно знать или хранить, откуда эти запросы таки пришли. Если
> сервис не на самом шлюзе, тогда у routing engine просто нет шансов узнать, к
> какому запросу относится ответ, не залезая в connection tracking. А туда оно
> лазить не умеет, iirc.
>
> Поскольку перед нами не стоит задачи научить rpdb смотреть в таблицы
> connection tracking (что было бы нарушением иерархии протоколов -- ip не
> должен ничего знать про вышележащее (что не мешает tcp нарушать иерархию,
> однако, но опустим этот момент)), самое простое -- изолировать траффик. Можно
> раскидать на разные интерфейсы, разные vlan или разные ip.
>
>
>> 1. не подскажите, а поможет ли мне если я на сервере(шлюзе) добавлю алиас
>> IP адрес и добавлю таблицу маршрутов для этих адресов и на сервере на
>> который осуществляется проброс добавить алиас IP адрес, вместо отдельных
>> сетей/vlan.
>>
>
> Может сработать.
>
>
>> 2. и еще один вопрос, нет ли какого нибудь TCP прокси который
>> бы пробрасывал трафик, который мог бы заменить dnat
>>
>
> # apt-cache show simpleproxy
> Package: simpleproxy
> <skip />
> Description: Simple TCP/IP proxy
> Simpleproxy program acts as simple TCP proxy. It listens on a local
> socket, and any connection to this port will be forwarded to another
> socket at the remote host. It can also use an HTTPS proxy server to
> forward connections, and can be configured via command line as well as a
> config file.
>
> Ну, есть ещё xinetd.
>
> <skip />
>
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-02 7:36 ` altlinux
@ 2007-11-02 8:03 ` Peter V. Saveliev
2007-11-02 10:43 ` altlinux
0 siblings, 1 reply; 18+ messages in thread
From: Peter V. Saveliev @ 2007-11-02 8:03 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
В сообщении от Friday 02 November 2007 10:36:14 altlinux@aaanet.ru написал(а):
> Большое спасибо !!!
> буду теперь решать проблему,
Главное, напишите, как решилось. Или не решилось, и будем пытацо решить
дальше.
> единственно непонял чем мне xinetd может
> помочь, извиняюсь за незнание.
Ой, ну как же. Читаем man xinetd.conf, ищем строчку redirect. Но вообще,
simpleproxy может оказаться проще.
<skip />
--
Peter V. Saveliev
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-02 8:03 ` Peter V. Saveliev
@ 2007-11-02 10:43 ` altlinux
2007-11-02 11:11 ` Peter V. Saveliev
2007-11-02 14:18 ` Serge
0 siblings, 2 replies; 18+ messages in thread
From: altlinux @ 2007-11-02 10:43 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
simpleproxy
решил проблему за 5 мин
спасибо большое!!!
> В сообщении от Friday 02 November 2007 10:36:14 altlinux@aaanet.ru написал(а):
>
>> Большое спасибо !!!
>> буду теперь решать проблему,
>>
>
> Главное, напишите, как решилось. Или не решилось, и будем пытацо решить
> дальше.
>
>
>> единственно непонял чем мне xinetd может
>> помочь, извиняюсь за незнание.
>>
>
> Ой, ну как же. Читаем man xinetd.conf, ищем строчку redirect. Но вообще,
> simpleproxy может оказаться проще.
>
> <skip />
>
>
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-02 10:43 ` altlinux
@ 2007-11-02 11:11 ` Peter V. Saveliev
2007-11-06 10:26 ` altlinux
2007-11-02 14:18 ` Serge
1 sibling, 1 reply; 18+ messages in thread
From: Peter V. Saveliev @ 2007-11-02 11:11 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
В сообщении от Friday 02 November 2007 13:43:53 altlinux@aaanet.ru написал(а):
> simpleproxy
> решил проблему за 5 мин
> спасибо большое!!!
<skip />
не за что :)
то есть, схема теперь такая, я правильно понял:
/-------------------------------------\ /------------\
uplink S --->+ ip rule dev S table S | | win mail |
. | service simpleproxy tcp:25 +------->+ server |
uplink U --->+ ip rule dev U table U | | |
\-------------------------------------/ \------------/
? или проще ?
ЗЫ: если simpleproxy на 25 порту из-под рута, то тогда имеет смысл также
подумать, не посадить ли его на 2225 порт + редирект, но при этом не из-под
рута -- чорт его знает, какие в simpleproxy могут быть переполнения...
--
Peter V. Saveliev
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-10-31 11:25 ` Peter V. Saveliev
2007-11-01 7:25 ` altlinux
@ 2007-11-02 12:28 ` Igor Solovyov
2007-11-02 12:54 ` Peter V. Saveliev
1 sibling, 1 reply; 18+ messages in thread
From: Igor Solovyov @ 2007-11-02 12:28 UTC (permalink / raw)
To: sysadmins
Hi!
On Wed, 31 Oct 2007 14:25:16 +0300
"Peter V. Saveliev" <peet@altlinux.ru> wrote:
> в идеале -- самое простое -- это иметь по интерфейсу к каждому из
> шлюзов. Тогда:
>
> ip route add default via S table S
> ip route add default via U table U
> ip route add default via U table main
> ip rule add dev ethS table S
> ip rule add dev ethU table U
>
> Эта схема опробована и работает на мэйл-сервере, который глядит в две
> разных AS.
Вот у меня встала подобная задача сейчас и что-то никак сообразить не
могу как лучше сделать...
Есть два канала, один с и-нетовским айпишником (дорогой), назовем
его канал 1, другой с приватным, но очень недорогой, назовем его
каналом 2. Ставлю маршрутизатор, он же почтовик, он же прокси.
Интерфейс eth0 смотрит в локалку и на циску в локалке, которая настроена
провайдером так, что выпускает наружу только с адреса интерфейса eth0.
Циска мне для руления недоступна.
Есть eth1 (приватный адрес) смторит в канал 2.
Планирую весь веб-трафик локалки через squid выпустить/впустить в канал
2. Почтовик нужно выпускать в канал 1 на реальный айпишник, он слушает
на интерфейсе eth1.
т.е. выглядит так:
канал 1 <-- циска <-- eth0 postfix squid eth1 ---> канал 2
локалка <-------------^
Пока default gw сделал на 2-й канал. Вот что-то не могу сообразить как
почтовику работать на канал 1. Если я сделаю второй default gw на адрес
циски, как в приведенном выше примере, то postfix поймет, что для него
выход наружу именно в циске? Что-то запутался я... :-(
А потом мне еще нужно будет выпустить так же в канал 1, ситриксовский
трафик локалки... :-)
--
Best Regars!
Igor Solovyov
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-02 12:28 ` Igor Solovyov
@ 2007-11-02 12:54 ` Peter V. Saveliev
2007-11-02 17:58 ` Igor Solovyov
2007-11-11 17:21 ` Igor Solovyov
0 siblings, 2 replies; 18+ messages in thread
From: Peter V. Saveliev @ 2007-11-02 12:54 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
В сообщении от Friday 02 November 2007 15:28:34 Igor Solovyov написал(а):
<skip />
> Пока default gw сделал на 2-й канал. Вот что-то не могу сообразить как
> почтовику работать на канал 1. Если я сделаю второй default gw на адрес
> циски, как в приведенном выше примере, то postfix поймет, что для него
> выход наружу именно в циске? Что-то запутался я... :-(
> А потом мне еще нужно будет выпустить так же в канал 1, ситриксовский
> трафик локалки... :-)
Давайте посмотрим, как вообще можно управлять классами маршрутизации в Linux.
Их нам доступно 255 - 4 == 251.
Зарезервирвано четыре класса:
$ cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
Остальные доступны. По традиции, классы называют "таблицами маршрутизации".
Выбирать, какая таблица для чего доступна, можно с помощью rpdb (routing
policy database), она rpdb рулицо через ip rule:
# ip rule add help
Usage: ip rule [ list | add | del | flush ] SELECTOR ACTION
SELECTOR := [ not ] [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark
FWMARK[/MASK] ]
[ dev STRING ] [ pref NUMBER ]
ACTION := [ table TABLE_ID ]
[ prohibit | reject | unreachable ]
[ realms [SRCREALM/]DSTREALM ]
TABLE_ID := [ local | main | default | NUMBER ]
То есть, реально мы можем зарулить пакет по fwmark и dev, т.к. src/dst могут
быть любые в любом случае. Итого, наиболее корректный пример был бы такой
(подразумеваются: S,U -- шлюзы провайдеров; нужно также внести записи в
rt_tables, где S и U < 253, например, 100 и 101 соотв.):
# добавим деволтные шлюзы для каждого из провадеров в свой класс
ip route add default via S table S
ip route add default via U table U
# добавим один из них как "совсем-совсем" дефолтный для всего траффика,
# который мы не учтём
ip route add default via U table main
# дальше: первые два правила -- "откуда пришло -- туда ушло"
# (надо заметить -- работает только для локальных сервисов)
ip rule add pref 100 dev S table S
ip rule add pref 101 dev U table U
# дальше: раскидываем по портам (всё, что на 80 порт -- через провайдера U)
iptables -t mangle -I FORWARD -m tcp -p tcp --dport 80 -j MARK --set-mark 80
ip rule add pref 200 fwmark 80 table U
ну, или OUTPUT или попробовать POSTROUTING -- но я не помню, POSTROUTING в
mangle отрабатывает до или после rpdb. Легко выясняется эмпирически.
# итеративно, пока сервисы не кончатся :)
...
В этой же схеме можно использовать l7-filter и ставить марки не по портам, а
по результатам анализа траффика.
--
Peter V. Saveliev
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-02 10:43 ` altlinux
2007-11-02 11:11 ` Peter V. Saveliev
@ 2007-11-02 14:18 ` Serge
2007-11-02 14:48 ` Peter V. Saveliev
1 sibling, 1 reply; 18+ messages in thread
From: Serge @ 2007-11-02 14:18 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
> simpleproxy
> решил проблему за 5 мин
> спасибо большое!!!
я так и не понял, почему DNAT не устроил, поясните плиз
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-02 14:18 ` Serge
@ 2007-11-02 14:48 ` Peter V. Saveliev
2007-11-06 7:56 ` Alexey I. Froloff
0 siblings, 1 reply; 18+ messages in thread
From: Peter V. Saveliev @ 2007-11-02 14:48 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
В сообщении от Friday 02 November 2007 17:18:23 Serge написал(а):
> > simpleproxy
> > решил проблему за 5 мин
> > спасибо большое!!!
>
> я так и не понял, почему DNAT не устроил, поясните плиз
>
При наличии двух аплинков возникает проблема двух умолчательных шлюзов.
Потенциально, запрос с внешнего адреса Ы может придти через любой из
аплинков, и ответить надо именно через тот шлюз, через который пришёл запрос,
ибо асимметричный раутинг иногда работает совсем не так, как ожидалось.
При использовании DNAT нет бескровного способа выяснить, через какой шлюз
пришёл запрос, на который сейчас идёт ответ из внутренней сети. Приходится
думать разные схемы.
--
Peter V. Saveliev
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-02 12:54 ` Peter V. Saveliev
@ 2007-11-02 17:58 ` Igor Solovyov
2007-11-11 17:21 ` Igor Solovyov
1 sibling, 0 replies; 18+ messages in thread
From: Igor Solovyov @ 2007-11-02 17:58 UTC (permalink / raw)
To: sysadmins
Hi!
On Fri, 2 Nov 2007 15:54:18 +0300
"Peter V. Saveliev" <peet@altlinux.ru> wrote:
Спасибо. Все понял.
> # дальше: раскидываем по портам (всё, что на 80 порт -- через
> # провайдера U)
> iptables -t mangle -I FORWARD -m tcp -p tcp --dport 80 -j MARK
> --set-mark 80 ip rule add pref 200 fwmark 80 table U
А этого не потребуется. Веб-трафик будет идти через squid, который
и слушает на нужном интерфейсе, да и у него есть вроде настройка
с какого интерфейса наружу отправлять.
> ну, или OUTPUT или попробовать POSTROUTING -- но я не помню,
> POSTROUTING в mangle отрабатывает до или после rpdb. Легко выясняется
> эмпирически.
>
> # итеративно, пока сервисы не кончатся :)
Ага. Понял.
> ...
>
> В этой же схеме можно использовать l7-filter и ставить марки не по
> портам, а по результатам анализа траффика.
Ладно, интересно. Поковыряюсь.
Большое спасибо!
--
Best Regars!
Igor Solovyov
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-02 14:48 ` Peter V. Saveliev
@ 2007-11-06 7:56 ` Alexey I. Froloff
0 siblings, 0 replies; 18+ messages in thread
From: Alexey I. Froloff @ 2007-11-06 7:56 UTC (permalink / raw)
To: sysadmins
[-- Attachment #1: Type: text/plain, Size: 469 bytes --]
* Peter V. Saveliev <peet@> [071102 17:49]:
> При использовании DNAT нет бескровного способа выяснить, через
> какой шлюз пришёл запрос, на который сейчас идёт ответ из
> внутренней сети. Приходится думать разные схемы.
Хм. А у меня работает рецепт из LARTC... Два аплинка и DNAT.
--
Regards, Alexey I. Froloff
AIF5-RIPN, AIF5-RIPE
-------------------------------------------
Inform-Mobil, Ltd. System Administrator
http://www.inform-mobil.ru/
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-02 11:11 ` Peter V. Saveliev
@ 2007-11-06 10:26 ` altlinux
0 siblings, 0 replies; 18+ messages in thread
From: altlinux @ 2007-11-06 10:26 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
DNAT для uplink U а на uplink S повесил simpleproxy
> /----------------------\ /------------\
> uplink S - service simpleproxy ExtIp:port| | | win mail |
> . | +------->+ server |
> uplink U ---> + ip rule dev U table U | | |
> \----------------------/ \------------/
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Sysadmins] два шлюза и проброс во внутреннюю сеть
2007-11-02 12:54 ` Peter V. Saveliev
2007-11-02 17:58 ` Igor Solovyov
@ 2007-11-11 17:21 ` Igor Solovyov
1 sibling, 0 replies; 18+ messages in thread
From: Igor Solovyov @ 2007-11-11 17:21 UTC (permalink / raw)
To: sysadmins
Hi!
On Fri, 2 Nov 2007 15:54:18 +0300
"Peter V. Saveliev" <peet@altlinux.ru> wrote:
> Давайте посмотрим, как вообще можно управлять классами маршрутизации
> в Linux....
В общем докладываю.
На всякий случай напомню, схема такова: маршрутизатор, два канала,
оба с приватными адресами на моей стороне, но один из них nat-ится
циской, которая имеет реальный ip:
канал 2 - сюда нужно выпустить web-трафик
adsl-модем
(192.168.1.1)
|
192.168.1.2
маршрутизатор
(прокси, почта)
192.168.151.22
|
|<- локалка 192.168.151.0/24
|
(192.168.151.254)
cisco
канал 1 - сюда нужно выпустить почту
интрефейсы:
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:80:48:22:BA:94
inet addr:192.168.151.22 Bcast:192.168.151.255
.....
eth1 Link encap:Ethernet HWaddr 00:80:48:4F:A1:E3
inet addr:192.168.1.2 Bcast:192.168.151.255
....
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
....
Слушающие сервисы:
192.168.151.22:25 0.0.0.0:* LISTEN 4838/master
192.168.151.22:110 0.0.0.0:* LISTEN 4761/cyrmaster
192.168.151.22:143 0.0.0.0:* LISTEN 4761/cyrmaster
192.168.151.22:8080 0.0.0.0:* LISTEN 4987/(squid)
192.168.151.22:53 0.0.0.0:* LISTEN 4710/named
127.0.0.1:53 0.0.0.0:* LISTEN 4710/named
127.0.0.1:953 0.0.0.0:* LISTEN 4710/named
т.е. почта и прокси слушают только на eth0, глядящий в локалку
и на циску с реальным айпишником снаружи (канал 1).
маршрут по умолчанию установлен на канал 2:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
192.168.151.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth1
Теперь iproute:
# cat /etc/iproute2/rt_tables
255 local
254 main
253 default
0 unspec
150 adsltab # таблица для канала 2
151 dtab # таблица для канала 1
# ip ru l
0: from all lookup local
150: from all iif eth1 lookup adsltab
151: from all iif eth0 lookup dtab
200: from all fwmark 0x19 lookup dtab
201: from all fwmark 0x6e lookup dtab
202: from all fwmark 0x8f lookup dtab
204: from all fwmark 0xe4 lookup adsltab
32766: from all lookup main
32767: from all lookup default
# ip ro l t adsltab
default via 192.168.1.1 dev eth1
# ip ro l t dtab
default via 192.168.151.254 dev eth0
так выглядит маркировка пакетов:
# iptables -t mangle -nL
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
MARK tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 MARK set 0x19
MARK tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:110 MARK set 0x6e
MARK tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:143 MARK set 0x8f
MARK tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 MARK set 0xe4
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
В результате всего этого squid исправно выгоняет трафик в канал 2(eth1)
как и задумывалось, а вот postfix тоже упорно пытается выйти наружу
через этот же канал 2 вместо канала 1, что наблюдается tcpdump-ом. :-(
В общем пока получилось только наполовину. Squid выходит в нужный канал,
но он бы и так туда выходил бы, раз default gw туда прописан. :-(
Где же грабли порылись? Уже второй день эротикой занимаюсь...
--
Best Regars!
Igor Solovyov
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2007-11-11 17:21 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-10-31 6:40 [Sysadmins] два шлюза и проброс во внутреннюю сеть altlinux
2007-10-31 11:25 ` Peter V. Saveliev
2007-11-01 7:25 ` altlinux
2007-11-01 7:50 ` Peter V. Saveliev
2007-11-02 5:57 ` altlinux
2007-11-02 7:11 ` Peter V. Saveliev
2007-11-02 7:36 ` altlinux
2007-11-02 8:03 ` Peter V. Saveliev
2007-11-02 10:43 ` altlinux
2007-11-02 11:11 ` Peter V. Saveliev
2007-11-06 10:26 ` altlinux
2007-11-02 14:18 ` Serge
2007-11-02 14:48 ` Peter V. Saveliev
2007-11-06 7:56 ` Alexey I. Froloff
2007-11-02 12:28 ` Igor Solovyov
2007-11-02 12:54 ` Peter V. Saveliev
2007-11-02 17:58 ` Igor Solovyov
2007-11-11 17:21 ` Igor Solovyov
ALT Linux sysadmins discussion
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sysadmins/0 sysadmins/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sysadmins sysadmins/ http://lore.altlinux.org/sysadmins \
sysadmins@lists.altlinux.org sysadmins@lists.altlinux.ru sysadmins@lists.altlinux.com
public-inbox-index sysadmins
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sysadmins
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git