며칠 후 다음과 같은 문제가 발생합니다. 내 노트북(Debian 테스트)이 갑자기 TCP를 사용하여 인터넷에 연결할 수 없습니다.
다음은 정상적으로 계속 작동합니다.
- UDP(DNS), ICMP(ping) — 즉시 응답을 받습니다.
- 로컬 네트워크의 다른 컴퓨터에 대한 TCP 연결(예: 이웃의 노트북에 SSH로 연결할 수 있음)
- 내 LAN에 있는 다른 컴퓨터에서는 모든 것이 정상입니다.
하지만 랩톱에서 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
— 실행했지만 다시 시작하기 전에 저장하는 것을 잊어버렸습니다. 문제를 해결하려면 다음에 문제가 발생할 때까지 기다려야 합니다. 미안합니다.
QoS가 있나요?
아마도 그렇지 않을 것입니다. 적어도 저는 그것을 활성화하기 위해 특별한 조치를 취하지 않았습니다.
인터페이스에서 전송되는 실제 트래픽을 스니핑해 보셨나요?
나는 두 가지 모드로 컬과 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 출력
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.com
- google.ru
- 야루
- opennet.ru
- 뚜뚜뚜뚜
- Luoche 정보 네트워크
- 야후닷컴
- 이베이
다음은 그렇지 않은 것입니다:
- vk.com
- 위안UA
- ukraine.com
- 신조
- 프로모션
- reddit.com
- github.com
- stackexchange.com
인터넷 캡처
네트워크 패킷을 캡쳐해서 업로드했어요여기.
답변1
제공해 주신 캡처에는타임스탬프 에코 응답두 번째 패킷의 SYN-ACK에 있는 TSVal은 첫 번째 패킷의 SYN에 있는 TSVal과 일치하지 않으며 몇 초 늦었습니다.
173.194.70.108 및 209.85.148.100에서 보낸 모든 TSecr은 동일하며 보낸 TSVal과 아무 관련이 없습니다.
TCP 타임스탬프에 뭔가가 섞여 있는 것 같습니다. 원인이 무엇인지는 모르겠지만 컴퓨터 외부에 있는 것 같습니다. 이 상황에서 라우터를 다시 시작하는 것이 도움이 됩니까?
이것이 귀하의 컴퓨터가 (세 번째 패킷에서) RST를 보내는 원인인지는 모르겠습니다. 그러나 그것은 내가 찾을 수 있는 유일한 버그인 SYN-ACK를 확실히 좋아하지 않습니다. 내가 생각할 수 있는 유일한 다른 설명은 RST를 보내는 컴퓨터가 아닌 경우이지만 SYN-ACK와 RST 간의 시간 차이를 고려할 때 의심스럽습니다. 하지만 혹시라도 이 머신에서 VM, 컨테이너 또는 네트워크 네임스페이스를 사용하고 있나요?
TCP 타임스탬프를 완전히 비활성화하여 도움이 되는지 확인할 수 있습니다.
sudo sysctl -w net.ipv4.tcp_timestamps=0
따라서 이러한 사이트가 가짜 TSecr를 보내고 있거나, 나가는 TSVal 또는 들어오는 TSecr을 손상시키는 무언가(가로에 있는 라우터 또는 투명 프록시)가 있거나, 가짜 TCP 스택이 있는 프록시가 있습니다. 누군가가 TCP 타임스탬프를 깨뜨린 이유는 버그, 침입 탐지 회피, 지나치게 스마트/가짜 트래픽 형성 알고리즘 등을 추측할 수 있을 뿐입니다. 이것은 내가 이전에 들어본 적이 없는 것입니다(그러나 나는 이 주제에 대한 전문가는 아닙니다).
추가 조사 방법:
- TPLink 라우터가 재설정을 비난하는지 확인하고 그것이 가능하다면 외부 트래픽을 돕거나 캡처하는지 확인하고 실제로 타임스탬프를 손상시키는지 확인하십시오.
- TTL을 사용하거나, 웹 서버에서 수신한 요청 헤더를 확인하거나, 유효하지 않은 웹 사이트가 요청될 때의 동작을 확인하여 투명 프록시가 있는지 확인하세요.
- 원격 웹 서버의 트래픽을 캡처하여 TSVal 또는 TSecr이 손상되었는지 확인하십시오.
답변2
체크섬이 틀렸다고 뜹니다. 장치에 체크섬 오프로드 기능이 있습니까(무선 장치가 체크섬을 오프로드할 수 있는지는 모르겠습니다).
당신에게 무엇을 sudo ethtool -k wlan0
. 제거가 있는 경우 비활성화해 볼 수 있습니다.
iptables-save를 호출하려면 루트여야 합니다. 뭔가가 패킷을 손상시키고 있을 가능성이 여전히 남아 있습니다. iptables-save
그래도 문제가 해결되지 않으면 다음을 시도해 보세요 .
iptables -nvL
iptables -t mangle -nvL
iptables -t nat -nvL
iptables -t security -nvL
네트워크 캡처에서 대상 MAC 주소가 라우터의 MAC 주소와 일치합니까? TCP 트래픽과 비교할 때 UDP 트래픽에 흥미로운 점이 있습니까?
또한 무선 어댑터(참고자료 참조)용 커널 드라이버(모듈)는 어디에 있으며 $dev
무엇을 알려줍니까?ethtool -i wlan0
modinfo "$dev"
grep . /sys/module/"$dev"/parameters/*
답변3
내가 가진 것 같다완전 똑같은 행동내 노트북에도 이 문제가 있습니다. 이유는 모르겠지만 가끔 google.com 및 기타 외부 리소스에 연결할 수 없는 경우가 있습니다. Ping 및 DNS 쿼리가 제대로 작동합니다. 게다가 나는 단 하나의 해결책만을 찾았습니다.재시작.
몇 가지 관찰 사항을 추가할 수 있습니다.
- Virtual Box에서 다른 운영 체제(Windows, ArchLinux, Ubuntu)를 부팅하면 문제 없이 해당 호스트에 TCP 연결을 설정할 수 있습니다.
- 인터넷의 일부 호스트는 google.com처럼 작동하지만 그 중 상당수가 일반적으로 텔넷이나 웹 브라우저를 사용하여 액세스할 수 있습니다.
- 내 노트북에는 WIFI 어댑터가 없고 라우터에 대한 이더넷 링크만 있습니다.
- debian/gentoo 사용자 공간으로 chrooting을 시도했지만 도움이 되지 않았습니다.
- 네트워크 카드를 새 카드로 교체했는데 도움이 되지 않았습니다.
내 상자에 대한 일부 기술 정보:
운영 체제: 마지막 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 버전의 커널에 있는 미묘한 버그로 인해 발생한다고 생각합니다. 하지만 이 문제를 디버깅하는 방법을 모르고 불안정한 재생으로 인해 멈췄습니다.
답변4
/sbin/iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
추가하기 전까지 설명하신 것과 동일한 문제가 있었습니다.~ 위에내 인터넷 게이트웨이 iptables 명령을 명령합니다. rp-pppoe 패키지 및 기타 패키지에 기본적으로 포함되어 있습니다. 그러나 사용자 지정 구성을 수행하고 수동으로 설정하지 않으면 게이트웨이 뒤의 LAN에 있는 컴퓨터에 설명된 문제가 발생합니다.