[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Сетевуха работает только в promisc режиме



On Mon, May 21, 2012 at 10:05:24PM +0400, "Артём Н." wrote:
> >  Чувствую, это капитальная клиника. Но давайте всё же дождёмся дампа.
> Для _tdlog0 (там что-то не очень понятное):
> root@dana:~# ping 192.168.1.1
> connect: Network is unreachable
> root@dana:~# ping 192.168.1.1
> connect: Network is unreachable
> root@dana:~# ifconfig eth0 promisc
> root@dana:~# ping 192.168.1.1
> PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
> 64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=1.03 ms
> 64 bytes from 192.168.1.1: icmp_req=2 ttl=64 time=0.943 ms
> ^C
> --- 192.168.1.1 ping statistics ---
> 2 packets transmitted, 2 received, 0% packet loss, time 1001ms
> rtt min/avg/max/mdev = 0.943/0.990/1.038/0.056 ms
> root@dana:~# ifconfig eth0 -promisc
> root@dana:~# ping 192.168.1.1
> PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
> ^C
> --- 192.168.1.1 ping statistics ---
> 5 packets transmitted, 0 received, 100% packet loss, time 4006ms

 В файлике _tdlog0 этого нет. Вообще, там только исходящие пакеты,
 если не считать обмен arp-ами между 192.168.1.3 и 192.168.1.2.
 А обмена по icmp с 192.168.1.1 вовсе нет. Есть лишь исходящие
 пакеты 192.168.1.3 > 192.168.1.2 (ICMP echo request).

 Такая же странность со вторым файлом. Вы сами смотрели записанные дампы,
 такая ситуация не удивляет? Вы же не видите того трафика, который
 генерите своими ручками.

> Для чистоты эксперимента, во втором случае (_tdlog1), я отключил файрволл:

 Наличие файрвола на дамп влиять не должно, но лучше действительно выключить.

 Итак, можно предположить, что есть некий клинический случай асимметричного
 роутинга, когда пакеты почему-то идут не через eth, а иным путём...
 Какие ещё сетевые интерфейсы есть на машине? Выключите все виртуалки,
 приведите машину к проблемному состоянию и покажите результат работы
 такого скрипта:

 ip addr list
 ip route list
 ip link set dev eth0 promisc off
 ip route flush cache
 ip route get 192.168.1.1
 tcpdump -nlUevvp -i any arp or icmp &
 ping -n -c2 192.168.1.1
 killall tcpdump
 ip link set dev eth0 promisc on
 ip route flush cache
 ip route get 192.168.1.1
 tcpdump -nlUevvp -i any arp or icmp &
 ping -n -c2 192.168.1.1
 killall tcpdump
 ip link set dev eth0 promisc off

> > К сожалению, драйвер r8169 не поддерживает
> >  чтение eeprom'a, можно лишь посмотреть ethtool -d, но это может оказаться
> >  искажённой информацией.
> root@dana:~# ethtool -d eth0
> Unknown RealTek chip (mask: 0xfcc00000)

 Вот те раз... А должно быть что-то вроде этого:

# ethtool -d mon
RealTek RTL-8169/8110SB registers:
--------------------------------------------------------
0x00: MAC Address                      00:14:d1:15:49:b6
0x08: Multicast Address Filter     0x84000080 0x40000200
0x10: Dump Tally Counter Command   0x00000000 0x00000000
0x20: Tx Normal Priority Ring Addr 0x3448b000 0x00000000
0x28: Tx High Priority Ring Addr   0xbbcdff00 0xbfffffff
0x30: Flash memory read/write                 0x00000000
0x34: Early Rx Byte Count                              0
0x36: Early Rx Status                               0x00
0x37: Command                                       0x00
      Rx off, Tx off
0x3C: Interrupt Mask                              0x0000
      
0x3E: Interrupt Status                            0x0000
      
0x40: Tx Configuration                        0x10000000
0x44: Rx Configuration                        0x00000002
0x48: Timer count                             0x3c59f6ae
0x4C: Missed packet counter                     0x000000
0x50: EEPROM Command                                0x00
0x51: Config 0                                      0x05
0x52: Config 1                                      0x4d
0x53: Config 2                                      0x10
0x54: Config 3                                      0xa1
0x55: Config 4                                      0x80
0x56: Config 5                                      0x01
0x58: Timer interrupt                         0x00000000
0x5C: Multiple Interrupt Select                   0x0000
0x60: PHY access                              0x800541e1
0x64: TBI control and status                  0x00000000
0x68: TBI Autonegotiation advertisement (ANAR)    0x0000
0x6A: TBI Link partner ability (LPAR)             0x0000
0x6C: PHY status                                    0x0b
0x84: PM wakeup frame 0            0xbdddc0bd 0xd65dafbf
0x8C: PM wakeup frame 1            0xb7c72a6e 0xee1af5ff
0x94: PM wakeup frame 2 (low)      0x9ffff64d 0x9e9fde5f
0x9C: PM wakeup frame 2 (high)     0xbac35dfd 0x5f5fda79
0xA4: PM wakeup frame 3 (low)      0x776ef7df 0xbc7beebf
0xAC: PM wakeup frame 3 (high)     0xff4f2d7f 0x8f8ffddf
0xB4: PM wakeup frame 4 (low)      0xbf3cbbff 0xb3b6bc9e
0xBC: PM wakeup frame 4 (high)     0xfff4bdbf 0xf82bfb7f
0xC4: Wakeup frame 0 CRC                          0x7df1
0xC6: Wakeup frame 1 CRC                          0xfbfc
0xC8: Wakeup frame 2 CRC                          0xb7ff
0xCA: Wakeup frame 3 CRC                          0xf5de
0xCC: Wakeup frame 4 CRC                          0x5bef
0xDA: RX packet maximum size                      0x4000
0xE0: C+ Command                                  0x2068
      VLAN de-tagging
      RX checksumming
      PCI Multiple RW
0xE2: Interrupt Mitigation                        0x0000
      TxTimer:       0
      TxPackets:     0
      RxTimer:       0
      RxPackets:     0
0xE4: Rx Ring Addr                 0x32e8e000 0x00000000
0xEC: Early Tx threshold                            0x3f
0xF0: Func Event                              0x00008000
0xF4: Func Event Mask                         0x00000000
0xF8: Func Preset State                       0x00000002
0xFC: Func Force Event                        0x00000000

 Возможно, карточка была повреждена при перепрошивке.
 Хотя я пока не знаю, может ли это как-то объяснять чудеса,
 которые мы наблюдаем в дампе.
-- 
 Eugene Berdnikov


Reply to: