Linux 및 Unix 사용자는 때때로 다양한 네트워크 문제에 직면합니다. 이러한 질문 중 다수는 여기 및 다른 문제 해결 포럼에서 제기되었지만 매우 구체적이고 추가 기술 정보가 많이 포함되어 있어 문제가 있는 시스템 동작의 요점과 실제 원인을 이해하기 어려울 때가 있습니다.
제가 이 질문을 드리는 목적은커뮤니티 위키 만들기페이지에서는 네트워크 문제 해결 및 디버깅 경험을 요약할 수 있습니다. Linux 및 Unix 사용자가 이 페이지를 사용하여 네트워크 문제를 보다 쉽게 식별하고 해결("분할 및 정복")할 수 있기를 바랍니다.
이 페이지의 상위 페이지는 다음과 같아야 합니다.문제 진단을 위한 모범 사례. 하지만 여기서는 문제 해결에 집중해야 합니다.인터넷 문제~에서사용자 공간과 커널 공간.
내 생각에 당신은:
- 발견하는 데 도움이 되는 특정 사용 예 및 네트워크 오류 예와 함께 몇 가지 훌륭한 네트워크 진단 도구 사용에 대한 정보를 공유합니다.
- 해당 주제에 대한 훌륭한 웹 튜토리얼 링크를 공유하세요.
- 특정 유형의 네트워크 문제를 해결할 수 있는 일반적인 방법이나 팁에 대해 알려주십시오.
- 네트워크 디버깅 및 문제 해결 도구 세트에 대한 정보 공유
그러면 주제에 딱 맞습니다.
다양한 링크 공유부터 시작하겠습니다진단 도구그리고12세 어린이를 위한 간단한 튜토리얼. 이아치 리눅스 튜토리얼우리 주제에 대한 실제 정보가 있는 것 같습니다. Linux 네트워킹에 대해 더 깊이 이해하려면 다음을 방문해야 합니다.리눅스 네트워크-HOWTO.
답변1
제 생각에는 네트워크 문제 해결의 일반적인 원칙은 다음과 같습니다.
- 당신의 레벨이 어느 정도인지 확인하세요TCP/IP 프로토콜 스택(또는 다른 스택) 뭔가 잘못되었습니다.
- 올바른 시스템 동작이 무엇인지, 정상적인 시스템 상태에서 벗어난 것이 무엇인지 이해합니다.
- 질문을 한 문장이나 몇 단어로 표현해 보세요.
- 결함이 있는 시스템에서 얻은 정보와 자신의 경험, 타인의 경험(구글, 각종 포럼 등)을 활용하여 성공(또는 실패)할 때까지 문제를 해결하려고 노력하세요.
- 그래도 실패하면 다른 사람에게 도움이나 조언을 구하십시오.
나는 대개 필요한 모든 정보를 얻고 그 정보를 내 경험과 일치시키기 위해 필요한 모든 도구를 사용합니다. 네트워크 스택의 어느 수준에 오류가 포함되어 있는지 확인하면 가능성이 낮은 변형을 제거하는 데 도움이 될 수 있습니다. 다른 사람의 경험을 활용하면 문제를 빠르게 해결하는 데 도움이 되지만, 이해하지 못한 채 문제를 해결할 수 있는 상황이 자주 발생하고, 문제가 다시 발생하면 인터넷 없이는 다시 해결할 수 있는 방법이 없습니다.
일반적으로 네트워크 문제를 해결하는 방법을 모르겠습니다. 내 두뇌에는 이라는 마법의 기능이 있는 것 같습니다 SolveNetworkProblem(information_about_system_state, my_experience, people_experience)
. 이 기능은 때로는 정확히 정답을 반환할 수도 있고 때로는 실패할 수도 있습니다(여기처럼).Linux 노트북에서 TCP가 작동하지 않음).
나는 일반적으로 네트워크 디버깅을 위해 다음 도구 세트를 사용합니다.
ifconfig
(또는ip link
,ip addr
) - 네트워크 인터페이스에 대한 정보를 얻는 데 사용됩니다.ping
- 내 컴퓨터에서 대상 호스트에 접근할 수 있는지 확인하는데 사용됩니다.ping
기본적인 DNS 진단에도 유용합니다. IP 주소나 호스트 이름으로 호스트를 핑하고 DNS가 제대로 작동하는지 확인할 수 있습니다. 그런 다음 거기에서 무슨 일이 일어나는지 확인traceroute
하십시오 .tracepath
mtr
dig
- 모든 DNS 진단dmesg | less
또는dmesg | tail
-dmesg | grep -i error
Linux 커널의 아이디어를 이해하는 데 어려움이 있습니다.netstat -antp
+| grep smth
- 가장 일반적으로 사용되는 netstat 명령은 TCP 연결에 대한 정보를 표시합니다. 나는 종종 grep을 사용하여 필터링을 수행합니다. 새ss
명령도 참조하세요(iproute2
새 명령에서기준Linux 네트워킹 도구 제품군) 및lsof
예:lsof -ai tcp -c some-cmd
telnet <host> <port>
- 다양한 TCP 서비스(예: SMTP, HTTP 프로토콜)와 통신하는 데 매우 유용하며 특정 TCP 포트에 연결할 수 있는 일반적인 가능성도 확인할 수 있습니다.iptables-save
(Linux에서) - 덤프가득한iptables 테이블ethtool
- 모든 네트워크 인터페이스 카드 매개변수 가져오기(링크 상태, 속도, 오프로드 매개변수...)socat
- 모든 네트워크 프로토콜(UDP, 멀티캐스트, SCTP...)을 테스트하기 위한 스위스 군용 도구입니다. 특히 유용하며(텔넷보다 더 유용함) 몇 가지 옵션이 있습니다-d
.iperf
- 대역폭 가용성 테스트openssl
(s_client
,ocsp
,x509
...) 모든 SSL/TLS/PKI 문제를 디버그합니다.wireshark
- 네트워크 트래픽을 캡처하고 분석하는 강력한 도구로, 많은 네트워크 오류를 분석하고 캡처할 수 있습니다.iftop
- 네트워크/라우터에 대규모 사용자를 표시합니다.iptstate
(Linux) - 방화벽 연결 추적의 현재 보기입니다.arp
(또는 Linux의 새로운 기능ip neigh
) - ARP 테이블 상태를 표시합니다.route
이상(Linux)ip route
- 라우팅 테이블 상태를 표시합니다.strace
(또는truss
시스템 에 따라) - 문제가 있는 프로세스가 수행하는 시스템 호출을 보여주는 유용한 도구입니다dtrace
.tusc
또한 시스템 호출이 실패하면 오류 코드(errno)를 표시합니다. 이 정보는 일반적으로 시스템 동작을 이해하고 문제를 해결하는 데 충분합니다. 또는 특정 네트워크 기능에 중단점을 사용하면gdb
해당 기능이 생성된 시기와 해당 매개변수가 무엇인지 알 수 있습니다.- Linux에서 방화벽 문제 조사:
iptables -nvL
각 규칙과 일치하는 패킷 수를 표시합니다(iptables -Z
카운터를 0으로 지움). 방화벽 체인에 대상을 삽입하는 것은LOG
어떤 패킷이 해당 대상에 도달했는지, 도착할 때까지 어떻게 변환되었는지 확인하는 데 유용합니다. 더 자세한 이해를 위해 전체 패킷이 기록됩니다NFLOG
(상대적으로 ).ulogd
답변2
놀랍게도 많은 "네트워크 문제"는 일종의 DNS 문제로 인해 추적될 수 있습니다. 초기 문제 해결에서는 ping -n w.x.y.z
호스트 이름의 DNS 확인을 무시하고 IP 연결만 확인해야 합니다. 나중에 route -n
DNS 확인 없이 기본 IP 경로를 확인하는 데 사용됩니다.
IP 연결 및 라우팅을 확인한 후 nslookup
, host
및 은 dig
메시지를 생성할 수 있습니다. "잠금"은 DNS 시간 초과를 나타낼 수 있다는 점에 유의하세요.
현재 상태와 콘텐츠를 확인하는 것을 잊지 마세요 /etc/resolv.conf
. DHCP 클라이언트는 임대할 때마다 이 파일을 변경하며 때로는 오류가 발생하거나 디스크 공간이 부족한 경우 업데이트가 발생하지 않을 수 있습니다.
답변3
배선 문제가 있을 수 있습니다. 하드웨어에 접근할 수 있는 경우 모든 케이블이 연결되어 있고 기계적으로 연결되어 있는지 확인하세요. 라우터나 이더넷 인터페이스가 보이면 링크 표시등이 켜져 있는지 확인하세요.
ethtool
원격에서는 및 에 의존해야 합니다 mii-tool
.
[root@flask ~]# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Speed: 10Mb/s
Duplex: Half
Port: MII
PHYAD: 24
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: g
Wake-on: d
Current message level: 0x00000001 (1)
drv
Link detected: yes
"링크 감지됨: 예"는 좋지만 이 컴퓨터의 NIC가 더 잘 작동할 수 있으므로 10Mb/s 및 반이중은 좋지 않습니다. 네트워크 카드인지 케이블인지 알아내야 합니다. 동일한 라우터에 연결된 다른 컴퓨터에서는 전이중 100Mb/s가 표시됩니다.