Имеем:
Железо: HP ProLiant DL360 G7$ uname -a
FreeBSD serv.pc.local 9.1-RELEASE FreeBSD 9.1-RELEASE #0: Mon Mar 11 16:16:29 EET 2013 root@serv.pc.local:/usr/obj/usr/src/sys/kern_2013_03_11 amd64Конфигурация ядра (отличия от GENERIC):
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10000
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=2
options DUMMYNET
options HZ="1000"options SC_DISABLE_REBOOT
options QUOTA
options SMBFS
options NETSMBoptions LIBMCHAIN
options LIBICONVНастраиваю сервер для работы:
bce0 - внешняя сеть, к провайдеру
bce1 - локалкаПока не настраиваю NAT - все идет нормально.
При попытке включить ядерный ipfw nat в /etc/rc.confnatd_enable="YES"
natd_interface="bce0"
natd_flags=""связь с сервером по ssh рвется и вообще сетевая работа через bge0 прекращается.
На консоли вижу следующее:368 Mar 12 12:51:58 serv kernel: bce0: /usr/src/sys/dev/bce/if_bce.c(7925): Watchdog timeout occurred, resetting!
369 Mar 12 12:51:58 serv kernel: bce0: link state changed to DOWN
369 Mar 12 12:51:59 serv kernel: bce0: link state changed to UPи дальше куча подобных сообщений.
В /var/log/messages записи по bce имеют видbce0: <HP NC382i DP Multifunction Gigabit Server Adapter (C0)> mem 0xf4000000-0xf5ffffff
miibus0: <MII bus> on bce0
brgphy0: <BCM5709 10/100/1000baseT PHY> PHY 1 on miibus0
brgphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 10 00baseT-FDX, 1000baseT-FDX-master, auto, auto-flowПрошу совета по решению этой проблемы.
Спасибо!
> natd_enable="YES"
> natd_interface="bce0"
> natd_flags=""Ядерный нат включается не так
ipfw_nat_enable="YES"
ipfw_nat_interface="bce0"
>> natd_enable="YES"
>> natd_interface="bce0"
>> natd_flags=""
> Ядерный нат включается не так
> ipfw_nat_enable="YES"
> ipfw_nat_interface="bce0"Извиняюсь, конечно же включал так
firewall_nat_enable="YES"
firewall_nat_interface="bce0"скопипастил не те комментарии из rc.conf !
>>> natd_enable="YES"
>>> natd_interface="bce0"
>>> natd_flags=""
>> Ядерный нат включается не так
>> ipfw_nat_enable="YES"
>> ipfw_nat_interface="bce0"
> Извиняюсь, конечно же включал так
> firewall_nat_enable="YES"
> firewall_nat_interface="bce0"
> скопипастил не те комментарии из rc.conf !Я, конечно, очень дико извиняюсь )), но может вы еще
что-нибудь скопипастили не то?
Сам firewall, например, в rc.conf не включили?
rc.conf и ipfw show в студию?
>[оверквотинг удален]
>>> ipfw_nat_enable="YES"
>>> ipfw_nat_interface="bce0"
>> Извиняюсь, конечно же включал так
>> firewall_nat_enable="YES"
>> firewall_nat_interface="bce0"
>> скопипастил не те комментарии из rc.conf !
> Я, конечно, очень дико извиняюсь )), но может вы еще
> что-нибудь скопипастили не то?
> Сам firewall, например, в rc.conf не включили?
> rc.conf и ipfw show в студию?$ cat /etc/rc.conf
hostname="serv.local"
defaultrouter="192.168.1.1"
ifconfig_bce0="inet 192.168.1.107 netmask 255.255.255.0"ifconfig_bce1="inet 192.168.90.1 netmask 255.255.255.0"
gateway_enable="YES"
sshd_enable="YES"
ntpd_enable="YES"firewall_enable="YES"
firewall_quiet="YES"
firewall_type="OPEN"firewall_nat_enable="YES"
firewall_nat_interface="bce0"
dummynet_enable="YES"named_enable="YES"
# ipfw show00050 238 24995 nat 123 ip4 from any to any via bce0
00100 80 11684 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
00400 0 0 deny ip from any to ::1
00500 0 0 deny ip from ::1 to any
00600 1 76 allow ipv6-icmp from :: to ff02::/16
00700 0 0 allow ipv6-icmp from fe80::/10 to fe80::/10
00800 1 96 allow ipv6-icmp from fe80::/10 to ff02::/16
00900 0 0 allow ipv6-icmp from any to any ip6 icmp6types 1
01000 0 0 allow ipv6-icmp from any to any ip6 icmp6types 2,135,136
65000 0 0 allow ip from any to any
65535 6 452 deny ip from any to anyПожалуйста.
>[оверквотинг удален]
> to ff02::/16
> 00900 0 0 allow ipv6-icmp from
> any to any ip6 icmp6types 1
> 01000 0 0 allow ipv6-icmp from
> any to any ip6 icmp6types 2,135,136
> 65000 0 0 allow ip from
> any to any
> 65535 6 452 deny ip from any to
> any
> Пожалуйста.Судя по rc.conf вы используете ipv4
Зачем в правилах ipfw ipv6 ?Тип файервола указан как OPEN
который предполагает подгрузку всего одного правила
65000 pass all from any to any
У вас есть и другие правила.
Тогда при чем здесь OPEN ?Попробовать подгружать правила для nat прямо в самом скрипте?
>[оверквотинг удален]
>> any
>> Пожалуйста.
> Судя по rc.conf вы используете ipv4
> Зачем в правилах ipfw ipv6 ?
> Тип файервола указан как OPEN
> который предполагает подгрузку всего одного правила
> 65000 pass all from any to any
> У вас есть и другие правила.
> Тогда при чем здесь OPEN ?
> Попробовать подгружать правила для nat прямо в самом скрипте?Установил уже 32-разрядную FreeBSD 9.1 (на том же железе)
cat /etc/rc.conf
hostname="serv.local"
ifconfig_bce0=" inet 192.168.1.107 netmask 255.255.255.0"
ifconfig_bce1=" inet 192.168.90.1 netmask 255.255.255.0"defaultrouter="192.168.1.1"
sshd_enable="YES"
ntpd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"
firewall_enable="YES"
firewall_quiet="YES"
firewall_type="OPEN"firewall_nat_enable="YES"
firewall_nat_interface="bce0"
dummynet_enable="YES"В ядре выпилил поддержку IPv6.
Вот изменения от GENERIC
# changes
# options INET6 # IPv6 communications protocols
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=1000
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=2
options DUMMYNET
options HZ="1000"options SC_DISABLE_REBOOT
options QUOTA
options SMBFS
options NETSMBoptions LIBMCHAIN
options LIBICONV
# changes# ipfw show
00050 273 34425 nat 123 ip4 from any to any via bce0
00100 12 1656 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 0 0 allow ip from any to any
65535 0 0 deny ip from any to anyFirewall берется OPEN из штатного скрипта /etc/rc.firewall
При включенном NAT в rc.conf зайти на машину по ssh могу, но начав что либо делать - все глухо вешается (вплоть до того, что приходиться RESET жмакать в ILO)
При отключенном NAT в rc.conf (закоментаренном)- все работает как обычно.
Есть мысли, что это может быть ?
то есть машина вешается полностью? А что при этом пишет на консоли, тоже, что и в первом посте Вы писали? И что пишет в messages.log и скиньте еще пожалуйста
ipfw nat 1 show config
ifconfig
> то есть машина вешается полностью? А что при этом пишет на консоли,
> тоже, что и в первом посте Вы писали? И что пишет
> в messages.log и скиньте еще пожалуйста
> ipfw nat 1 show config
> ifconfig# ipfw show
00050 1525 161252 nat 123 ip4 from any to any via bce0
00100 12 1656 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 0 0 allow ip from any to any
65535 0 0 deny ip from any to any# ipfw nat show config
ipfw nat 123 config if bce0 log
# ifconfig
bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
ether ac:16:2d:b2:b5:dc
inet 192.168.1.107 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
bce1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
ether ac:16:2d:b2:b5:de
inet 192.168.90.1 netmask 0xffffff00 broadcast 192.168.90.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
bce2: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
ether ac:16:2d:b2:b5:e8
media: Ethernet autoselect
bce3: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
ether ac:16:2d:b2:b5:ea
media: Ethernet autoselect
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
inet 127.0.0.1 netmask 0xff000000После того как я включаю nat в rc.conf и захожу по ssh с интерфейса bce0, через секунду сервер полностью вешается, в /var/log/messages ниче не попадает, на консоли видно следующее:
bce0: discard frame w/o packet header
bce0: discard frame w/o leading ethernet (len 0 pkt 4294967292)
bce0: discard frame w/o leading ethernet (len 0 pkt 47380)(PS пачкорды менял, сервер новый)
чисто теоретически попробуйте в rc.conf задать и в ребут и проверить будет виснуть или нет.
ifconfig_bce0="inet 192.168.1.107 netmask 255.255.255.0 -rxcsum -txcsum -tso"
> чисто теоретически попробуйте в rc.conf задать и в ребут и проверить будет
> виснуть или нет.
> ifconfig_bce0="inet 192.168.1.107 netmask 255.255.255.0 -rxcsum -txcsum -tso"Я не знаю на сколько это все стабильно, но пока повесить сервер через ssh не удалось! ))
Спасибо большое! Сейчас буду изучать эти волшебные ключики!
Буду возвращаться на AMD64 инсталляцию.
Если возникнут проблемы обязательно отпишусь.Спасибо!
>> чисто теоретически попробуйте в rc.conf задать и в ребут и проверить будет
>> виснуть или нет.
>> ifconfig_bce0="inet 192.168.1.107 netmask 255.255.255.0 -rxcsum -txcsum -tso"
> Я не знаю на сколько это все стабильно, но пока повесить сервер
> через ssh не удалось! ))
> Спасибо большое! Сейчас буду изучать эти волшебные ключики!
> Буду возвращаться на AMD64 инсталляцию.
> Если возникнут проблемы обязательно отпишусь.
> Спасибо!Незачто) Такое же было на некоторых сетевых марвелл, эти параметры отвечают за расчет контрольных сумм для TX RX очередей и сегментацию и сборку тсп пакетов сетевой, или самим процессором машины, на интеловских сетевых такое работает корректно, на остальных как повезет, в вашем случае не работает, возможно дрова допилят со временем и можно будет вернуть эти параметры. Еще при включенных этих параметрах tcpdump может показывать incorrect checksum для тсп пакетов, т.к. рассчет сумм будет идти после тспдампа уже на выходе из сетевой, и эти поля будут пустыми. Както так ))
>> чисто теоретически попробуйте в rc.conf задать и в ребут и проверить будет
>> виснуть или нет.
>> ifconfig_bce0="inet 192.168.1.107 netmask 255.255.255.0 -rxcsum -txcsum -tso"
> Я не знаю на сколько это все стабильно, но пока повесить сервер
> через ssh не удалось! ))
> Спасибо большое! Сейчас буду изучать эти волшебные ключики!
> Буду возвращаться на AMD64 инсталляцию.
> Если возникнут проблемы обязательно отпишусь.
> Спасибо!Ядерный nat, связан с libalias (в ядре вы указали options LIBALIAS) в man к ipfw рекомендуют выключать tso на интерфейсе где будет nat, эксперементально, выяснили народ, что всем по разному помогает один из трех либо все три параметра -rxcsum -txcsum -tso
Due to the architecture of libalias(3), ipfw nat is not compatible with
the TCP segmentation offloading (TSO). Thus, to reliably nat your net-
work traffic, please disable TSO on your NICs using ifconfig(8).