Страница 1 из 1

Пять сетей NATятся нормально, шестая - ни в какую!

Добавлено: 2009-11-21 17:22:50
Якут
Всем привет, братцы. Вопрос от чайника, так что сильно не пинайте, плиз. Или пинайте, но в нужном направлении :Search:

Есть внутренняя сеть, которая быстро растет и которую "навырост" поделили на крупные сегменты по 8К адресов. Есть нормальный пул белых адресов, из которого выделили сколько-то штук для организации шлюзования, типа каждой сети по отдельному шлюзу.

Наличествует FBSD 7.2 с NAT'ом и ipfw. Настроили мы ее таким образом, чтобы на интерфейсе em1 приземлялись шлюзы по умолчанию от локальных подсетей, а на em0 - белые адреса:

Код: Выделить всё

bi# ifconfig
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=1db<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,POLLING,VLAN_HWCSUM,TSO4>
        ether 00:х.х:96
        inet 87.х.х.254 netmask 0xffffff00 broadcast 87.х.х.255
        inet 87.х.х.253 netmask 0xffffff00 broadcast 87.х.х.255
        inet 87.х.х.252 netmask 0xffffff00 broadcast 87.х.х.255
        inet 87.х.х.251 netmask 0xffffff00 broadcast 87.х.х.255
        inet 87.х.х.250 netmask 0xffffff00 broadcast 87.х.х.255
        inet 87.х.х.235 netmask 0xffffff00 broadcast 87.х.х.255
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=db<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,POLLING,VLAN_HWCSUM>
        ether 00:х.х:94
        inet 172.16.63.254 netmask 0xffffe000 broadcast 172.16.63.255
        inet 172.16.95.254 netmask 0xffffe000 broadcast 172.16.95.255
        inet 172.16.127.254 netmask 0xffffe000 broadcast 172.16.127.255
        inet 172.16.159.254 netmask 0xffffe000 broadcast 172.16.159.255
        inet 172.16.191.254 netmask 0xffffe000 broadcast 172.16.191.255
        media: Ethernet autoselect (100baseTX <half-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000 
NAT, соответственно, организован след.образом:

Код: Выделить всё

ipnat
# NAT for US 1
map em0 172.16.32.0/19  -> 87.х.х.254/32
map em0 172.16.32.0/19  -> 87.х.х.254/32 proxy port ftp ftp/tcp
map em0 172.16.32.0/19  -> 87.х.х.254/32 portmap tcp/udp auto

# NAT for US 2
map em0 172.16.64.0/19  -> 87.х.х.253/32
map em0 172.16.64.0/19  -> 87.х.х.253/32 proxy port ftp ftp/tcp
map em0 172.16.64.0/19  -> 87.х.х.253/32 portmap tcp/udp auto

# NAT for US 3
map em0 172.16.96.0/19  -> 87.х.х.252/32
map em0 172.16.96.0/19  -> 87.х.х.252/32 proxy port ftp ftp/tcp
map em0 172.16.96.0/19  -> 87.х.х.252/32 portmap tcp/udp auto

# NAT for US 4
map em0 172.16.128.0/19 -> 87.х.х.251/32
map em0 172.16.128.0/19 -> 87.х.х.251/32 proxy port ftp ftp/tcp
map em0 172.16.128.0/19 -> 87.х.х.251/32 portmap tcp/udp auto

# NAT for US 5
map em0 172.16.160.0/19 -> 87.х.х.250/32
map em0 172.16.160.0/19 -> 87.х.х.250/32 proxy port ftp ftp/tcp
map em0 172.16.160.0/19 -> 87.х.х.250/32 portmap tcp/udp auto

# NAT for US 20
map em0 192.168.100.0/32 -> 87.х.х.235/32
map em0 192.168.100.0/32 -> 87.х.х.235/32 proxy port ftp ftp/tcp
map em0 192.168.100.0/32 -> 87.х.х.235/32 portmap tcp/udp auto 
В ipfw написали так:

Код: Выделить всё

bi# ipfw list 0-115
00100 check-state
00101 tee ... ip from any to any via em0
00102 tee ... ip from any to any via em1
00103 allow ip from any to any via lo0
00104 allow ip from 87.х.х.254 to any via em0
00105 allow ip from any to 87.х.х.254 via em0
00106 allow ip from 87.х.х.253 to any via em0
00107 allow ip from any to 87.х.х.253 via em0
00108 allow ip from 87.х.х.252 to any via em0
00109 allow ip from any to 87.х.х.252 via em0
00110 allow ip from 87.х.х.251 to any via em0
00111 allow ip from any to 87.х.х.251 via em0
00112 allow ip from 87.х.х.250 to any via em0
00113 allow ip from any to 87.х.х.250 via em0
00114 allow ip from 87.х.х.235 to any via em0
00115 allow ip from any to 87.х.х.235 via em0 
Отакое от щастье. Все работает, что характерно. Для каждого юзера изнутри, кому надо наружу, прописывается такое (пайпы сконфигурированы ранее):

Код: Выделить всё

01462 allow ip from 172.16.160.9 to any
01463 allow ip from any to 172.16.160.9
01464 pipe 257 ip from 172.16.160.23 to any
01465 pipe 256 ip from any to 172.16.160.23 
И все были счастливы, пока не начали поднимать последнюю из внутренних сетей. Все сети у нас 172.16.х.х/19, а последняя 192.168.100.х/24. Обломок прошлого, тыкскыыть. И в этом обломке до бениной мамы старых юзеров, которым надо наружу и у которых адреса прописаны статически, в каждом компе; а сетка разнесена территориально и всех быстро в новые адреса не пересадишь.

Мы, как это видно по вышеприведенным конфигурациям, сделали
inet 87.х.х.235 netmask 0xffffff00 broadcast 87.х.х.255,
и честно провесили на него
map em0 192.168.100.0/32 -> 87.х.х.235/32
map em0 192.168.100.0/32 -> 87.х.х.235/32 proxy port ftp ftp/tcp
map em0 192.168.100.0/32 -> 87.х.х.235/32 portmap tcp/udp auto

Но вот когда мы попытались поднять на em1 алиас 192.168.100.1/24, юзеры, имевшие шлюзом этот адрес, не смогли до инета достучаться. Хотя каждому было честно сделано
01448 pipe 257 ip from 192.168.100.146 to any
01449 pipe 256 ip from any to 192.168.100.146
01450 allow ip from 192.168.100.146 to any
01451 allow ip from any to 192.168.100.146

При этом исходящие allow и pipe показывают увеличивающиеся счетчики - пакеты ползут. А назад не возвращаются.

Блинский нафиг. Свернул себе весь мозг. Братцы, посоветуйте, куда копнуть? Чем продиагностировать?

Re: Пять сетей NATятся нормально, шестая - ни в какую!

Добавлено: 2009-11-21 19:27:48
Гость
Наличествует FBSD 7.2 с NAT'ом и ipfw. Настроили мы ее таким образом, чтобы на интерфейсе em1 приземлялись шлюзы по умолчанию от локальных подсетей, а на em0 - белые адреса:
ну и где у вас приземляеться сеть 192.168. ?

Re: Пять сетей NATятся нормально, шестая - ни в какую!

Добавлено: 2009-11-21 20:08:47
Гость
Господи... Стыдоба-то какая...

Братцы, я идиот. Прошу прощения за отнятое у сообщества время. Косяк в маске внутренней сети в IPNAT:

Код: Выделить всё

# NAT for US 20
map em0 192.168.100.0/32 -> 87.х.х.235/32
map em0 192.168.100.0/32 -> 87.х.х.235/32 proxy port ftp ftp/tcp
map em0 192.168.100.0/32 -> 87.х.х.235/32 portmap tcp/udp auto
Конечно. НАТить-то надо не одного юзера (192.168.100.0/32), а СЕТЬ, т.е. 192.168.100.0/24!
Придурок. Прошу у всех прощения.

Re: Пять сетей NATятся нормально, шестая - ни в какую!

Добавлено: 2009-11-21 20:13:20
Гость
Гость писал(а):
Наличествует FBSD 7.2 с NAT'ом и ipfw. Настроили мы ее таким образом, чтобы на интерфейсе em1 приземлялись шлюзы по умолчанию от локальных подсетей, а на em0 - белые адреса:
ну и где у вас приземляеться сеть 192.168. ?
В приведенных конфигах алиаса для нее еще нет. Это состояние на момент, предшествовавший обнаружению проблемы. А именно, на этом месте мы попытались сделать

Код: Выделить всё

ifconfig em1 inet 192.168.100.1 alias
и выяснили, что нифигашеньки-то не работает. По сетке юзеры ползают, а наружу - болт :crazy:

В-общем, все выяснилось. Ох, и буду жеж я орать в понедельник на того урода, который это все прописывал...

Re: Пять сетей NATятся нормально, шестая - ни в какую!

Добавлено: 2009-11-21 20:18:38
Гость
ifconfig em1 inet 192.168.100.1 alias
я знаю другой синтаксис этой комманды
ifconfig em1 alias 192.168.100.1 255.255.255.0