TCP bir Linux dizüstü bilgisayarda ölüyor


17

Birkaç gün içinde bir kez aşağıdaki sorun var. Dizüstü bilgisayarım (Debian testi) aniden internete TCP bağlantıları ile çalışamaz hale gelir.

Aşağıdaki şeyler iyi çalışmaya devam ediyor:

  • UDP (DNS), ICMP (ping) - Anında yanıt alıyorum
  • Yerel ağdaki diğer makinelere TCP bağlantıları (örn. Komşu dizüstü bilgisayara ssh yapabilirim)
  • LAN'ımdaki diğer makineler için her şey yolunda

Ancak dizüstü bilgisayarımdan TCP bağlantılarını denediğimde zaman aşımına uğradı (SYN paketlerine yanıt yok). İşte tipik bir kıvrılma çıktısı:

% 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

Bağlantıyı yeniden başlatmak ve / veya ağ kartı çekirdek modülünü yeniden yüklemek yardımcı olmaz. Yardımcı olan tek şey yeniden başlatmaktır.

Açıkçası sistemimde bir sorun var (her şey iyi çalışıyor), ama tam olarak ne olduğu hakkında hiçbir fikrim yok.

Kurulumum, ISP'ye PPPoE aracılığıyla bağlı bir kablosuz yönlendiricidir.

Herhangi bir tavsiye?

Yorumların cevapları

Ne 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

Sorun ortaya çıktığında NIC'inizin durumu nedir?

iptables-save hiçbir şey yazdırmaz.

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

Makine normal modda çalışırken yukarıdakilerin hepsi aynıdır.

ifconfig- Koştum, ama yeniden başlatmadan önce bir şekilde kurtarmayı unuttum. Sorun bir daha ortaya çıkana kadar beklemek zorunda kalacak. Bunun için üzgünüm.

Herhangi bir QoS mevcut mu?

Muhtemelen hayır - en azından bunu etkinleştirmek için özel bir şey yapmadım.

Arayüzde gerçekten gönderilen trafiği koklamayı denediniz mi?

Birkaç kez kıvrılma ve tcpdump koştum ve iki desen vardı.

Birincisi, cevapsız sadece SYN paketleri.

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

İkincisi şudur:

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

ettool çıktısı

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         

modül bilgisi

# 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 

Yok /sys/module/brcmsmac/parameters. İşte orada ne var:

# tree /sys/module/brcmsmac
/sys/module/brcmsmac
├── drivers
│   └── pci:brcmsmac -> ../../../bus/pci/drivers/brcmsmac
├── holders
├── initstate
├── notes
├── refcnt
├── sections
│   └── __bug_table
└── uevent

Bazı siteler aslında çalışır

Dr tarafından önerildiği gibi , diğer bazı siteleri denedim ve büyük bir sürpriz gerçekten bazıları çalıştı. İşte bazı ana bilgisayarlar çalıştı:

  • rambler.ru
  • google.ru
  • ya.ru
  • opennet.ru
  • tut.by
  • ro-che.info
  • yahoo.com
  • ebay.com

Ve işte olmayanlar:

  • vk.com
  • meta.ua
  • ukr.net
  • tenet.ua
  • prom.ua
  • reddit.com
  • github.com
  • stackexchange.com

Ağ yakalama

Bir ağ yakalaması yaptım ve buraya yükledim .


1
Sadece merakla: Sorun ortaya çıktığında NIC'inizin durumu nedir? (/ sbin / ifconfig?)
yves Baumes

Arayüzde gönderilen trafiği koklamayı denediniz mi (wireshark / tcpdump ...)? Ne NIC? Kablosuz mu? Çıktısı nedir iptables-savearasında ip rule show, ip route show table all. Herhangi bir QoS mevcut mu?
Stéphane Chazelas

Gönderi, sorularınızın cevaplarıyla güncellendi.
Roman Cheplyaka

1
Sürücüyü kaynaktan yapmadım. Modülün kendisi stok Debian çekirdeğinden (paket linux-image-3.2.0-3-686-pae) ve bellenim firmware-brcm80211paketten geliyor . Benimkine benzer problemleriniz mi var? Bilinen bir sorun olmadıkça elle bir şeyler oluşturmaktan kaçınmayı tercih ederim. Ayrıca, NIC modülü sorunu neden katman 4'te kendini göstermeli?
Roman Cheplyaka

