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

Исходное сообщение
"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"

Отправлено BigElph , 29-Апр-05 15:38 
Помогите разобраться.
Хочется: Организации надо считать траффик через провайдера. Внутри есть 4 конторы, которые делят канал и должны быть подсчитаны отдельно друг от друга. Выделено 5 прямых ip. Пришла в голову мысль сделать 2 роутера, в кажном по 4 карты, поднять по 2 ната на машине и пров. будет считать траффик по исходящим прямым адресам.
Возникли проблемы: Фря5.3, не поднимаются все 4 интерфейса, поднимается только один внешний и один внутренний. Остальные показано, что ап, но адресов им не выдается.
В результате стартует только один нат.
Где я неправ?

ifconfig:
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 217.195.93.83 netmask 0xffffff00 broadcast 217.195.93.255
        ether 00:0e:2e:3e:0f:3a
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        ether 00:0e:2e:3d:fc:06
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        ether 00:0e:2e:3d:f9:f9
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl3: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        ether 00:0d:61:84:3a:fc
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
rc.conf:
ifconfig_rl0="inet 217.195.93.83 netmask 255.255.255.0"
ifconfig_rl1="inet 217.195.93.84 netmask 255.255.255.0"
ifconfig_rl2="inet 192.168.0.1 netmask 255.255.255.0"
ifconfig_rl3="inet 192.168.0.2 netmask 255.255.255.0"


Содержание

Сообщения в этом обсуждении
"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено denn , 29-Апр-05 15:57 
>Помогите разобраться.
>Хочется: Организации надо считать траффик через провайдера. Внутри есть 4 конторы, которые
>делят канал и должны быть подсчитаны отдельно друг от друга. Выделено
>5 прямых ip. Пришла в голову мысль сделать 2 роутера, в
>кажном по 4 карты, поднять по 2 ната на машине и
>пров. будет считать траффик по исходящим прямым адресам.
>Возникли проблемы: Фря5.3, не поднимаются все 4 интерфейса, поднимается только один внешний
>и один внутренний. Остальные показано, что ап, но адресов им не
>выдается.
>В результате стартует только один нат.
>Где я неправ?
>
>ifconfig:
>rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>        options=8<VLAN_MTU>
>        inet 217.195.93.83 netmask 0xffffff00
>broadcast 217.195.93.255
>        ether 00:0e:2e:3e:0f:3a
>        media: Ethernet autoselect (100baseTX <full-duplex>)
>        status: active
>rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>        options=8<VLAN_MTU>
>        ether 00:0e:2e:3d:fc:06
>        media: Ethernet autoselect (100baseTX <full-duplex>)
>        status: active
>rl2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>        options=8<VLAN_MTU>
>        inet 192.168.0.1 netmask 0xffffff00
>broadcast 192.168.0.255
>        ether 00:0e:2e:3d:f9:f9
>        media: Ethernet autoselect (100baseTX <full-duplex>)
>        status: active
>rl3: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>        options=8<VLAN_MTU>
>        ether 00:0d:61:84:3a:fc
>        media: Ethernet autoselect (100baseTX <full-duplex>)
>        status: active
>lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
>        inet 127.0.0.1 netmask 0xff000000
>
>rc.conf:
>ifconfig_rl0="inet 217.195.93.83 netmask 255.255.255.0"
>ifconfig_rl1="inet 217.195.93.84 netmask 255.255.255.0"
>ifconfig_rl2="inet 192.168.0.1 netmask 255.255.255.0"
>ifconfig_rl3="inet 192.168.0.2 netmask 255.255.255.0"

интерфейсы не должны быть в одной подсети.


"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено BigElph , 29-Апр-05 16:01 
>интерфейсы не должны быть в одной подсети.

как иначе мне сделать четыре адреса.... по-крайней мере реальных на 2х машинах?


"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено denn , 29-Апр-05 16:04 
>>интерфейсы не должны быть в одной подсети.
>
>как иначе мне сделать четыре адреса.... по-крайней мере реальных на 2х машинах?
>
есть способ. и тут можно найти решение.
но в твоем случае, я бы еще раз обдумал топологию и адресацию.


"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено BigElph , 29-Апр-05 16:12 
>есть способ. и тут можно найти решение.
>но в твоем случае, я бы еще раз обдумал топологию и адресацию.
>

