The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проблема с iproute2"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT)
Изначальное сообщение [ Отслеживать ]

"Проблема с iproute2"  +/
Сообщение от Alex (??) on 24-Июн-11, 11:15 
Всем привет. Такая проблема:
Есть локалка и машина с линухом шлюз. В локалке стоит почтовый сервер, на него проброшены порты со шлюза. К шлюзу приходят два разных провайдера. Задача сделать так, чтобы траффик ходил по обоим каналам одновременно, т.е. на почту можно было бы попасть по обоим каналам.Использовал для этого iproute2. Проблема в том, что приходящие пакеты доходят до почтовика, он отвечает, но в обратку дальше шлюза не уходят.
Вот конфиг:
#!/bin/sh
#

T1="akado"
T2="2kom"

IP1="83.167.102.XXX"
IP2="195.98.184.XXX"

IF_LOCAL="eth0"
IF1="eth2"
IF2="eth1"

NET_LOCAL="192.168.1.0/24"
NET1="83.167.102.XXX/24"
NET2="195.98.184.XXX/30"

GW1="83.167.102.YYY"
GW2="195.98.184.YYY"

ip route flush table $T1
ip route flush table $T2

#для akado
ip route add $NET1 dev $IF1 table $T1  
ip route add $NET_LOCAL dev $IF_LOCAL table $T1      
ip route add "127.0.0.0/8" dev "lo"   table $T1      
ip route add $NET2 dev $IF2  table $T1
ip route add default via $GW1 dev $IF1 table $T1

#для 2kom
ip route add $NET2 dev $IF2  table $T2  
ip route add $NET1 dev $IF1  table $T2
ip route add $NET_LOCAL dev $IF_LOCAL table $T2        
ip route add "127.0.0.0/8" dev "lo"   table $T2        
ip route add default via $GW2 dev $IF2 table $T2  

ip route add $NET1 dev $IF1 src $IP1 table $T1
ip route add $NET2 dev $IF2 src $IP2 table $T2

ip rule delete table $T1
ip rule delete table $T1
ip rule delete table $T2
ip rule delete table $T2

ip rule add  from $NET1 table $T1
ip rule add  from $NET2 table $T2

ip rule add  table 221
ip route add default table 221 proto static \
            nexthop via $GW1 dev $IF1   \
            nexthop via $GW2 dev $IF2

ip route flush cache

exit 0

-A PREROUTING -p tcp -m tcp --dport 2525 -j DNAT --to-destination 192.168.1.254
-A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.1.254
-A PREROUTING -p tcp -m tcp --dport 143 -j DNAT --to-destination 192.168.1.254
-A PREROUTING -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.1.254
-A POSTROUTING -s 192.168.1.0/24 -o eth2 -j SNAT --to-source 83.167.102.XXX
-A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to-source 195.98.184.XXX

Ответить | Правка | Cообщить модератору

Оглавление

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


1. "Проблема с iproute2"  +/
Сообщение от djaarf (??) on 24-Июн-11, 15:52 
обратный траффик почтовика попадает в первое правило
> -A POSTROUTING -s 192.168.1.0/24 -o eth2 -j SNAT --to-source 83.167.102.XXX
> -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to-source 195.98.184.XXX

на почтовике поднять второй ip адрес, поставить слушать нужные сервисы


и сделать чтото вроде

> -A POSTROUTING -s MAIL_SECOND_IP -o eth1 -j SNAT --to-source 195.98.184.XXX
> -A POSTROUTING -s 192.168.1.0/24 -o eth2 -j SNAT --to-source 83.167.102.XXX

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Проблема с iproute2"  +/
Сообщение от Alex (??) on 25-Июн-11, 12:12 
> обратный траффик почтовика попадает в первое правило
>> -A POSTROUTING -s 192.168.1.0/24 -o eth2 -j SNAT --to-source 83.167.102.XXX
>> -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to-source 195.98.184.XXX
> на почтовике поднять второй ip адрес, поставить слушать нужные сервисы
> и сделать чтото вроде
>> -A POSTROUTING -s MAIL_SECOND_IP -o eth1 -j SNAT --to-source 195.98.184.XXX
>> -A POSTROUTING -s 192.168.1.0/24 -o eth2 -j SNAT --to-source 83.167.102.XXX

Ничего не изменилось, также пакеты не уходят в обратку. Кроме того нужно еще на один локальный ip пробрасывать с обоих каналов rdp.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Проблема с iproute2"  +/
Сообщение от PavelR (??) on 25-Июн-11, 13:27 
http://www.opennet.dev/tips/1651_route_iptables_linux_nat.shtml
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Проблема с iproute2"  +/
Сообщение от Alex (??) on 30-Июн-11, 00:37 
> http://www.opennet.dev/tips/1651_route_iptables_linux_nat.shtml

Спасибо. Навело на правильные мысли. Решил следующим образом.
Мало ли кому понадобится.
В итоге по 2 каналам доступна почта, терминал и веб-сервер.
Скрипт:
#!/bin/bash

IF1=eth1
IF2=eth2
IP2=83.167.102.XXX
IP1=195.98.184.XXX
P2=83.167.102.YYY
P1=195.98.184.YYY
P2_NET=83.167.102.ZZZ/24
P1_NET=195.98.184.ZZZ/30

ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2


ip rule add fwmark 2 table T2
ip rule add prio 202 from $P2_NET table T2

ip route flush cache


Дефолтный gw P1 прописан в таблице main.

Правила в iptables:
iptables -t mangle -A PREROUTING -i eth0 -m state --state ESTABLISHED -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -p tcp --dport 25 -d 83.167.102.XXX -j CONNMARK --set-mark 2
iptables -t mangle -A PREROUTING -p tcp --dport 2525 -d 83.167.102.XXX -j CONNMARK --set-mark 2

Аналогично добавляем правила по портам, которые нужны.

ip ru sh
0:      from all lookup local
202:    from 83.167.102.xxx/24 lookup T2
32765:  from all fwmark 0x2 lookup T2
32766:  from all lookup main
32767:  from all lookup default

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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