Помогите решить такую проблему:есть два 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 -nrRouting 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 ?!
>Помогите решить такую проблему:
>
>есть два 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 ?!
Ну так у тебя все правильно работает.
Роутить входящие пакеты ты не можешь, этол можно сделать только на том конце каналов.
>Помогите решить такую проблему:
>
>есть два 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 -- ошибка набора?
>То есть на сервере, ушедшее в Укараину возвращается через 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 -- ошибка набора?
ага, есть такое...
нет, мы про другое.вот когда пакет ушел к точке обмена с украиной по туннелю, на том конце вышел, пошел по сети незалежной и дошел до сервера. обратный адрес у него какой? правильно, от начала туннеля. то есть ответ пойдет по адресу к сети провайдра. я на 90% уверен, что в таблицах роутинга оба адреса -- что gif0, что gif1 -- попадут под одну и ту же строку и пойдут п одному и тому же пути. то есть придут только на один из gif / этакий ассиметричный доступ типа спутника...
или у тебя отдельный тарифный план на каждую четырехадресную сетку? :)
иными словами обратный украинский трафик не пойдет через точку обмена.
по этому поводу можно посоветоваться с цисковедами местными.