数日に一度、次の問題が発生します。私のラップトップ(Debianテスト)は突然インターネットへのTCP接続で動作できなくなります。
次のことが引き続き正常に機能します。
しかし、ラップトップからTCP接続を試みると、タイムアウトになります(SYNパケットへの応答がありません)。典型的なカール出力は次のとおりです。
% 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を介してISPに接続されているワイヤレスルーターです。
何かアドバイス?
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
—実行しましたが、再起動する前に保存するのを忘れていました。次に問題が発生するまで待つ必要があります。申し訳ありません。
おそらくそうではありません—少なくとも私はそれを可能にするために特別に何もしていません。
Curlとtcpdumpを数回実行しましたが、2つのパターンがありました。
1つ目は、応答のない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
2番目はこれです:
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]
# 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
drが示唆しているように、私は他のいくつかのサイトを試しましたが、驚いたことに、それらのいくつかは実際に機能しました。機能したホストをいくつか示します。
そして、これはそうではなかったいくつかです:
ネットワークキャプチャを作成してアップロードしました ここ 。
指定したキャプチャでは、2番目のパケットのSYN-ACKのタイムスタンプエコー応答が最初のパケットのSYNのTSValと一致せず、数秒遅れています。
そして、173.194.70.108と209.85.148.100の両方によって送信されるすべてのTSecrがすべて同じであり、送信するTSValとは無関係であることを確認してください。
TCPタイムスタンプと混ざり合っているようです。何が原因かわかりませんが、マシンの外部にあるようです。この場合、ルーターを再起動すると役に立ちますか?
それがあなたのマシンが(3番目のパケットで)RSTを送信する原因であるかどうかはわかりません。しかし、それは間違いなくそのSYN-ACKが好きではなく、それが私が見つけることができる唯一の問題です。私が考えることができる他の唯一の説明は、RSTを送信しているのがあなたのマシンではないが、SYN-ACKとRSTの時間差が与えられている場合、私はそうは思わないでしょう。しかし念のため、このマシンで仮想マシン、コンテナ、またはネットワーク名前空間を使用していますか?
TCP timestampsを完全に無効にして、それが役立つかどうかを確認することができます。
Sudo sysctl -w net.ipv4.tcp_timestamps=0
したがって、これらのサイトは偽のTSecrを送信するか、途中で発信TSValまたは着信TSecrのいずれかをマングルする何か(途中のルーター、または透過プロキシ)、または偽のTCPスタック。推測できるtcpタイムスタンプを壊す理由:バグ、侵入検出回避、スマートすぎる/偽のトラフィックシェーピングアルゴリズム。これは私が以前聞いたことのないことです(しかし、私は専門家ではありません)件名に)。
さらに調査する方法:
私のラップトップでもまったく同じ動作があるようです。理由はわかりませんが、ときどきgoogle.comやその他の外部リソースに接続できませんでした。 pingとDNSクエリは完全に機能します。また、私はただ1つの解決策を見つけました:再起動。
私はいくつかの観察を追加することができます:
私の箱に関するいくつかの技術情報:
OS:最後の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
このバグの多い動作は、Linuxカーネルの一部のバージョンにある微妙なバグが原因で発生すると考えられますが、この問題のデバッグ方法がわからず、再現が不安定なためにスタックします。
上記のチェックサムが正しくありません。そのデバイスのチェックサムオフロードはありますか(ワイヤレスデバイスがチェックサムをオフロードできることを知りませんでした)。
Sudo ethtool -k wlan0
は何を教えてくれますか。オフロードがある場合は、それを無効にしてみてください。
Iptables-saveを呼び出すには、rootである必要があります。パケットがそこにマングルされている可能性はまだあります。 iptables-save
が機能しない場合は、以下を試してください。
iptables -nvL
iptables -t mangle -nvL
iptables -t nat -nvL
iptables -t security -nvL
ネットワークキャプチャで、宛先MACアドレスがルーターのMACアドレスと一致していますか。 UDPトラフィックとTCPトラフィック)の比較で興味深いものはありますか?
また、$dev
がワイヤレスアダプタのカーネルドライバ(モジュール)(ethtool -i wlan0
を参照)である場合、modinfo "$dev"
とgrep . /sys/module/"$dev"/parameters/*
は何を教えてくれますか?
/sbin/iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
追加されるまで、あなたが説明したのと同じ問題がありました 上記 コマンド私のインターネットゲートウェイiptablesコマンド。 Inは、rp-pppoeパッケージなどにデフォルトで含まれています。ただし、カスタム構成を選択し、手動で設定しない場合、ゲートウェイの背後にあるLAN上のコンピューターに、説明した問題が発生します。