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

Исходное сообщение
"Два канала, надо завернуть маршруты"

Отправлено matriks , 05-Дек-03 15:27 
Помогите решить такую проблему:

есть два gif-интерфейса
gif0: flags=8151<UP,POINTOPOINT,RUNNING,PROMISC,MULTICAST> mtu 1500
        tunnel inet 10.106.0.64 --> 10.0.1.45
        inet 212.101.103.46 --> 212.101.103.45 netmask 0xffffff00
gif1: flags=8151<UP,POINTOPOINT,RUNNING,PROMISC,MULTICAST> mtu 1500
        tunnel inet 10.106.0.65 --> 10.0.1.45
        inet 212.101.103.48 --> 212.101.103.47 netmask 0xffffff00
        
по gif0 - должна бежать Украина
по gif1 - весь мир

в таблице маршрутизации имеем:
root# netstat -nr

Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            212.101.103.47     UGSc        1    13543   gif1
10                 10.106.1.71        UGSc        1   185589    de0
10.100/23          link#1             UC          8        0    de0
10.106.0.61        00:80:48:e9:13:c9  UHLW        5      712    de0   1182
10.106.0.65/32     link#1             UC          0        0    de0
62.16/19           212.101.103.45     UGSc        0        0   gif0
62.64.64/18        212.101.103.45     UGSc        0        0   gif0
****SKIPED****
212.101.103.45     212.101.103.46     UH        737     1620   gif0
212.101.103.47     212.101.103.48     UH          0      492   gif1


запускаю два NATа
/sbin/natd -n gif0
/sbin/natd -n gif1 -p 8672

в ipfw добавил
01000 divert 8672 ip from any to 212.111.203.38 via gif1
01001 divert 8668 ip from any to 212.111.203.36 via gif0
01010 divert 8672 ip from 192.168.0.0/16 to any
01011 divert 8668 ip from 192.168.0.0/16 to any
60000 allow ip from any to any
65535 deny ip from any to any

Однако чувствую что 01010 и 01011 не могут правильно работать. Т.е сейчас мир ходит через gif1, запросы на Украину идут через gif0, а возвращаются на gif1. Получается, что на выходе пакет не проходит через какое-то правило и не заворачивается в NAT для обработки и перепрописания заголовка поэтому и возвращается на дефаулт gif ?!

На серваке все нормально работает, т.е в провайдере проблемы нет, проблема локальная. Я раздаю Инет через VPN.
А теперь вопрос собственно: как мне правильно заварачивать все подсети, что в таблице маршрутизации на gif0(Украину). Подскажите, а лучше напишите, какие правила я должен прописать в ipfw ?!


Содержание

Сообщения в этом обсуждении
"Два канала, надо завернуть маршруты"
Отправлено A Clockwork Orange , 05-Дек-03 15:35 
>Помогите решить такую проблему:
>
>есть два gif-интерфейса
>gif0: flags=8151<UP,POINTOPOINT,RUNNING,PROMISC,MULTICAST> mtu 1500
>        tunnel inet 10.106.0.64 --> 10.0.1.45
>        inet 212.101.103.46 --> 212.101.103.45 netmask 0xffffff00
>gif1: flags=8151<UP,POINTOPOINT,RUNNING,PROMISC,MULTICAST> mtu 1500
>        tunnel inet 10.106.0.65 --> 10.0.1.45
>        inet 212.101.103.48 --> 212.101.103.47 netmask 0xffffff00
>
>по gif0 - должна бежать Украина
>по gif1 - весь мир
>
>в таблице маршрутизации имеем:
>root# netstat -nr
>
>Routing tables
>
>Internet:
>Destination        Gateway    
>        Flags  
> Refs      Use  Netif Expire
>
>default            
>212.101.103.47     UGSc      
>  1    13543   gif1
>10            
>     10.106.1.71      
>  UGSc        1
>  185589    de0
>10.100/23          link#1  
>          
>UC          8
>       0    
>de0
>10.106.0.61        00:80:48:e9:13:c9  UHLW  
>      5    
> 712    de0   1182
>10.106.0.65/32     link#1      
>      UC    
>     0      
>  0    de0
>62.16/19           212.101.103.45
>    UGSc      
> 0        0  
> gif0
>62.64.64/18        212.101.103.45    
> UGSc        0  
>      0   gif0
>****SKIPED****
>212.101.103.45     212.101.103.46     UH  
>      737    
>1620   gif0
>212.101.103.47     212.101.103.48     UH  
>        0  
>   492   gif1
>
>
>запускаю два NATа
>/sbin/natd -n gif0
>/sbin/natd -n gif1 -p 8672
>
>в ipfw добавил
>01000 divert 8672 ip from any to 212.111.203.38 via gif1
>01001 divert 8668 ip from any to 212.111.203.36 via gif0
>01010 divert 8672 ip from 192.168.0.0/16 to any
>01011 divert 8668 ip from 192.168.0.0/16 to any
>60000 allow ip from any to any
>65535 deny ip from any to any
>
>Однако чувствую что 01010 и 01011 не могут правильно работать. Т.е сейчас
>мир ходит через gif1, запросы на Украину идут через gif0, а
>возвращаются на gif1. Получается, что на выходе пакет не проходит через
>какое-то правило и не заворачивается в NAT для обработки и перепрописания
>заголовка поэтому и возвращается на дефаулт gif ?!
>
>На серваке все нормально работает, т.е в провайдере проблемы нет, проблема локальная.
>Я раздаю Инет через VPN.
>А теперь вопрос собственно: как мне правильно заварачивать все подсети, что в
>таблице маршрутизации на gif0(Украину). Подскажите, а лучше напишите, какие правила я
>должен прописать в ipfw ?!


