The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Маршрутизация в зависимости от порта..."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Маршрутизация в зависимости от порта..."
Сообщение от flusher emailИскать по авторуВ закладки on 25-Дек-03, 00:40  (MSK)
Возникла ситуация. OS FreeBSD У меня есть радиоканал в инет и туннель на спутникового провайдера... Вопрос. Хочу отправлять запросы к днс через радиоканал, а не туннель.
Настроен ipnat
map rl0 192.168.0.0/24 -> 80.90.224.48 # радиоканал в инет
map rl0 192.168.0.0/24 -> 211.131.141.151 # туннель на спутник
В ipfw правило
fwd 80.90.224.1 udp from me to not 192.168.0.0/24 53 #80.90.224.1 - гейт провайдера.

В этом случае если мой бинд обращается к какому-то серверу, то получается, что в радиоканале появляется пакеты от меня с ip 211.131.141.151 и естественно ответ чешет через спутник, и часто недоходит. Как правильно сконструировать правила? Как сделать именно маршрутизацию по порту? Софт надо ещё дополнительно ставить?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Маршрутизация в зависимости от порта..."
Сообщение от flusher emailИскать по авторуВ закладки on 25-Дек-03, 10:16  (MSK)
Дополнение. Забыл описать...
В общем в самом туннеле стоят ip из сети 192.168.101.0/24. 211.131.141.151 - ipкупленный у спутникового прова. Соответственно я просто выпускаю в туннель пакеты с адресом источника 211.131.141.151. Так вот. Есть у меня также сквид. Он естественно через ipnat не идёт, и переписывание исходящего адреса не срабатывает... Виден снаружи под ip - vpn-servera.
Вот и проблема... Не знаю как это сделать.
Раньше работало на линухе:
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth1 -j SNAT --to-source 81.90.232.28
-A POSTROUTING -o gre1 -j SNAT --to-source 213.138.111.141

Всё просто и понятно.... Как это переделать правильно на FreeBSD???

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Маршрутизация в зависимости от порта..."
Сообщение от Cheeto_McMourrell Искать по авторуВ закладки on 25-Дек-03, 23:51  (MSK)
Я признаться запутался в ваших показаниях.
Покажите что выводит ifconfig и netstat -rn и все конфиги, имеющие отношение к делу. Схема у вас запутанная получилась, тут можно сделать проще. Изложите что вам нужно в конечном итоге насколько возможно понятнее и подробнее. И изложите какое отношение к делу должен иметь имеющийся в показаниях squid.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Маршрутизация в зависимости от порта..."
Сообщение от flusher emailИскать по авторуВ закладки on 26-Дек-03, 17:06  (MSK)
Значит так. Есть сервер под FreeBSD.
Интерфейсы:
fxp0 - локальная сеть ИП 192.168.0.1 маска 192.168.0.0/24
rl0 - радиоканал в инет 80.90.224.48 маска 80.90.224.0/24 гейт прова 80.90.224.1
dvb0 - skystar 1 карта на спутниковый инет ИП 192.168.4.1
gre0 - vpn туннель на спутникового прова ип 192.168.101.89->192.168.101.88
есть ип спутникового прова под которым мы должны быть видны в инете 211.131.141.151
На сервере есть ДНС с слейв зоной
Так же есть squid
Делаю так ipfw add 01001 fwd 192.168.0.1,3128 tcp from 192.168.0.0/24 to any 80 in recv fxp0
Т.е. всё ходит через сквид даже если он не прописан в настройках клиента...
Вот пытаюсь сделать так, чтоб все запросы на ДНС от клиентов шли через радиоканал. Все ответы на обращения о слейв зоне тоже уходили через радиоканал. Почта ходила через радиоканал т.к. MX для зоны указывает на этот сервер...
Вот скрипт ipfw:
#----------Route via Earth for Sites

#----------Route from Sat
add 00100 divert 8669 ip from any to any via dvb0
#----------Route via Earth for mail
add 00202 divert 8668 tcp from me to not 192.168.0.0/24 25 out xmit rl0
add 00203 divert 8668 tcp from me 25 to not 192.168.0.0/24 out xmit rl0
add 00204 divert 8668 udp from me to not 192.168.0.0/24 25 out xmit rl0
add 00205 divert 8668 udp from me 25 to not 192.168.0.0/24 out xmit rl0
#----------Route via Earth for DNS
add 00206 divert 8668 tcp from me to not 192.168.0.0/24 53 out xmit rl0
add 00207 divert 8668 tcp from me 53 to not 192.168.0.0/24 out xmit rl0
add 00208 divert 8668 udp from me to not 192.168.0.0/24 53 out xmit rl0
add 00209 divert 8668 udp from me 53 to not 192.168.0.0/24 out xmit rl0
#----------Route via Earth
add 00275 divert 8668 ip from any to 80.90.224.1 in recv rl0
add 00280 divert 8668 ip from me to any out xmit rl0
add 00285 divert 8668 ip from 192.168.0.0/24 to any out xmit rl0
#----------Route via Sat
add 00290 divert 8669 ip from me to any out xmit gre0
add 00295 divert 8669 ip from 192.168.0.0/24 to any out xmit gre0
#----------Forward to Squid
add 01001 fwd 192.168.0.1,3128 tcp from 192.168.0.0/24 to any 80 in recv fxp0
#----------Servers
add 01002 allow ip from 192.168.0.2 to any in recv fxp0
add 01002 allow ip from any to 192.168.0.2
... пользователи ...
add 01103 allow ip from 192.168.0.103 to any in recv fxp0
add 01103 allow ip from any to 192.168.0.103
#----------Allow iface
add 03000 allow ip from any to any via lo0
add 03001 allow ip from any to me via rl0
add 03002 allow ip from me to any via rl0
add 03003 allow ip from any to any via dvb0
add 03004 allow ip from any to any via gre0

Запускаю natd:
/sbin/natd -f /etc/natd.conf -n rl0 -p 8668
/sbin/natd -f /etc/natd.conf -a 211.131.141.151 -p 8669
natd.conf
log               no
verbose          no
use_sockets      yes
same_ports       yes

netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.101.88     UGSc       56    15353   gre0
80.90.224/24       link#2             UC          3        0    rl0
80.90.224.1        00:e0:4c:39:0f:0e  UHLW        4       18    rl0   1134
127.0.0.1          127.0.0.1          UH          0       24    lo0
192.168.0          link#1             UC         12        0   fxp0
192.168.0.1        00:80:5f:77:6c:bb  UHLW        0       82    lo0
192.168.0.2        00:30:4f:17:6c:51  UHLW        1        4   fxp0   1066
192.168.0.103      00:02:44:51:7a:88  UHLW        1       62   fxp0   1161
192.168.4          link#6             UC          0        0   dvb0
192.168.101.88     192.168.101.89     UH         55        0   gre0 =>
192.168.101.88/32  gre0               USc         0        0   gre0
212.165.117.12     80.90.224.1        UGHS        2    32368    rl0

ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        ether 00:80:5f:77:6c:bb
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 80.90.224.28 netmask 0xffffff00 broadcast 80.90.224.255
        ether 00:02:44:52:e5:f5
        media: Ethernet autoselect (10baseT/UTP)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552
dvb0: flags=8803<UP,BROADCAST,SIMPLEX,MULTICAST> mtu 1500
        inet 192.168.4.1 netmask 0xffffff00 broadcast 192.168.4.255
        ether 00:d0:5c:3d:15:de
gre0: flags=9051<UP,POINTOPOINT,RUNNING,LINK0,MULTICAST> mtu 1476
        tunnel inet 80.90.224.48 --> 212.165.117.12
        inet 192.168.101.89 --> 192.168.101.88 netmask 0xffffff00

Вот.. Вот такая петрушка... Как это правильно сделать?
Раньше на линухе работало так

