URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 23858
[ Назад ]

Исходное сообщение
"2 провайдера, nat"

Отправлено antrocon , 07-Июн-12 17:45 
Доброго времени суток!

Пытаюсь придумать наиболее простой конфиг шлюза для работы с 2мя провайдерами. Смысл такой: есть 2 провайдера, ip xxx и yyy, есть локалка 172.16.1.0/24, в этой локалке есть некий сервер 172.16.1.50 у которого необходимо вывесить сервис, слушающий на 8000 порту, через обоих провайдеров. Т.е xxx:8000->172.16.1.50:8000 и yyy:8000->172.16.1.50:8000; в интернет локалка должна идти через первого провайдера, а при его падении - через второго.
Сходу приходит на ум довольно простой и изящный конфиг, типа:


interface FastEthernet0/0
description <<<lan>>>
ip address 172.16.1.1 255.255.255.240
ip nat inside
ip virtual-reassembly
duplex auto
speed auto
no cdp enable
!
interface FastEthernet1/0
description <<<prov-xxx>>>
ip address xxx.xxx.xxx.xxx 255.255.255.240
ip nat outside
ip virtual-reassembly
duplex auto
speed auto
no cdp enable
!
interface FastEthernet1/1
description <<<prov-yyy>>>
ip address yyy.yyy.yyy.yyy 255.255.255.224
ip nat outside
ip virtual-reassembly
duplex auto
speed auto
no cdp enable
!
ip local policy route-map linet
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 xxx-gw track 10
ip route 0.0.0.0 0.0.0.0 yyy-gw 20 track 20
ip nat inside source route-map prov-xxx interface FastEthernet1/0 overload
ip nat inside source route-map prov-yyy interface FastEthernet1/1 overload
ip nat inside source static tcp 172.16.1.50 8000 xxx.xxx.xxx.xxx 8000 extendable
ip nat inside source static tcp 172.16.1.50 8000 yyy.yyy.yyy.yyy 8000 extendable
!
access-list 10 permit 172.16.1.0 0.0.0.255
access-list 150 permit ip host yyy.yyy.yyy.yyy any
!
route-map prov-xxx permit 10
match ip address 10
match interface FastEthernet1/0
!
route-map prov-yyy permit 10
match ip address 10
match interface FastEthernet1/1
!
route-map linet permit 10
match ip address 150
set ip next-hop yyy-gw
!

Однако, когда подключение идет на 8000 порт через второго провайдера, циска хоть и натирует правильным айпи, но пакет выпускает через первого провайдера, который является дефолтный маршрутом (т.е. уходит пакет с сорцом yyy.yyy.yyy.yyy на шлюз xxx.xxx.xxx.xxz) - ессно так ничего работать не будет, т.к шлюз провайдера отбрасывает пакеты не из своей сети.
В качестве обходного варианта можно поднять алиас на серваке, скажем 172.16.1.150, и пакеты с этого айпи маршрутизировать через другого провайдера:

interface FastEthernet0/0
description <<<lan>>>
ip address 172.16.1.1 255.255.255.240
ip nat inside
ip virtual-reassembly
ip policy route-map inet
duplex auto
speed auto
no cdp enable
!
access-list 50 permit 172.16.1.150
!
route-map inet permit 10
match ip address 50
set ip next-hop yyy-gw
!

Но хотелось бы прописывания алиасов избежать.

Собственно вопрос - есть ли какой-либо другой простой и изящный способ разрулить такую ситуацию?


Содержание

Сообщения в этом обсуждении
"2 провайдера, nat"
Отправлено бен Бецалель , 07-Июн-12 18:46 
попробуй такую конструкцию
ip nat inside source static tcp 192.168.1.1 80 1.1.1.67 80 route-map NAT_STAT_ISP1
ip nat inside source static tcp 192.168.1.1 80 2.2.2.50 80 route-map NAT_STAT_ISP2

"2 провайдера, nat"
Отправлено antrocon , 08-Июн-12 12:58 
> попробуй такую конструкцию
> ip nat inside source static tcp 192.168.1.1 80 1.1.1.67 80 route-map NAT_STAT_ISP1
> ip nat inside source static tcp 192.168.1.1 80 2.2.2.50 80 route-map NAT_STAT_ISP2

либо я не понял смысла, либо не работает такая схема.


ip nat inside source static tcp 172.16.1.50 8000 yyy.yyy.yyy.yyy 8000 route-map isp2-route extendable
route-map isp2-route permit 10
set ip next-hop yyy-gw

все равно пакет уходит через первого провайдера, который является дефолтным маршрутом, хотя и натируется правильным айпи yyy.yyy.yyy.yyy.

"2 провайдера, nat"
Отправлено AlexDv , 08-Июн-12 13:00 
>[оверквотинг удален]
>> ip nat inside source static tcp 192.168.1.1 80 2.2.2.50 80 route-map NAT_STAT_ISP2
> либо я не понял смысла, либо не работает такая схема.
>
 
> ip nat inside source static tcp 172.16.1.50 8000 yyy.yyy.yyy.yyy 8000 route-map isp2-route
> extendable
> route-map isp2-route permit 10
> set ip next-hop yyy-gw
>

> все равно пакет уходит через первого провайдера, который является дефолтным маршрутом,
> хотя и натируется правильным айпи yyy.yyy.yyy.yyy.