Ну так у тебя все правильно работает.
Роутить входящие пакеты ты не можешь, этол можно сделать только на том конце каналов.


"Два канала, надо завернуть маршруты"
Отправлено boykov , 05-Дек-03 16:54 
>Помогите решить такую проблему:
>
>есть два gif-интерфейса
>gif0: flags=8151<UP,POINTOPOINT,RUNNING,PROMISC,MULTICAST> mtu 1500
>        tunnel inet 10.106.0.64 --> 10.0.1.45
>        inet 212.101.103.46 --> 212.101.103.45 netmask 0xffffff00
>gif1: flags=8151<UP,POINTOPOINT,RUNNING,PROMISC,MULTICAST> mtu 1500
>        tunnel inet 10.106.0.65 --> 10.0.1.45
>        inet 212.101.103.48 --> 212.101.103.47 netmask 0xffffff00
>
>по gif0 - должна бежать Украина
>по gif1 - весь мир
>
То есть на сервере, ушедшее в Укараину возвращается через gif0 ?
Как-то не верится...

У тебя оба туннеля из одной подсети провайдера (2 по 4, не в том суть). Для того, чтобы оно и возвращалось так, как тебе надо -- надо на многих маршрутизаторах иметь две разных строки, по одной для каждой из подсетей. А есть, скорее всего, только 1 на всю сеть провайдера.
То есть просишь провайдера сменить роутинг подсетей, чтобы трафик на сеть 212.101.103.45/30 шел на твою точку обмена. Он прописывает, что надо, в BGP и все фурычит. Ну и на точке обмена с украиной аналогично. Если они все согласятся :)

Несоответствие в адресах роутинга и ipfw -- ошибка набора?


"Два канала, надо завернуть маршруты"
Отправлено matriks , 05-Дек-03 17:23 
>То есть на сервере, ушедшее в Укараину возвращается через gif0 ?
>Как-то не верится...
>
>У тебя оба туннеля из одной подсети провайдера (2 по 4, не
>в том суть). Для того, чтобы оно и возвращалось так, как
>тебе надо -- надо на многих маршрутизаторах иметь две разных строки,
>по одной для каждой из подсетей. А есть, скорее всего, только
>1 на всю сеть провайдера.
>То есть просишь провайдера сменить роутинг подсетей, чтобы трафик на сеть 212.101.103.45/30
>шел на твою точку обмена. Он прописывает, что надо, в BGP
>и все фурычит. Ну и на точке обмена с украиной аналогично.
>Если они все согласятся :)

я сделал в лоб: загнал все подсети в файервол, что-то вроде
00100 divert 8668 ip from any to 62.16.0.0/19 via gif0
00101 divert 8668 ip from any to 62.64.64.0/18 via gif0
00102 divert 8668 ip from any to 62.64.80.0/21 via gif0
00103 divert 8668 ip from any to 62.64.105.0/24 via gif0
00104 divert 8668 ip from any to 62.64.112.0/21 via gif0
00105 divert 8668 ip from any to 62.64.120.0/21 via gif0
00106 divert 8668 ip from any to 62.80.160.0/19 via gif0
00107 divert 8668 ip from any to 62.149.0.0/19 via gif0
00108 divert 8668 ip from any to 62.149.7.0/24 via gif0
00109 divert 8668 ip from any to 62.149.8.0/24 via gif0
00110 divert 8668 ip from any to 62.149.9.0/24 via gif0
00111 divert 8668 ip from any to 62.221.32.0/24 via gif0

и все нормально заработало, хоть это и не совсем правильно...
но подсети часто не меняются, просто надо будет по мере появления нового списка, старые правила скриптом удалять, а новые пропускать через парсер и добавлять в файервол.
может кому-то это поможет, а может ... ;)

>Несоответствие в адресах роутинга и ipfw -- ошибка набора?

ага, есть такое...


"Два канала, надо завернуть маршруты"
Отправлено boykov , 05-Дек-03 22:33 
нет, мы про другое.

вот когда пакет ушел к точке обмена с украиной по туннелю, на том конце вышел, пошел по сети незалежной и дошел до сервера. обратный адрес у него какой? правильно, от начала туннеля. то есть ответ пойдет по адресу к сети провайдра. я на 90% уверен, что в таблицах роутинга оба адреса -- что gif0, что gif1 -- попадут под одну и ту же строку и пойдут п одному и тому же пути. то есть придут только на один из gif / этакий ассиметричный доступ типа спутника...

или у тебя отдельный тарифный план на каждую четырехадресную сетку? :)

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