Раз в несколько дней у меня возникает следующая проблема. Мой ноутбук (тестирование Debian) внезапно перестает работать с TCP-соединениями с Интернетом.
Следующие вещи продолжают работать нормально:
- UDP (DNS), ICMP (ping) - я получаю мгновенный ответ
- TCP-соединения с другими машинами в локальной сети (например, я могу ssh к соседнему ноутбуку)
- все хорошо для других машин в моей локальной сети
Но когда я пытаюсь установить TCP-соединение с моего ноутбука, они перестают работать (нет ответа на SYN-пакеты). Вот типичный вывод curl:
% curl -v google.com
* About to connect() to google.com port 80 (#0)
* Trying 173.194.39.105...
* Connection timed out
* Trying 173.194.39.110...
* Connection timed out
* Trying 173.194.39.97...
* Connection timed out
* Trying 173.194.39.102...
* Timeout
* Trying 173.194.39.98...
* Timeout
* Trying 173.194.39.96...
* Timeout
* Trying 173.194.39.103...
* Timeout
* Trying 173.194.39.99...
* Timeout
* Trying 173.194.39.101...
* Timeout
* Trying 173.194.39.104...
* Timeout
* Trying 173.194.39.100...
* Timeout
* Trying 2a00:1450:400d:803::1009...
* Failed to connect to 2a00:1450:400d:803::1009: Network is unreachable
* Success
* couldn't connect to host
* Closing connection #0
curl: (7) Failed to connect to 2a00:1450:400d:803::1009: Network is unreachable
Перезапуск соединения и / или перезагрузка модуля ядра сетевой карты не помогает. Единственное, что помогает - это перезагрузка.
Очевидно, что-то не так с моей системой (все остальное работает нормально), но я понятия не имею, что именно.
Моя настройка - это беспроводной маршрутизатор, который подключен к провайдеру через PPPoE.
Любой совет?
Ответы на комментарии
Что это за NIC?
12:00.0 Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev 01)
Subsystem: Dell Inspiron M5010 / XPS 8300
Flags: bus master, fast devsel, latency 0, IRQ 17
Memory at fbb00000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [58] Vendor Specific Information: Len=78 <?>
Capabilities: [48] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [d0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Virtual Channel
Capabilities: [160] Device Serial Number 00-00-9d-ff-ff-aa-1c-65
Capabilities: [16c] Power Budgeting <?>
Kernel driver in use: brcmsmac
Каково состояние вашей сетевой карты, когда возникает проблема?
iptables-save
ничего не печатает.
ip rule show
:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
ip route show table all
:
default via 192.168.1.1 dev wlan0
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.105
broadcast 127.0.0.0 dev lo table local proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1
broadcast 192.168.1.0 dev wlan0 table local proto kernel scope link src 192.168.1.105
local 192.168.1.105 dev wlan0 table local proto kernel scope host src 192.168.1.105
broadcast 192.168.1.255 dev wlan0 table local proto kernel scope link src 192.168.1.105
fe80::/64 dev wlan0 proto kernel metric 256
unreachable default dev lo table unspec proto kernel metric 4294967295 error -101 hoplimit 255
local ::1 via :: dev lo table local proto none metric 0
local fe80::1e65:9dff:feaa:b1f1 via :: dev lo table local proto none metric 0
ff00::/8 dev wlan0 table local metric 256
unreachable default dev lo table unspec proto kernel metric 4294967295 error -101 hoplimit 255
Все вышеперечисленное одинаково, когда машина работает в обычном режиме.
ifconfig
- Я его запустил, но как-то забыл сохранить перед перезагрузкой. Придется подождать до следующего раза, когда возникнет проблема. Прости за это.
Есть ли QoS на месте?
Наверное, нет - по крайней мере, я ничего не сделал специально, чтобы включить его.
Вы пытались прослушать трафик, фактически отправленный на интерфейс?
Я запускал curl и tcpdump несколько раз, и было два шаблона.
Первый - это просто SYN-пакеты без ответов.
17:14:37.836917 IP (tos 0x0, ttl 64, id 4563, offset 0, flags [DF], proto TCP (6), length 60)
192.168.1.105.42030 > fra07s07-in-f102.1e100.net.http: Flags [S], cksum 0x27fc (incorrect -> 0xbea8), seq 3764607647, win 13600, options [mss 1360,sackOK,TS val 33770316 ecr 0,nop,wscale 4], length 0
17:14:38.836650 IP (tos 0x0, ttl 64, id 4564, offset 0, flags [DF], proto TCP (6), length 60)
192.168.1.105.42030 > fra07s07-in-f102.1e100.net.http: Flags [S], cksum 0x27fc (incorrect -> 0xbdae), seq 3764607647, win 13600, options [mss 1360,sackOK,TS val 33770566 ecr 0,nop,wscale 4], length 0
17:14:40.840649 IP (tos 0x0, ttl 64, id 4565, offset 0, flags [DF], proto TCP (6), length 60)
192.168.1.105.42030 > fra07s07-in-f102.1e100.net.http: Flags [S], cksum 0x27fc (incorrect -> 0xbbb9), seq 3764607647, win 13600, options [mss 1360,sackOK,TS val 33771067 ecr 0,nop,wscale 4], length 0
Второе это:
17:22:56.507827 IP (tos 0x0, ttl 64, id 41583, offset 0, flags [DF], proto TCP (6), length 60)
192.168.1.105.42036 > fra07s07-in-f102.1e100.net.http: Flags [S], cksum 0x27fc (incorrect -> 0x2244), seq 1564709704, win 13600, options [mss 1360,sackOK,TS val 33894944 ecr 0,nop,wscale 4], length 0
17:22:56.546763 IP (tos 0x58, ttl 54, id 65442, offset 0, flags [none], proto TCP (6), length 60)
fra07s07-in-f102.1e100.net.http > 192.168.1.105.42036: Flags [S.], cksum 0x6b1e (correct), seq 1407776542, ack 1564709705, win 14180, options [mss 1430,sackOK,TS val 3721836586 ecr 33883552,nop,wscale 6], length 0
17:22:56.546799 IP (tos 0x58, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
192.168.1.105.42036 > fra07s07-in-f102.1e100.net.http: Flags [R], cksum 0xf301 (correct), seq 1564709705, win 0, length 0
17:22:58.511843 IP (tos 0x0, ttl 64, id 41584, offset 0, flags [DF], proto TCP (6), length 60)
192.168.1.105.42036 > fra07s07-in-f102.1e100.net.http: Flags [S], cksum 0x27fc (incorrect -> 0x204f), seq 1564709704, win 13600, options [mss 1360,sackOK,TS val 33895445 ecr 0,nop,wscale 4], length 0
17:22:58.555423 IP (tos 0x58, ttl 54, id 65443, offset 0, flags [none], proto TCP (6), length 60)
fra07s07-in-f102.1e100.net.http > 192.168.1.105.42036: Flags [S.], cksum 0x3b03 (correct), seq 1439178112, ack 1564709705, win 14180, options [mss 1430,sackOK,TS val 3721838596 ecr 33883552,nop,wscale 6], length 0
17:22:58.555458 IP (tos 0x58, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
192.168.1.105.42036 > fra07s07-in-f102.1e100.net.http: Flags [R], cksum 0xf301 (correct), seq 1564709705, win 0, length 0
выход эттоола
ethtool -k wlan0
:
Features for wlan0:
rx-checksumming: off [fixed]
tx-checksumming: off
tx-checksum-ipv4: off [fixed]
tx-checksum-unneeded: off [fixed]
tx-checksum-ip-generic: off [fixed]
tx-checksum-ipv6: off [fixed]
tx-checksum-fcoe-crc: off [fixed]
tx-checksum-sctp: off [fixed]
scatter-gather: off
tx-scatter-gather: off [fixed]
tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: off
tx-tcp-segmentation: off [fixed]
tx-tcp-ecn-segmentation: off [fixed]
tx-tcp6-segmentation: off [fixed]
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: off [requested on]
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: off [fixed]
tx-vlan-offload: off [fixed]
ntuple-filters: off [fixed]
receive-hashing: off [fixed]
highdma: off [fixed]
rx-vlan-filter: off [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: on [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
Iptables
# namei -l "$(command -v iptables)"
f: /sbin/iptables
drwxr-xr-x root root /
drwxr-xr-x root root sbin
lrwxrwxrwx root root iptables -> xtables-multi
-rwxr-xr-x root root xtables-multi
# dpkg -S "$(command -v iptables)"
iptables: /sbin/iptables
# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
# iptables -t mangle -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
# iptables -t security -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
информация о модуле
# ethtool -i wlan0
driver: brcmsmac
version: 3.2.0-3-686-pae
firmware-version: N/A
bus-info: 0000:12:00.0
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
# modinfo brcmsmac
filename: /lib/modules/3.2.0-3-686-pae/kernel/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
license: Dual BSD/GPL
description: Broadcom 802.11n wireless LAN driver.
author: Broadcom Corporation
alias: pci:v000014E4d00000576sv*sd*bc*sc*i*
alias: pci:v000014E4d00004727sv*sd*bc*sc*i*
alias: pci:v000014E4d00004353sv*sd*bc*sc*i*
alias: pci:v000014E4d00004357sv*sd*bc*sc*i*
depends: mac80211,brcmutil,cfg80211,cordic,crc8
intree: Y
vermagic: 3.2.0-3-686-pae SMP mod_unload modversions 686
Там нет /sys/module/brcmsmac/parameters
. Вот что у меня там:
# tree /sys/module/brcmsmac
/sys/module/brcmsmac
├── drivers
│ └── pci:brcmsmac -> ../../../bus/pci/drivers/brcmsmac
├── holders
├── initstate
├── notes
├── refcnt
├── sections
│ └── __bug_table
└── uevent
Некоторые сайты действительно работают
По предложению доктора , я пробовал некоторые другие сайты, и, к моему большому удивлению, некоторые из них действительно работали. Вот некоторые работающие хосты:
- rambler.ru
- google.ru
- ya.ru
- opennet.ru
- tut.by
- ro-che.info
- yahoo.com
- ebay.com
А вот некоторые, которые этого не сделали:
- vk.com
- meta.ua
- ukr.net
- tenet.ua
- prom.ua
- reddit.com
- github.com
- stackexchange.com
Захват сети
Я сделал сетевой захват и загрузил его здесь .
источник
iptables-save
, изip rule show
,ip route show table all
. Есть ли QoS на месте?linux-image-3.2.0-3-686-pae
), а прошивка - изfirmware-brcm80211
пакета. Были ли у вас проблемы, похожие на мою? Я бы предпочел избегать сборки вещей вручную, если только это не известная проблема. Кроме того, почему проблема с модулем NIC проявляется на уровне 4?Ответы:
В предоставленном вами захвате эхо-ответ с отметкой времени в SYN-ACK во втором пакете не соответствует TSVal в SYN в первом пакете и отстает на несколько секунд.
И посмотрите, как все TSecr, отправленные как 173.194.70.108, так и 209.85.148.100, одинаковы и не имеют отношения к TSVal, который вы отправляете.
Похоже, что-то смешивается с временными метками TCP. Я понятия не имею, что может быть причиной этого, но похоже, что это находится за пределами вашей машины. Помогает ли перезагрузка маршрутизатора в этом случае?
Я не знаю, является ли это причиной того, что ваша машина отправляет RST (на 3-м пакете). Но ему определенно не нравится этот SYN-ACK, и это единственное, что я могу найти по этому поводу. Единственное другое объяснение, которое я могу придумать, - это если бы не ваш компьютер отправлял RST, но, учитывая разницу во времени между SYN-ACK и RST, я бы сомневался в этом. Но на всякий случай, вы используете виртуальные машины или контейнеры или сетевые пространства имен на этом компьютере?
Вы можете попробовать отключить временные метки TCP, чтобы посмотреть, поможет ли это:
Таким образом, либо эти сайты отправляют поддельные TSecr, либо в пути есть что-то (любой маршрутизатор в пути или прозрачный прокси-сервер), который искажает исходящий TSVal или входящий TSecr, либо прокси с поддельным стеком TCP. Почему можно исказить временные метки tcp, я могу только догадываться: ошибка, уклонение от обнаружения вторжений, слишком умный / поддельный алгоритм формирования трафика. Это не то, что я слышал раньше (но тогда я не эксперт по этому вопросу).
Как исследовать дальше:
источник
Это говорит о неправильной контрольной сумме выше. Есть ли разгрузка контрольной суммы для этого устройства (я не знал, что беспроводные устройства могли бы разгрузить контрольные суммы).
Что
sudo ethtool -k wlan0
тебе сказать. Если есть разгрузка, вы можете попробовать отключить ее.Вы должны быть пользователем root, чтобы вызвать iptables-save. Есть все еще некоторый отдаленный шанс, что что-то портит пакеты там. Если
iptables-save
не работает, попробуйте:В захвате вашей сети, совпадает ли MAC-адрес назначения с адресом маршрутизатора. Что-нибудь интересное в сравнении трафика UDP с трафиком TCP?
Кроме того, где
$dev
находится драйвер ядра (модуль) (см.ethtool -i wlan0
) Для вашего беспроводного адаптера, что вам сказатьmodinfo "$dev"
иgrep . /sys/module/"$dev"/parameters/*
сказать?источник
namei -l "$(command -v iptables)"
иdpkg -S "$(command -v iptables)"
сказать?tshark -Viwlan0 tcp
одного из этих пакетов SYN здесь?Кажется, у меня тоже самое поведение на ноутбуке. Я не знаю причину, но время от времени я не мог подключиться к google.com и некоторым другим внешним ресурсам. Пинги и DNS-запросы работают отлично. Также я нашел только одно решение: перезагрузка .
Я мог бы добавить несколько замечаний:
Некоторая техническая информация о моей коробке:
ОС: последний ArchLinux amd64
Я предполагаю, что это ошибочное поведение происходит из-за некоторой тонкой ошибки в некоторых версиях ядра Linux, но я не знаю, как отладить эту проблему, и из-за нестабильного воспроизведения я застрял.
источник
У меня была та же проблема, которую вы описали, пока я не добавил вышеуказанную команду в мои команды iptables интернет-шлюза. По умолчанию входит в пакет rp-pppoe и другие. Но когда вы выбираете пользовательские конфигурации и не устанавливаете их вручную, компьютеры в локальной сети за шлюзом будут иметь проблемы, которые вы описываете.
источник