Jump to content

Recommended Posts

Posted

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?

Posted

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

Posted

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

 

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

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

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

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

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

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

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

 

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

 

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

 

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

У меня такая конфигурация 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 Мбит в максимуме, работает хорошо.

Edited by Diatel
Posted

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

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

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

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

Posted

Да не надо никаких алиасов прописывать, у меня замечательно работает НАТ, причем натится в адреса которых в системе нет, и находятся они за 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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.