Я пробовал эту схему в GNS-е, у меня не заработала.


"2 провайдера, nat"
Отправлено бен Бецалель , 08-Июн-12 15:11 
>[оверквотинг удален]
>> ip nat inside source static tcp 192.168.1.1 80 2.2.2.50 80 route-map NAT_STAT_ISP2
> либо я не понял смысла, либо не работает такая схема.
>
 
> ip nat inside source static tcp 172.16.1.50 8000 yyy.yyy.yyy.yyy 8000 route-map isp2-route
> extendable
> route-map isp2-route permit 10
> set ip next-hop yyy-gw
>

> все равно пакет уходит через первого провайдера, который является дефолтным маршрутом,
> хотя и натируется правильным айпи yyy.yyy.yyy.yyy.

у народа получалось http://www.certification.ru/cgi-bin/forum.cgi?action=thread&...
я тоже где-то делал, работало, свой конфиг вот найти не могу....


"2 провайдера, nat"
Отправлено AlexDv , 07-Июн-12 18:52 
>[оверквотинг удален]
> access-list 50 permit 172.16.1.150
> !
> route-map inet permit 10
>  match ip address 50
>  set ip next-hop yyy-gw
> !
>

> Но хотелось бы прописывания алиасов избежать.
> Собственно вопрос - есть ли какой-либо другой простой и изящный способ разрулить
> такую ситуацию?

Самый простой и изящный - заводить свои PI и AS, по другому только через дополнительный роут-мап.
Возможен еще вариант на одном IP, если приложение так умеет.
ip nat inside source static tcp 172.16.1.50 8888 xxx.xxx.xxx.xxx 8000 extendable
ip nat inside source static tcp 172.16.1.50 8000 yyy.yyy.yyy.yyy 8000 extendable


"2 провайдера, nat"
Отправлено antrocon , 08-Июн-12 13:05 
>>[оверквотинг удален]
> Самый простой и изящный - заводить свои PI и AS, по другому
> только через дополнительный роут-мап.

своей as нет и не предвидится :(
а как через дополнительный роут-мап?

> Возможен еще вариант на одном IP, если приложение так умеет.
> ip nat inside source static tcp 172.16.1.50 8888 xxx.xxx.xxx.xxx 8000 extendable
> ip nat inside source static tcp 172.16.1.50 8000 yyy.yyy.yyy.yyy 8000 extendable

для меня этот вариант примерно равнозначен прописыванию алиасов, я могу это сделать, но только если не будет более красивого решения.


"2 провайдера, nat"
Отправлено AlexDv , 08-Июн-12 14:15 
>>>[оверквотинг удален]
>> Самый простой и изящный - заводить свои PI и AS, по другому
>> только через дополнительный роут-мап.
> своей as нет и не предвидится :(
> а как через дополнительный роут-мап?
>> Возможен еще вариант на одном IP, если приложение так умеет.
>> ip nat inside source static tcp 172.16.1.50 8888 xxx.xxx.xxx.xxx 8000 extendable
>> ip nat inside source static tcp 172.16.1.50 8000 yyy.yyy.yyy.yyy 8000 extendable
> для меня этот вариант примерно равнозначен прописыванию алиасов, я могу это сделать,
> но только если не будет более красивого решения.

Как-то так на внутреннем интерфейсе

route-map PBR-TO-ISP permit 10
match ip address 100
set ip next-hop 1.1.1.1
!
route-map PBR-TO-ISP permit 30
match ip address 200
set ip next-hop 2.2.2.2



"2 провайдера, nat"
Отправлено cant , 07-Июн-12 19:19 
> Но хотелось бы прописывания алиасов избежать.

Раскрасьте пакеты разными tos на внешних интерфейсах,
сервер ответит на пакеты тем же tos, а потом полиси на циске по tos туда откуда пришел пакет.


"2 провайдера, nat"
Отправлено antrocon , 08-Июн-12 12:59 
>> Но хотелось бы прописывания алиасов избежать.
> Раскрасьте пакеты разными tos на внешних интерфейсах,
> сервер ответит на пакеты тем же tos, а потом полиси на циске
> по tos туда откуда пришел пакет.

попробовал - входящие пакеты маркируются, но в ответном пакете от сервака tos-поле сбрасывается на дефолтный 0, соответственно циска отличить эти пакеты от остальных не может.


"2 провайдера, nat"
Отправлено Илья , 08-Июн-12 15:12 
попробуйте так
interface FastEthernet0/0
  ip policy route-map ISP


route-map ISP deny 5
match ip address nat_deny
!
route-map ISP permit 10
match ip address nat_allow
set ip next-hop verify-availability x.x.x.x 1 track 111
set ip next-hop verify-availability y.y.y.y 2 track 222
!
route-map ISP permit 20
match ip address nat_allow2
set ip next-hop verify-availability y.y.y.y 1 track 222
set ip next-hop verify-availability x.x.x.x 2 track 111

Это поможет разрулить исходящий трафик, но проблема в корне не решаема без своей AS


"2 провайдера, nat"
Отправлено antrocon , 09-Июн-12 10:56 
AlexDV,Илья, т.е. все в итоге сводится к pbr на основе source-адреса источника, т.е. никакого хака, о котором я не догадывался, все же нет...
ок, тогда буду прописывать алиасы и юзать pbr, как самое простое решение.

Всем спасибо за помощь! :)