ну фигня в том, что приходит одна оптика. Сеть единая, но траффик надо делить на 4 части... и чтоб провайдер сам его считал. Что еще придумать?


"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено Simps , 29-Апр-05 16:48 
>>интерфейсы не должны быть в одной подсети.
>
>как иначе мне сделать четыре адреса.... по-крайней мере реальных на 2х машинах?
>

Доп адреса из одной сети прописываются с маской 255.255.255.255


"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено denn , 29-Апр-05 16:14 
ща нарисую и вышлю тебе мое предположение...

"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено denn , 29-Апр-05 16:28 
попробую предположить...

192.168.1.0 --
192.168.2.0 --
               >--swich--><-->eht0|bsd|eth1<-->|пров|
192.168.3.0 --
192.168.4.0 --

eth0  (адреса шлюзов для сеток)
192.168.1.254
alias 192.168.2.254
alias 192.168.3.254
alias 192.168.4.254

eth1
217.195.93.83
alias  217.195.93.84
alias  217.195.93.85
alias  217.195.93.86

нат на 4 портах
natd -a  217.195.93.83 -p 8668
natd -a 217.195.93.84 -p 8778
natd -a 217.195.93.85 -p 8888
natd -a 217.195.93.86 -p 8998

пров
217.195.93.87

потом

ipfw 10 add divert 8668 ip from 192.168.1.0/24 to any
ipfw 20 add divert 8778 ip from 192.168.2.0/24 to any
ipfw 20 add divert 8888 ip from 192.168.3.0/24 to any
ipfw 20 add divert 8998 ip from 192.168.4.0/24 to any
+добавить обратку...

критикуйте. интересно как экперимент.


"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено BigElph , 29-Апр-05 17:43 
теперь все уперлось в алиасы
почему-то их он не добавляет...
прописал
ifconfig_rl1="inet 192.168.1.1  netmask 255.255.0.0"
ifconfig_rl1_alias0="inet 192.168.2.1 netmask 255.255.0.0"
ifconfig_rl1_alias1="inet 192.168.3.1 netmask 255.255.0.0"
ifconfig_rl1_alias2="inet 192.168.4.1 netmask 255.255.0.0"
в ответ тишина
поднимается только 1.1

"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено denn , 29-Апр-05 17:53 
>теперь все уперлось в алиасы
>почему-то их он не добавляет...
>прописал
>ifconfig_rl1="inet 192.168.1.1  netmask 255.255.0.0"
>ifconfig_rl1_alias0="inet 192.168.2.1 netmask 255.255.0.0"
>ifconfig_rl1_alias1="inet 192.168.3.1 netmask 255.255.0.0"
>ifconfig_rl1_alias2="inet 192.168.4.1 netmask 255.255.0.0"
>в ответ тишина
>поднимается только 1.1

сетка класса С
сделай маску 255.255.255.0
для алиасов 255.255.255.255


"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено denn , 29-Апр-05 17:51 
маска все 255

"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено BigElph , 29-Апр-05 20:04 
>маска все 255
ага, догадался
итого
router# cat /etc/rc.conf
network_interfaces="rl0 rl1 ed0 lo0"
ifconfig_rl0="inet 10.0.0.5  netmask 255.255.255.0"
ifconfig_rl0_alias0="inet 10.0.0.6 netmask 255.255.255.255"
ifconfig_rl0_alias1="inet 10.0.0.7 netmask 255.255.255.255"
ifconfig_rl0_alias2="inet 10.0.0.8 netmask 255.255.255.255"
ifconfig_rl0_alias3="inet 10.0.0.9 netmask 255.255.255.255"
ifconfig_rl1="inet 192.168.1.1  netmask 255.255.0.0"
ifconfig_rl1_alias0="inet 192.168.2.1 netmask 255.255.255.255"
ifconfig_rl1_alias1="inet 192.168.3.1 netmask 255.255.255.255"
ifconfig_rl1_alias2="inet 192.168.4.1 netmask 255.255.255.255"
ifconfig_ed0="inet 192.168.5.1 netmask 255.255.255.0"
defaultrouter="10.0.0.1"
hostname="router.local"
gateway_enable="YES"
tcp_extensions="NO"
tcp_drop_synfin="YES"
icmp_drop_redirect="YES"
firewall_enable="YES"
firewall_type="OPEN"