1
Wi-Fi baz istasyonunuzda, anahtarınızda veya yönlendiricinizde yanlış olan her şey muhtemelen. Mümkünse orada paketleri (veya paket sayılarını) izlemeyi deneyin. Değilse, alternatiflerle değiştirmeyi deneyin.
Bahama

Yanıtlar:


5

Sağladığınız yakalama yılında Zaman Damgası Yankı Cevap birinci pakette SYN de TSVal eşleşmiyor ikinci pakette SYN-ACK ve arkasında birkaç saniyedir.

Hem 173.194.70.108 hem de 209.85.148.100 tarafından gönderilen tüm TSecr'lerin, gönderdiğiniz TSVal ile aynı ve alakasız olduğunu görün.

Görünüşe göre TCP zaman damgalarıyla karışan bir şey var. Buna neyin sebep olabileceği hakkında hiçbir fikrim yok, ama makinenizin dışında gibi görünüyor. Yönlendiricinin yeniden başlatılması bu durumda yardımcı olur mu?

Makinenizin bir RST göndermesine neden olan şey olup olmadığını bilmiyorum (3. pakette). Ama bu SYN-ACK'yı kesinlikle sevmiyor ve bulabildiğim tek yanlış şey bu. Düşünebileceğim diğer tek açıklama, RST'yi gönderen makineniz değilse, ancak SYN-ACK ve RST arasındaki zaman farkı göz önüne alındığında şüphe duyarım. Ancak, her ihtimale karşı, bu makinede sanal makineler veya kaplar veya ağ ad alanları kullanıyor musunuz?

Bunun işe yarayıp yaramadığını görmek için TCP zaman damgalarını tamamen devre dışı bırakmayı deneyebilirsiniz:

sudo sysctl -w net.ipv4.tcp_timestamps=0

Yani, bu siteler sahte TSecr gönderir veya giden TSVal veya gelen TSecr'i yöneten bir şey (yolda herhangi bir yönlendirici veya şeffaf proxy) veya sahte TCP yığınına sahip bir proxy vardır. Neden sadece spekülasyon yapabileceğim tcp zaman damgalarını değiştirelim: hata, saldırı tespit kaçırma, çok akıllı / sahte bir trafik şekillendirme algoritması. Bu daha önce duyduğum bir şey değil (ama o zaman bu konuda uzman değilim).

Daha ayrıntılı araştırma:

  • TPLink yönlendiricinin, zaman damgalarını değiştirip değiştirmediğini görmek için mümkünse dışardan gelen trafiği de yardımcı olup olmadığını görmek için neden sıfırladığını görün.
  • TTL'lerle oynayarak, web sunucuları tarafından alınan istek başlıklarına bakarak veya ölü web siteleri talep ederken davranışa bakarak şeffaf bir proxy olup olmadığını kontrol edin.
  • yönetilen TSVal veya TSecr olup olmadığını görmek için uzak bir web sunucusundaki trafiği yakalayın.

Hayır, çalışan herhangi bir vms / konteyner yoktu. Bir dahaki sefere önerilerinizi deneyeceğim, teşekkürler.
Roman Cheplyaka

1
Xm .. tcp_timestamps hakkındaki öneri sorunumu kesinlikle çözdü. Net.ipv4.tcp_timestamps'ı 0 olarak ayarladıktan sonra google ve diğer web siteleriyle hiç sorun değil ve net.ipv4.tcp_timestamps = 1 durumunda NEDEN yine bir sürü sorun var?
dr.

1

Yukarıda yanlış sağlama toplamı yazıyor. Bu cihaz için sağlama toplamı boşaltma var mı (kablosuz cihazların sağlama toplamlarını kaldırabileceğini bilmiyordum).

sudo ethtool -k wlan0Size ne anlatıyor. Boşaltma varsa, denemek ve devre dışı bırakmak isteyebilirsiniz.

İptables-save'i aramak için root olmanız gerekir. Hala bir şeylerin paketleri karıştırması için uzak bir şans var. Çalışmazsa iptables-save, şunları deneyin:

iptables -nvL
iptables -t mangle -nvL
iptables -t nat -nvL
iptables -t security -nvL

Ağ yakalamanızda, hedef MAC adresi yönlendiricinin adresiyle eşleşiyor mu? UDP trafiğinden TCP trafiğine kıyasla ilginç bir şey var mı?

