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

bgp+nat+2 uplink

bgp+nat+2 uplink

 

Уже голову сломал:

Есть сервер (gentoo) с 3 сетевыми:

eth0 - uplink1 основной

eth1 - uplink2 резерв и перегруз 1 линка

eth3 - local

Поднят BGP и маршруты получаются.

 

Мысль тупит на моменте: есть нат и обычное правило:

-A POSTROUTING -s x.x.x.x/y -o iface -j SNAT --to-source z.z.z.z

но т.к. интерфейсов 2 или более - что указывать в качестве iface?

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


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

Сделать два таких правила, для каждого из аплинковых интерфейсов, -o просто указывает выходной интерфейс, а он будет зависеть от текущей таблицы маршрутов.

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


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

мысль интересная, но ведь надо поднять z.z.z.z на каком-либо интерфейсе...

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


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

Ну а сейчас ведь на них какие-то адреса уже есть?

 

-o - это просто критерий мэтчинга пакета, не аргумент цели SNAT.

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


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

надо поднять z.z.z.z на каком-либо интерфейсе...
Если это адрес из анонсируемой AS, то необязательно.

Всё равно аплинк пришлёт ответ на BGP-бордер.

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


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

надо поднять z.z.z.z на каком-либо интерфейсе...
Если это адрес из анонсируемой AS, то необязательно.

Всё равно аплинк пришлёт ответ на BGP-бордер.

Насколько мне кажется, Linux в таком случае просто не будет знать, куда его роутить дальше. Можно просто поднять алиас.

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


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

Ну а сейчас ведь на них какие-то адреса уже есть?
адреса есть, но адреса прова из сетки 30 для связи с ним...

вопрос больше на каком интерфейсе поднимать адреса своей автономки.

 

-o - это просто критерий мэтчинга пакета, не аргумент цели SNAT.
A POSTROUTING -s x.x.x.x/y ! -o local_iface -j SNAT --to-source z.z.z.z

 

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


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

Ну а сейчас ведь на них какие-то адреса уже есть?
Скорее всего, у товарища на них адреса не из AS, а из двухточечных сетей взаимодействия, выданных аплинками.

 

надо поднять z.z.z.z на каком-либо интерфейсе...
Если это адрес из анонсируемой AS, то необязательно.

Всё равно аплинк пришлёт ответ на BGP-бордер.

Насколько мне кажется, Linux в таком случае просто не будет знать, куда его роутить дальше. Можно просто поднять алиас.

Linux и не будет его маршрутизировать, т.к. IP-адрес назначения в ответах

сначала пройдёт через обратный NAT в postrouting'e, превратится в приватный,

и уже после этого попадёт в маршрутизацию.

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


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

Linux и не будет его маршрутизировать, т.к. IP-адрес назначения в ответах

сначала пройдёт через обратный NAT в postrouting'e, превратится в приватный,

и уже после этого попадёт в маршрутизацию.

Таки да, логично. Не задумывался, ибо у нас border и NAT - два разных роутера. Почему-то думал, что в нелокальные адреса Linux NAT-ить не захочет, проверил - таки да, работает (:

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


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

Скорее всего, у товарища на них адреса не из AS, а из двухточечных сетей взаимодействия, выданных аплинками.
Именно!

 

Linux и не будет его маршрутизировать, т.к. IP-адрес назначения в ответах

сначала пройдёт через обратный NAT в postrouting'e, превратится в приватный,

и уже после этого попадёт в маршрутизацию.

Так понимаю - мне эти адреса вообще поднимать не надо?

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


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

Так понимаю - мне эти адреса вообще поднимать не надо?
Для того, чтобы работал SNAT, это не требуется.

Для чего-то другого - может быть.

Например, если повесить публичник с маской /32 алиасом на внутренний интерфейс,

то можно будет трассировать бордер из Интернета, указывая данный IP в качестве цели.

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


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

Например, если повесить публичник с маской /32 алиасом на внутренний интерфейс,

то можно будет трассировать бордер из Интернета, указывая данный IP в качестве цели.

В этом и тупил - поднимал IP на ifb|dummy|lo и NAT не работал... но до IP извне доступ был.

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


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

У меня такая конфигурация uplink'ов и пирингов:

eth0.10--\ 
eth0.20------>BGP+NAT -eth0.100<------>FastEth 0/0.100 - BRAS<--->Много-серых-IP
eth0.30--/

 

eth0.10 uplink, адрес на интерфейсе 1.1.1.1/29

eth0.20 uplink, адрес на интерфейсе 2.2.2.2/29

eth0.30 пиринг, адрес на интерфейсе 3.3.3.3/24

eth0.100 VLAN между Border и BRAS, адрес на интерфейсе x.x.x.1/24

FastEth 0/0.100 VLAN между Border и BRAS, адрес на интерфейсе x.x.x.254/24

x.x.x.x/24, y.y.y.y/24, z.z.z.z/24 сети белых IP из моей AS.

 

Каждому uplink'у и в пиринг анонсирую свой набор подсетей белых IP, поэтому NAT зависит от выходного интерфейса.

В iptables это разруливается так, как писали выше:

$IPT -t nat -A POSTROUTING -o eth0.10 -s 10.0.0.0/24 -j SNAT --to-source x.x.x.1
$IPT -t nat -A POSTROUTING -o eth0.20 -s 10.0.0.0/24 -j SNAT --to-source y.y.y.1
$IPT -t nat -A POSTROUTING -o eth0.30 -s 10.0.0.0/24 -j SNAT --to-source z.z.z.1

 

Чтобы NAT на linux нормально работал нужно, чтобы в качестве адресов для SNAT, использовались адреса из непосредственно подключенных сетей ( C - connected - в терминологии cisco ).

Я выполнил это условие, написав все мои белые подсети как alias'ы на eth0.100.

Сейчас суммарный трафик ~200 Мбит в максимуме, работает хорошо.

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

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


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

А еще нужно не забыть маршрутик с border на фейковые адреса через BRAS добавить:

ip route add 10.0.0.0/8  via  x.x.x.254  dev eth0.100

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


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

речь шла о бордере и брасе на одной машине.

с двумя даже и вопросов не возникает.

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


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

Если убрать брас, то мало что изменится:

eth0.10--\ 
eth0.20------>BGP+NAT -eth0.xxxx<--->Много-серых-IP
eth0.30--/

Для нормальной работы NAT на любом из локальных интерфейсоф напишите Ваши белые IP в качестве alias'ов , можно оставить на каком-то из eth, можно попробовать на lo.

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

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


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

Да не надо никаких алиасов прописывать, у меня замечательно работает НАТ, причем натится в адреса которых в системе нет, и находятся они за 2 хопа, т.е. к connected тоже не относятся. Главное, чтобы трафик на адреса ната приходил на эту машину.

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


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

Join the conversation

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

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

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

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

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

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

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