router# cat /etc/rc.local
natd -a 10.0.0.5 -p 8668 -dynamic -use_sockets -same_ports
natd -a 10.0.0.6 -p 8778 -dynamic -use_sockets -same_ports
natd -a 10.0.0.7 -p 8888 -dynamic -use_sockets -same_ports
natd -a 10.0.0.8 -p 8998 -dynamic -use_sockets -same_ports
natd -a 10.0.0.9 -p 8008 -dynamic -use_sockets -same_ports

router# cat /etc/rc.firewall
case ${firewall_type} in
[Oo][Pp][Ee][Nn])
        setup_loopback
        ${fwcmd} add 10 divert 8668 ip from 192.168.1.0/24 to any
        ${fwcmd} add 10 divert 8668 ip from any to 192.168.1.0/24
        ${fwcmd} add 20 divert 8778 ip from 192.168.2.0/24 to any
        ${fwcmd} add 20 divert 8778 ip from any to 192.168.2.0/24
        ${fwcmd} add 30 divert 8888 ip from 192.168.3.0/24 to any
        ${fwcmd} add 30 divert 8888 ip from any to 192.168.3.0/24
        ${fwcmd} add 40 divert 8998 ip from 192.168.4.0/24 to any
        ${fwcmd} add 40 divert 8998 ip from any to 192.168.4.0/24
        ${fwcmd} add 50 divert 8008 ip from 192.168.5.0/24 to any
        ${fwcmd} add 50 divert 8008 ip from any to 192.168.5.0/24
        ${fwcmd} add 65000 pass all from any to any


Счетчики растут, правда только в прямую сторону, ничего не ходит.
С этой машины инет ходит, с внутреннего интерфейса - ноль.
00050 120  7200 divert 8008 ip from 192.168.5.0/24 to any
00050   0     0 divert 8008 ip from any to 192.168.5.0/24
00100   0     0 allow ip from any to any via lo0
00200   0     0 deny ip from any to 127.0.0.0/8
00300   0     0 deny ip from 127.0.0.0/8 to any
65000 536 40469 allow ip from any to any
65535   0     0 deny ip from any to any

соответственно не пашет


"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено BigElph , 29-Апр-05 20:19 
довел ситуацию до того, что пакеты по счетчику ipfw ходят в обе стороны.
пингуется изнутри и внутренний 192.168.5.1 и внешний 10.0.0.5 интерфейс...
дальше на .1 не уходит, хотя сама машина спокойно в инет ходит



"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено denn , 29-Апр-05 21:30 
>довел ситуацию до того, что пакеты по счетчику ipfw ходят в обе
>стороны.
>пингуется изнутри и внутренний 192.168.5.1 и внешний 10.0.0.5 интерфейс...
класно, молодец

>дальше на .1 не уходит, хотя сама машина спокойно в инет ходит
>
не понял. подробнее


"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено BigElph , 29-Апр-05 23:04 
>не понял. подробнее

Подробнее - машина нормально имеет доступ в инет. Естественно внешними интерфейсами. С внутренних можно пинговать внутренние и внешние интерфейсы, но дальше их не уйти. Пакеты на .1 (мой главный роутер) не уходят, счетчики тамошнего ipfw по нулям.
Тоесть завожу машину в подсетку к примеру 192.168.5.1, эта машина пингует спокойно 192.168.5.1, 10.0.0.5 (мой тестовый якобы внешний адрес), но на главный роутер не уходит ничего.


"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено denn , 29-Апр-05 23:35 
>>не понял. подробнее
>
>Подробнее - машина нормально имеет доступ в инет. Естественно внешними интерфейсами. С
>внутренних можно пинговать внутренние и внешние интерфейсы, но дальше их не
>уйти. Пакеты на .1 (мой главный роутер) не уходят, счетчики тамошнего
>ipfw по нулям.
>Тоесть завожу машину в подсетку к примеру 192.168.5.1, эта машина пингует спокойно
>192.168.5.1, 10.0.0.5 (мой тестовый якобы внешний адрес), но на главный роутер
>не уходит ничего.
чтоб подитожить+найти затык
netstat -rn поглядим
ipwf -a l



"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено Черепах_Тортилл , 02-Май-05 06:52 