-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth1 -j SNAT --to-source 80.90.224.48
-A POSTROUTING -o gre1 -j SNAT --to-source 211.131.141.151

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Маршрутизация в зависимости от порта..."
Сообщение от Cheeto_McMourrell Искать по авторуВ закладки on 26-Дек-03, 20:41  (MSK)
Теперь кажется понял.
Попробуйте сделать так:
1) ifconfig rl0 inet 211.131.141.151 netmask 255.255.255.255 alias
После чего настройте squid чтоб он устанавливал исходящие соединения с адреса 211.131.141.151. По его настройкам ничего не скажу конкретнее, я им уже много лет не пользуюсь.
Этим вы избавитесь от NAT для squid, кроме того 211.131.141.151 станет легальным, доступным извне адресом. И исчезнет большая часть правил ipfw.

2) про DNS
Допустим DNS вашего наземного провайдера - 80.90.224.2
route add -host 80.90.224.2  80.90.224.1
Если у вас поднят локальный DNS сервер, то настройте в его конфиге forward
forward only;
forwarders {
        80.90.224.2;
};

3) Кроме, как я понял, вы стягиваете зону с другого сервера. Допустим, мастером является 80.90.220.87. Сделайте также
route add -host 80.90.220.87 80.90.224.1

Если варианты 2-3 вас не устраивают по каким-то причинам, напишите и я скажу как сделать по другому

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Маршрутизация в зависимости от порта..."
Сообщение от flusher emailИскать по авторуВ закладки on 26-Дек-03, 20:57  (MSK)
>Теперь кажется понял.
>Попробуйте сделать так:
>1) ifconfig rl0 inet 211.131.141.151 netmask 255.255.255.255 alias
>После чего настройте squid чтоб он устанавливал исходящие соединения с адреса 211.131.141.151.
Через радиоканал никто левый ип не выпустит.... сетка там 80.90.224.0/24
>По его настройкам ничего не скажу конкретнее, я им уже много
>лет не пользуюсь.
>Этим вы избавитесь от NAT для squid, кроме того 211.131.141.151 станет легальным,
>доступным извне адресом. И исчезнет большая часть правил ipfw.
>
>2) про DNS
>Допустим DNS вашего наземного провайдера - 80.90.224.2
>route add -host 80.90.224.2  80.90.224.1
>Если у вас поднят локальный DNS сервер, то настройте в его конфиге
>forward
>forward only;
>forwarders {
>        80.90.224.2;
>};
Это то понятно...
>3) Кроме, как я понял, вы стягиваете зону с другого сервера. Допустим,
>мастером является 80.90.220.87. Сделайте также
>route add -host 80.90.220.87 80.90.224.1
Так мне её и раздовать надо... Тут же секондари днс сервер для зоны..
>Если варианты 2-3 вас не устраивают по каким-то причинам, напишите и я
>скажу как сделать по другому

Я то в принципе добился, но вот вопрос. Запросы поступают на адрес 80.90.224.48 Как сказать, чтоб ответы на них уходили через 80.90.224.1

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Маршрутизация в зависимости от порта..."
Сообщение от Cheeto_McMourrell Искать по авторуВ закладки on 26-Дек-03, 21:18  (MSK)
>Через радиоканал никто левый ип не выпустит.... сетка там 80.90.224.0/24
Да нет, они будут уходить с наземным адресом и возвращаться оттуда же. Сделайте чтоб divert их не касался как я писал

>Так мне её и раздовать надо... Тут же секондари днс сервер для
>зоны..
Кому вы ее планируете раздавать?

>80.90.224.48 Как сказать, чтоб ответы на них уходили через 80.90.224.1
Это авм нужно чтоб раздавать зону?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Маршрутизация в зависимости от порта..."
Сообщение от flusher emailИскать по авторуВ закладки on 26-Дек-03, 21:41  (MSK)
>>Через радиоканал никто левый ип не выпустит.... сетка там 80.90.224.0/24
> Да нет, они будут уходить с наземным адресом и возвращаться оттуда
>же. Сделайте чтоб divert их не касался как я писал
Попробую..
>>Так мне её и раздовать надо... Тут же секондари днс сервер для
>>зоны..
>Кому вы ее планируете раздавать?
Всем остальным, кто заходит на наш сайт... Т.е. Мастер у меня один сервер, а этот слейв... Если мастер перегружен или не работает, то все идут на слейв за информацией для зоны...
>>80.90.224.48 Как сказать, чтоб ответы на них уходили через 80.90.224.1
>Это авм нужно чтоб раздавать зону?
Да. Если запрос идёт на 80.90.224.48 а ответ приходит с ип спутника - то никто не поймёт...

Тоже самое и при доставке почты... Все коннектятся к 80.90.224.48
а ответ от 212.131.141.151 - фигня...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Маршрутизация в зависимости от порта..."
Сообщение от Cheeto_McMourrell Искать по авторуВ закладки on 26-Дек-03, 21:56  (MSK)
>Да. Если запрос идёт на 80.90.224.48 а ответ приходит с ип спутника
>- то никто не поймёт...
>
>Тоже самое и при доставке почты... Все коннектятся к 80.90.224.48
>а ответ от 212.131.141.151 - фигня...
именно поэтому я вам предложил отказаться от схемы с NAT для сервера, т.е. исходящие с него пакеты не должны подпадать под divert. Сделайте NAT ТОЛЬКО для клиентских компьютеров

После того, как вы это сделаете, имеются следующие варианты:
1) Опишите следующее правило в начале ipfw
add fwd 80.90.224.1 ip from 80.90.224.48 to any out via gre0

2) На мой взгляд более правильный
У вас после установки туннеля default route становится 192.168.101.88. Не прописывайте этот маршрут, пусть маршрутом по умолчанию будет 80.90.224.1
Дадее также опишите
add fwd 192.168.101.88 ip from 211.131.141.151 to any out via rl0

Выбор варианта зависит от того, какой из каналов вы хотите использовать "по умолчанию".

Если у вас еще возникли сложности - спрашивайте.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Маршрутизация в зависимости от порта..."
Сообщение от flusher emailИскать по авторуВ закладки on 27-Дек-03, 16:41  (MSK)
>именно поэтому я вам предложил отказаться от схемы с NAT для сервера,
>т.е. исходящие с него пакеты не должны подпадать под divert. Сделайте
>NAT ТОЛЬКО для клиентских компьютеров
Это то понятно. Но все пользователи связаны с squid. И первым делом я переправляю все запросы туда... Поэтому мне надо делать маскарад для запросов с squid'а.
>2) На мой взгляд более правильный
>У вас после установки туннеля default route становится 192.168.101.88. Не прописывайте этот
>маршрут, пусть маршрутом по умолчанию будет 80.90.224.1
>Дадее также опишите
>add fwd 192.168.101.88 ip from 211.131.141.151 to any out via rl0
>Выбор варианта зависит от того, какой из каналов вы хотите использовать "по
>умолчанию".
Так мне ж надо что-то замаскарадить, чтоб это правило отрабатывало...

P.S. Я похоже не догоняю всей схемы, но попробую реализовать...
>Если у вас еще возникли сложности - спрашивайте.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Маршрутизация в зависимости от порта..."
Сообщение от Cheeto_McMourrell Искать по авторуВ закладки on 27-Дек-03, 18:07  (MSK)
>Это то понятно. Но все пользователи связаны с squid. И первым делом

>Так мне ж надо что-то замаскарадить, чтоб это правило отрабатывало...

Попробую объяснить еще. Я вам предложил прописать 211.131.141.151 в качестве второго адреса на rl0 (alias). После этого у вас на rl0 будет 2 адреса. Когда приложение(например squid) устанавливает соединение с удаленным хостом, то по умолчанию оно устанавливается с того адреса, который выбирает ОС исходя из таблицы маршрутизщации. Кроме того, приложение может вручную "заказать" адрес, который будет "источником" в исходящих пакетах. Почти любой уважающий себя софт имеет такую возможность. Вот вам пример:
ping -S 211.131.141.151 x.x.x.x будет посылать пакеты с адреса 211.131.141.151,
telnet -s 211.131.141.151
ssh -b 211.131.141.151 итд

Такая же фишка должна быть у squid в конф. файле. Если он будет отправлять запросы с 211.131.141.151, то никакого маскарада не потребуется. Он сможет это сделать, так как этот адрес будет вполне легальным в ОС. Ищите что-то типа "outgoing_address" в конф. файле squid.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру