The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Разделить почту и инет по разным каналам"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Разделить почту и инет по разным каналам"  
Сообщение от Fedor (??) on 20-Июл-07, 16:28 
Есть eth0 - локальная сеть, eth1 - интернет канал №1, eth2 - интернет канал №2
Нужно всю входящую и исходящую почту пустить по одному каналу, а броузить интернет по другому.
Система ASP Linux.

Вот идея маркировать пакеты идущие на 25 порт и маршрутизировать их:

# echo 200 post >> /etc/iproute2/rt_tables
# ip route add default via 172.17.17.2 dev eth2 table post
# ip route flush cache
# iptables -t mangle -A PREROUTING -p tcp --dport 25 -j MARK --set-mark 25
# ip rule add fwmark 25 table post

Сделал как написано выше, но никаких изменений не увидел. Отправляется почта через старый канал (это видно из заголовков полученного письма).
Почта должна уходить через eth2.

В чем может быть проблема, где и что не отрабатывает? Или как еще можно решить эту задачу

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Разделить почту и инет по разным каналам"  
Сообщение от Oyyo on 20-Июл-07, 16:58 
>[оверквотинг удален]
># iptables -t mangle -A PREROUTING -p tcp --dport 25 -j MARK
>--set-mark 25
># ip rule add fwmark 25 table post
>
>Сделал как написано выше, но никаких изменений не увидел. Отправляется почта через
>старый канал (это видно из заголовков полученного письма).
>Почта должна уходить через eth2.
>
>В чем может быть проблема, где и что не отрабатывает? Или как
>еще можно решить эту задачу

да вроде всё провильно, только команду
# ip route flush cache
я делаю последней, после добавленгия # ip rule add fwmark 25 table post

посмотри
ip route show table post
на присутствие шлюза

ну и
tcpdump -nn -i eth2
есть ли движение на почтовый порт
но это всё годится только для локалки, если с шлюзовой машины отправлять почту по тому же интерфейсу, нужны дополнительные напряги

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Разделить почту и инет по разным каналам"  
Сообщение от Fedor (??) on 20-Июл-07, 19:25 
>[оверквотинг удален]
>
>посмотри
>ip route show table post
>на присутствие шлюза
>
>ну и
>tcpdump -nn -i eth2
>есть ли движение на почтовый порт
>но это всё годится только для локалки, если с шлюзовой машины отправлять
>почту по тому же интерфейсу, нужны дополнительные напряги

По ip route show table post шлюз есть default via 172.17.17.2 dev eth2
По tcpdump -nn -i eth2 ничего нет, все тихо

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Разделить почту и инет по разным каналам"  
Сообщение от Oyyo on 20-Июл-07, 21:18 
>По ip route show table post шлюз есть default via 172.17.17.2 dev
>eth2
>По tcpdump -nn -i eth2 ничего нет, все тихо

сначала посмотри счётчик
iptables -t mangle -L -vxn
       10        495 MARK       all  --  *      *       10.100.238.35        0.0.0.0/0           MARK set 0x19

есть ли наличие маркированного трафика

проверь разрешён ли форвард на eth2
iptables -L FORWARD -vxn

перед тем как делать все проверки выполни
ip route flush cache
очистка кеша сбрасывает все динамические правила и заставляет сработать правило с маркером

всё должно ходить, если ходит по дефолтному маршруту, то и по этому должно ходить
выводы команд в студию

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Разделить почту и инет по разным каналам"  
Сообщение от Fedor (??) on 23-Июл-07, 15:59 
[root@mail]# ip route flush cache

[root@mail]# iptables -t mangle -L -vxn
Chain PREROUTING (policy ACCEPT 51269488 packets, 27314438700 bytes)
    pkts      bytes target     prot opt in     out     source               destination
2327967 1875856648 MARK       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:25 MARK set 0x19
  734958 916264669 MARK       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:25 MARK set 0x19

Chain INPUT (policy ACCEPT 64357454 packets, 34815047747 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 255374 packets, 49925437 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 58530622 packets, 27921750227 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 75237435 packets, 36542508582 bytes)
    pkts      bytes target     prot opt in     out     source               destination

[root@mail]# iptables -L FORWARD -vxn
Chain FORWARD (policy DROP 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination
   22925  5026345 tcp_outbound  tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0
  111828  7862986 udp_outbound  udp  --  eth1   *       0.0.0.0/0            0.0.0.0/0
    4054   113640 ACCEPT     all  --  eth1   *       0.0.0.0/0            0.0.0.0/0
   29421 12567467 ACCEPT     all  --  eth0   *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
       0        0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0           limit: avg 3/min burst 3 LOG flags 0 level 4 prefix `FORWARD packet died: '
       0        0 ACCEPT     all  --  tun0   *       0.0.0.0/0            0.0.0.0/0

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Разделить почту и инет по разным каналам"  
Сообщение от Oyyo on 23-Июл-07, 20:41 
>[root@mail]# ip route flush cache
>
>[root@mail]# iptables -t mangle -L -vxn
>Chain PREROUTING (policy ACCEPT 51269488 packets, 27314438700 bytes)
> pkts  bytes target prot opt in out     source   destination
> 2327967 1875856648 MARK  tcp  --  *  *   0.0.0.0/0   0.0.0.0/0  tcp dpt:25 MARK set 0x19
>  734958 916264669 MARK  tcp --  eth1 * 0.0.0.0/0   0.0.0.0/0  tcp dpt:25 MARK set 0x19
>

а зачем маркировать приходящий трафик или на этом интерфейсе тоже есть пользователи7

>[оверквотинг удален]
>    pkts      bytes target
>    prot opt in    
>out     source      
>         destination
>
>[root@mail]# iptables -L FORWARD -vxn
>Chain FORWARD (policy DROP 0 packets, 0 bytes)
> pkts      bytes target  prot opt in  out     source      destination
> 22925  5026345 tcp_outbound  tcp  --  eth1   *       0.0.0.0/0   0.0.0.0/0
>  111828  7862986 udp_outbound  udp  --  eth1  *       0.0.0.0/0   0.0.0.0/0

Ну да, а дальше догадайся сам, что происходит в цепочках tcp_outbound  udp_outbound ?
будем считать что там ACCEPT и больше ни чего

>
> 4054   113640 ACCEPT all  --  eth1   *   0.0.0.0/0       0.0.0.0/0
> 29421 12567467 ACCEPT  all  --  eth0   *   0.0.0.0/0   0.0.0.0/0 state RLATED, ESTABLISHED
> 0   0 LOG  all  --  *  *  0.0.0.0/0    0.0.0.0/0   limit: avg 3/min burst 3 LOG flags 0 level 4 prefix `FORWARD packet died: '
> 0   0 ACCEPT     all  --  tun0   *   0.0.0.0/0   0.0.0.0/0

а где же правило разрешающее возврат пакетов с eth2

пользователи у тебя ходят c eth0 или с tun0 ?
не очень понятна структура сети глядя на твои правила и как ты рулишь пользователей, трудно давать советы

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Разделить почту и инет по разным каналам"  
Сообщение от Fedor (??) on 24-Июл-07, 18:32 
>а где же правило разрешающее возврат пакетов с eth2
>
>пользователи у тебя ходят c eth0 или с tun0 ?
>не очень понятна структура сети глядя на твои правила и как ты
>рулишь пользователей, трудно давать советы

Сервер достался в наследство от предыдущего админа, а я еще нормально в линуксе не разобрался, поэтому и ответы такие мутные :)
Туннеля больше нет (tun0), а правило видать осталось. Сейчас на eth1 локальная сеть. Почта и инет ходит через eth0. Вот добавил eth2 и хочу туда почту отправить. Такая структура сети.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Разделить почту и инет по разным каналам"  
Сообщение от Oyyo on 24-Июл-07, 23:42 
>Сервер достался в наследство от предыдущего админа, а я еще нормально в
>линуксе не разобрался, поэтому и ответы такие мутные :)
>Туннеля больше нет (tun0), а правило видать осталось. Сейчас на eth1 локальная

удали лишние правила, разберись что нужно, что не нужно

>сеть. Почта и инет ходит через eth0. Вот добавил eth2 и
>хочу туда почту отправить. Такая структура сети.

у меня на ASPLinux 11 примерно такая же конфигурация, пишу сразу под твою
eth1 - локальная сеть, eth0 - интернет канал №1, eth2 IP 172.17.17.2 - интернет канал №2

echo 200 post >> /etc/iproute2/rt_tables
эта строка выполняется один раз, ты её уже делал знач больше не нуна
можешь заглянуть в файл и проверить наличие записи

/sbin/iptables -I FORWARD -j ACCEPT -i eth1  #разрешает ходить на любой интерфейс
если нужно модифицируй с учётом цепочек tcp_outbound  udp_outbound
/sbin/iptables -I FORWARD -j ACCEPT -o eth1 -m state --state RELATED,ESTABLISHED
/sbin/iptables -t mangle -I PREROUTING -i eth1 -p tcp -m multiport --dports 25,110 -j MARK --set-mark 25
эти команды должны выполнятся при старте системы или при рестарте сервиса iptables

/sbin/ip route add default via 172.17.17.2 table post
/sbin/ip rule add fwmark 25 table post
/sbin/ip route flush cache
ети команды выполняются при каждом старте системы или при рестарте сервиса network

при этом в файле
/etc/sysconfig/network
GATEWAY=какой.тамIP.на.eth0
GATEWAYDEV=eth0