>
>router# cat /etc/rc.local
>natd -a 10.0.0.5 -p 8668 -dynamic -use_sockets -same_ports
>natd -a 10.0.0.6 -p 8778 -dynamic -use_sockets -same_ports
>natd -a 10.0.0.7 -p 8888 -dynamic -use_sockets -same_ports
>natd -a 10.0.0.8 -p 8998 -dynamic -use_sockets -same_ports
>natd -a 10.0.0.9 -p 8008 -dynamic -use_sockets -same_ports
>
....
соответственно не пашет - не будет, потому что нат не правильно запущен:

надо было вот так:

>natd -a 10.0.0.5 -p 8668 -dynamic -same_ports -use_sockets

сам стоял на таких же граблях - порядок ключей оказывается имеет значение


"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено BigElph , 03-Май-05 12:19 
>надо было вот так:
>
>>natd -a 10.0.0.5 -p 8668 -dynamic -same_ports -use_sockets
>
>сам стоял на таких же граблях - порядок ключей оказывается имеет значение
    исправил, но ситуация не изменилась
router# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            10.0.0.1           UGS         0        0    rl0
10/24              link#1             UC          0        0    rl0
10.0.0.1           00:10:5a:67:df:3d  UHLW        1      196    rl0   1007
10.0.0.6/32        link#1             UC          0        0    rl0
10.0.0.7/32        link#1             UC          0        0    rl0
10.0.0.8/32        link#1             UC          0        0    rl0
10.0.0.9/32        link#1             UC          0        0    rl0
10.0.0.50          00:d0:b7:2a:38:25  UHLW        0       21    rl0   1195
127.0.0.1          127.0.0.1          UH          0        0    lo0
192.168.0/16       link#3             UC          0        0    rl1
192.168.2.1/32     link#3             UC          0        0    rl1
192.168.3.1/32     link#3             UC          0        0    rl1
192.168.4.1/32     link#3             UC          0        0    rl1
192.168.5.1/32     link#3             UC          0        0    rl1
192.168.5.10       00:0e:9b:9d:2d:8d  UHLW        0       63    rl1   1086

router# ipfw -a l
00010  19  1064 divert 8668 ip from 192.168.1.0/24 to any
00010   0     0 divert 8668 ip from any to 192.168.1.0/24
00020   0     0 divert 8778 ip from 192.168.2.0/24 to any
00020   0     0 divert 8778 ip from any to 192.168.2.0/24
00030   0     0 divert 8888 ip from 192.168.3.0/24 to any
00030   0     0 divert 8888 ip from any to 192.168.3.0/24
00040   0     0 divert 8998 ip from 192.168.4.0/24 to any
00040   0     0 divert 8998 ip from any to 192.168.4.0/24
00050 137  9591 divert 8008 ip from 192.168.5.0/24 to any
00050  22  1244 divert 8008 ip from any to 192.168.5.0/24
00100   0     0 allow ip from any to any via lo0
00200   0     0 deny ip from any to 127.0.0.0/8
00300   0     0 deny ip from 127.0.0.0/8 to any
65000 654 61993 allow ip from any to any
65535   0     0 deny ip from any to any



"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено BigElph , 04-Май-05 12:59 
Варианты закончились? :)

"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено denn , 04-Май-05 13:15 
>Варианты закончились? :)


правила 100, 200, 300 поставь в начало.
далее нат запусти ручками только с адресами и портом
потом ps xa - проверка на наличие поднятого ната
видно что пакеты уходят. нужно узнать с каких адресов.


есть ли возможность посмотреть на 10.0.0.1 с каких адресов
идет пинг когда ты пингуешь с локали, для проверки ната?


"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено denn , 04-Май-05 13:18 
>Варианты закончились? :)
+
в 65000 правило добавь лог. потом tail -f /var/log/security
и поглядим кто куда

"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено denn , 04-Май-05 13:00 
привет. ну что не поднялось...
пиши 250669862, подумаем

"Надо правильно отмаршрутизировать пакеты во FreeBSD 5.3"
Отправлено BigElph , 05-Май-05 11:26 
Для резюмирования напишу ответ.
Все правильно, кроме того, что на обратку надо прописывать нат не с any to inside.net, а с any to outside.net

у меня это выглядит так:

divert 8888 ip from 192.168.3.0/24(внутренний интерфейс) to any
divert 8888 ip from any to 10.0.0.7(внешний интерфейс)