Ayrıca, kablosuz bağdaştırıcınızın $devçekirdek sürücüsü (modülü) (bkz. ethtool -i wlan0) Nerede , ne yapar modinfo "$dev"ve grep . /sys/module/"$dev"/parameters/*size söyler?


İyi yakalama! Yanlış kontrol toplamı fark etmedim. Cevabı ettool çıktısıyla güncelleyeceğim. iptables-save kök olarak çalıştırıldı, hiçbir şey yazdırmıyor. Bir dahaki sefere MAC adreslerini göstermek için tcpdump'ı yeniden çalıştıracağım.
Roman Cheplyaka

İptables-save hiçbir şey döndürmezse, kesinlikle yanlış bir şey var. Size ne söyler namei -l "$(command -v iptables)"ve dpkg -S "$(command -v iptables)"söyler misiniz?
Stéphane Chazelas

Çıktı yayınlandı.
Roman Cheplyaka

Gönderi modül bilgisi ile güncellendi.
Roman Cheplyaka

Teşekkürler. Cevabımdaki düzenlemelerime bakın. Ayrıca bir yere yakalama için bir pcap, ya da belki tshark -Viwlan0 tcpbu SYN paketlerinden biri için çıktı çıktı burada yapıştırabilirsiniz ?
Stéphane Chazelas

1

Görünüşe göre, dizüstü bilgisayarımda da aynı davranışa sahibim. Sebebini bilmiyorum, ancak zaman zaman google.com ve diğer bazı harici kaynaklara bağlanamadım. Ping ve DNS sorguları mükemmel çalışır. Ayrıca tek bir çözüm buldum: yeniden başlatma .

Birkaç gözlem ekleyebilirim:

  1. Sanal Kutumda başka bir işletim sistemi (Windows, ArchLinux, Ubuntu) önyükleme yaparsam, sorunlu ana bilgisayarlarla herhangi bir sorun olmadan TCP bağlantıları kurabilirim.
  2. İnternet'teki bazı ana bilgisayarlar google.com gibi davranıyor, ancak bunların çoğu normalde telnet veya web tarayıcısıyla erişilebilir
  3. Dizüstü bilgisayarımda WIFI adaptörü yok, yönlendiriciye yalnızca Ethernet bağlantısı var
  4. Debian / gentoo kullanıcı alanına girmeyi denedim - yardımcı olmuyor
  5. NIC'mi yenisiyle değiştirdim - yardımcı olmuyor

Kutum hakkında bazı teknik bilgiler:

İşletim Sistemi: Last ArchLinux amd64

$ ethtool -i  eth0
driver: via-rhine
version: 1.5.0
firmware-version: 
bus-info: 0000:02:07.0
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

$uname -a
Linux eniac-2 3.5.4-1-ARCH #1 SMP PREEMPT Sat Sep 15 08:12:04 CEST 2012 x86_64 GNU/Linux

Sanırım, bu hatalı davranış Linux çekirdeğinin bazı sürümlerinde bazı ince hatalar nedeniyle ortaya çıkıyor, ancak bu sorunu nasıl ayıklayacağımı bilmiyorum ve kararsız çoğaltma nedeniyle sıkıştım.


Paylaşım için teşekkürler! İşe yarayan bazı ana bilgisayar örnekleri nelerdir?
Roman Cheplyaka

Bu hatalı davranış ortaya çıktığında çalışan konakçı örnekleri: opennet.ru, tut.by.
dr.

Şimdi gerçekten de aynı sorunu yaşadığımıza ikna oldum ...
Roman Cheplyaka

Evet! Katılıyorum. Yönlendirici ürün yazılımımı dd-wrt veya openwrt gibi bir şeyde güncellemeyi veya sadece linux çekirdeğini indirmeyi düşünüyorum. Bu adımlardan herhangi birini denediniz mi?
dr.

1
Hayır. Yine de burada neler olduğunu öğrenmek isterim.
Roman Cheplyaka

0
/sbin/iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

İnternet ağ geçidi iptables komutlarımı yukarıdaki komutu ekleyene kadar açıkladığınız aynı sorunu yaşadım . Rp-pppoe paketinde ve diğerlerinde varsayılan olarak bulunur. Ancak özel yapılandırmalar için gittiğinizde ve manuel olarak ayarlamadığınızda, ağ geçidinin arkasındaki LAN'daki bilgisayarlarda açıkladığınız sorunlar olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.