Получается на роутере шлюз по умолчанию на eth0 , но всё что приходит с eth1 с маркой 25 будет рулится на eth2

маленький ньюанс, у тебя есть цепочки tcp_outbound  udp_outbound и трафик с eth1 пребрасываются туда, что там происходит я не знаю считается или нарезается или ещё что
главное что-б там небыл указан исходящий интерфейс
> 22925  5026345 tcp_outbound  tcp  --  eth1   *       0.0.0.0/0   0.0.0.0/0
>  111828  7862986 udp_outbound  udp  --  eth1  *       0.0.0.0/0   0.0.0.0/0

у меня рулится трафик меткой TOS , специально настроил на метку MARK тоже прекрасно работает
меткой MARK я строю приоритеты

тут проскакивала подобная тема, у чела работало если в файлах
/proc/sys/net/ipv4/conf/*/accept_source_route
стояла единица
у меня работает и так, и так
я пробовал и с 1 и с 0 кроме /proc/sys/net/ipv4/conf/lo/accept_source_route
там 1 всегда

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Разделить почту и инет по разным каналам"  
Сообщение от Oyyo on 24-Июл-07, 23:48 
P.S.

ещё раз скажу, это важно
всё описанное работает только для клиентов за интерфейсом eth1
если почту нуна отправлять с роутера для него нуна отдельное правило маркировки, иначе почта пойдёт через eth0

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Разделить почту и инет по разным каналам"  
Сообщение от Fedor (??) on 30-Авг-07, 20:38 
>у меня на ASPLinux 11 примерно такая же конфигурация, пишу сразу под
>твою
>eth1 - локальная сеть, eth0 - интернет канал №1, eth2 IP 172.17.17.2
>- интернет канал №2...........

Пробовал сделать так как написано. Всеравно почта уходит в тот же канал.
[root@w conf]# iptables -L FORWARD -vxn
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts      bytes target     prot opt in     out     source               destination
0        0 ACCEPT     all  --  eth2   *       0.0.0.0/0            0.0.0.0/0
59     8117 ACCEPT     all  --  *      eth1    0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
46     3232 ACCEPT     all  --  eth1   *       0.0.0.0/0            0.0.0.0/0
0        0 tcp_outbound  tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0
0        0 udp_outbound  udp  --  eth1   *       0.0.0.0/0            0.0.0.0/0
0        0 ACCEPT     all  --  eth1   *       0.0.0.0/0            0.0.0.0/0
0        0 ACCEPT     all  --  eth0   *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
0        0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0           limit: avg 3/min burst 3 LOG flags 0 level 4 prefix `FORWARD packet died: '

[root@w conf]# iptables -t mangle -L -vxn
Chain PREROUTING (policy ACCEPT 35054 packets, 6175996 bytes)
pkts      bytes target     prot opt in     out     source               destination
1334    58953 MARK       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           multiport dports 25,110 MARK set 0x19
Chain INPUT (policy ACCEPT 19391010 packets, 10575974159 bytes)
pkts      bytes target     prot opt in     out     source               destination
Chain FORWARD (policy ACCEPT 1540575 packets, 563988042 bytes)
pkts      bytes target     prot opt in     out     source               destination
Chain OUTPUT (policy ACCEPT 41076 packets, 9796077 bytes)
pkts      bytes target     prot opt in     out     source               destination
Chain POSTROUTING (policy ACCEPT 24088277 packets, 12226257240 bytes)
pkts      bytes target     prot opt in     out     source               destination

Вроде пакеты маркируются, но что-то не разруливаются

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Разделить почту и инет по разным каналам"  
Сообщение от geekkoo (ok) on 20-Июл-07, 23:45 
>[оверквотинг удален]
># iptables -t mangle -A PREROUTING -p tcp --dport 25 -j MARK
>--set-mark 25
># ip rule add fwmark 25 table post
>
>Сделал как написано выше, но никаких изменений не увидел. Отправляется почта через
>старый канал (это видно из заголовков полученного письма).
>Почта должна уходить через eth2.
>
>В чем может быть проблема, где и что не отрабатывает? Или как
>еще можно решить эту задачу

А почему нельзя просто сделать:
iptables -t nat -A POSTROUTING -p tcp --dport smtp  -j SNAT --to Addres#2
и MX запись в ДНС пофиксить?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Разделить почту и инет по разным каналам"  
Сообщение от Oyyo on 21-Июл-07, 01:07 
>А почему нельзя просто сделать:
>iptables -t nat -A POSTROUTING -p tcp --dport smtp  -j SNAT
>--to Addres#2
> и MX запись в ДНС пофиксить?

1. необходим ли снат вообще? и зачем нат, если необходимо просто перенаправить определённый вид трафика?
2. построутинг не умеет роутить трафик за интерфейс, т.е. на какой жатвэй необходимо послать траф за интерфесом. это знает только роут.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру