>  기사  >  시스템 튜토리얼  >  네트워크 라우팅 추적의 비밀, 리눅스 라우팅 탐지 기술 공개!

네트워크 라우팅 추적의 비밀, 리눅스 라우팅 탐지 기술 공개!

王林
王林앞으로
2024-02-13 22:27:18488검색

Linux 관리자로서 네트워크 연결 상태가 좋지 않고 대기 시간이 길어지는 등의 문제를 겪은 적이 있습니까? 더 나은 문제 해결을 위해 네트워크 경로 추적 및 탐지 기술에 대해 자세히 알아보고 싶었던 적이 있습니까? 그렇다면 Linux에서 라우팅 감지 기술을 배워야 합니다! 이 기사에서는 Linux 명령줄 도구를 사용하여 경로 추적 및 탐지를 빠르고 쉽게 수행하는 방법을 자세히 소개합니다.

네트워크 라우팅 추적의 비밀, 리눅스 라우팅 탐지 기술 공개!

linux 보기 네트워크 라우팅

네트워크에 연결된 모든 컴퓨터에는 로컬 호스트를 떠날 때 네트워크 TCP/IP 패킷에 대한 일종의 라우팅 지침이 필요합니다. 대부분의 네트워크 환경은 매우 단순하고 패킷을 남기는 옵션은 두 가지뿐이므로 이는 일반적으로 매우 간단합니다. 모든 패킷은 로컬 네트워크의 장치나 다른 원격 네트워크로 전송됩니다.

"로컬" 네트워크를 로컬 호스트가 위치한 논리 네트워크로 정의해야 하며, 일반적으로 물리적 네트워크도 정의해야 합니다. 논리적으로 이는 호스트에 로컬 서브넷 IP 주소 범위 중 하나가 할당된 로컬 서브넷을 나타냅니다. 물리적으로 이는 호스트가 하나 이상의 스위치에 연결되어 있으며 나머지 로컬 네트워크에도 연결되어 있음을 의미합니다.

TCP/IP 네트워크 모델

라우팅을 시작하기 전에 패킷이 네트워크의 올바른 호스트로 가는 길을 찾는 방법에 대한 도움을 받으세요. TCP/IP 네트워크 모델은 호스트가 로컬 네트워크에 있든 전 세계에 있든 상관없이 한 호스트에서 다른 호스트로 패킷을 이동하는 데 필요한 메커니즘을 설명하는 5개 계층 스택을 정의합니다. 이 모델에 대한 다음 설명에서 각 레이어에는 번호가 매겨져 있으며 해당 레이어에서 처리되는 데이터 단위의 이름도 포함되어 있습니다.

5. 애플리케이션 계층: 메시지 이 계층에는 HTTP, DHCP, SSH, FTP, SMTP, IMAP 등과 같은 다양한 네트워크 애플리케이션의 통신에 필요한 연결 프로토콜이 포함되어 있습니다. 원격 웹사이트에서 웹페이지를 요청하면 연결 요청이 웹 서버로 전송되고, 응답이 해당 레이어의 호스트로 다시 전송되며, 브라우저는 해당 창에 웹페이지를 표시합니다.

4. 전송 계층: TCP 세그먼트. 전송 계층은 전송되는 데이터 및 프로토콜 유형에 관계없이 종단 간 데이터 전송 및 스트림 관리 서비스를 제공합니다. 포트 80(예: HTTP) 및 25(SMTP)를 사용하여 보내는 호스트와 원격 호스트 간의 연결을 설정합니다.

3. 인터넷 계층: 데이터 패킷. 패킷 라우팅은 인터넷 계층에서 수행됩니다. 이 계층은 두 개 이상의 서로 다른 네트워크를 통해 패킷을 라우팅하여 최종 목적지에 도달하는 역할을 담당합니다. 이 계층은 IP 주소와 라우팅 테이블을 사용하여 패킷을 보낼 다음 장치를 결정합니다. 라우터로 전송된 경우 각 라우터는 로컬 호스트에서 대상 호스트까지 전체 경로를 매핑하는 것이 아니라 일련의 다음 라우터로 패킷을 전송하는 역할만 담당합니다. 인터넷 계층은 대부분 링크의 다음 라우터를 결정하기 위해 라우터와 통신하는 라우터에 관한 것입니다.

2. 데이터 링크 계층: 프레임워크. 링크 계층은 단일 로컬 논리 네트워크에 있는 하드웨어 호스트 간의 직접 연결을 관리합니다. 이 계층은 NIC(네트워크 인터페이스 카드)에 내장된 MAC(미디어 액세스 제어) 주소를 사용하여 로컬 네트워크에 연결된 물리적 장치를 식별합니다. 이 계층은 로컬 네트워크에 없는 호스트에 액세스할 수 없습니다.

1. 물리 계층: 비트. 이는 NIC와 물리적 이더넷 케이블뿐만 아니라 로컬 연결을 구성하는 두 호스트 또는 다른 네트워크 노드 간에 데이터 프레임을 구성하는 개별 비트를 전송하는 데 사용되는 하드웨어 수준 프로토콜로 구성된 하드웨어 계층입니다.

간단한 예

그렇다면 호스트가 실제로 TCP/IP 네트워크 모델을 사용하여 네트워크를 통해 데이터를 보내는 모습은 어떨까요? 이것은 데이터가 한 네트워크에서 다른 네트워크로 이동하는 방법에 대한 완전한 설명입니다. 이 예에서 내 컴퓨터는 웹 페이지 요청을 원격 서버로 보내고 있습니다.

애플리케이션 계층에서 브라우저는 웹 페이지 콘텐츠가 포함된 데이터를 다시 보내기 위해 원격 호스트 www.example.com에 대한 HTTP 연결 요청 메시지를 시작합니다. 다음은 메시지입니다. 여기에는 원격 웹 서버의 IP 주소만 포함되어 있습니다.

전송 계층은 원격 웹 서버의 IP 주소를 대상으로 하는 TCP 데이터그램에 웹 페이지 요청이 포함된 메시지를 캡슐화합니다. 이제 이 패킷은 원래 요청 패킷과 함께 요청이 이루어진 소스 포트를 포함합니다. 일반적으로 매우 큰 임의 포트이므로 반환된 데이터는 브라우저가 수신 대기 중인 포트를 알 수 있습니다. 그리고 원격 호스트의 대상 포트(이 경우 포트 80)입니다.

인터넷 계층은 소스 IP 주소와 대상 IP 주소도 포함하는 TCP 데이터그램을 패킷으로 캡슐화합니다.

데이터 링크 계층은 ARP(주소 확인 프로토콜)를 사용하여 기본 라우터의 물리적 MAC 주소를 식별하고 소스 MAC 주소와 대상 MAC 주소가 포함된 프레임에 인터넷 패킷을 캡슐화합니다.

프레임은 로컬 호스트의 NIC에서 기본 라우터의 NIC로 유선(일반적으로 CAT5 또는 CAT6)을 통해 전송됩니다.

기본 라우터는 데이터그램을 열고 대상 IP 주소를 결정합니다. 라우터는 자체 라우팅 테이블을 사용하여 프레임을 다음 단계로 이동할 다음 라우터의 IP 주소를 식별합니다. 그런 다음 라우터는 자신의 MAC을 소스로 포함하고 다음 라우터의 MAC 주소를 포함하는 새로운 데이터그램으로 프레임을 다시 캡슐화한 다음 적절한 인터페이스를 통해 전송됩니다. 라우터는 계층 3(인터넷 계층)에서 라우팅 작업을 수행합니다.

스위치는 레이어 2 이상의 모든 프로토콜에 표시되지 않으므로 논리적인 방식으로 데이터 전송에 영향을 미치지 않습니다. 스위치의 기능은 단순히 긴 이더넷 케이블을 통해 여러 호스트를 단일 물리적 네트워크에 연결하는 간단한 방법을 제공하는 것입니다.

arp[-n] 명령을 사용하면 호스트가 arp 테이블에 저장한 모든 MAC 주소를 볼 수 있습니다. 이들은 항상 로컬 네트워크의 호스트입니다.

라우팅 테이블

호스트, 라우터 또는 네트워크 연결 프린터와 같은 기타 유형의 네트워크 노드인지 여부에 관계없이 모든 네트워크 장치는 TCP/IP 패킷을 라우팅할 위치를 결정해야 합니다. 라우팅 테이블은 이러한 결정을 내리는 데 필요한 구성 정보를 제공합니다. 그림 1의 매우 간단한 라우팅 테이블과 유사하게 이 라우팅 테이블은 일반적인 로컬 호스트에서 사용할 수 있는 단일 경로를 정의하고 기본 게이트웨이 라우터로 패킷을 보낼지 여부를 결정하는 데 사용됩니다. . Route -n 명령은 라우팅 테이블을 나열합니다. -n 옵션은 결과를 IP 주소로만 표시하고 가능한 경우 IP 주소를 호스트 이름으로 바꾸는 DNS 조회를 수행하지 않습니다. netstat –RN 명령을 사용하면 매우 유사한 결과가 생성됩니다.

으아악

그림 1: 간단한 라우팅 테이블.

-n 옵션을 사용하면 기본 게이트웨이는 항상 대상 0.0.0.0으로 표시됩니다. -n을 사용하지 않으면 출력의 대상 열에 "Default"라는 단어가 나타납니다. 게이트웨이 열의 IP 주소는 아웃바운드 게이트웨이 라우터의 IP 주소입니다. 기본 게이트웨이의 넷마스크가 0.0.0.0이면 네트워크 클래스에 관계없이 추가 항목을 통해 로컬 네트워크나 다른 아웃바운드 라우터로 주소가 지정되지 않은 라우팅 테이블의 모든 패킷이 기본 게이트웨이로 전송된다는 의미입니다.

그림 1의 Iface 열은 아웃바운드 NIC의 이름(이 경우 eno1)입니다. 라우터 역할을 하는 호스트의 경우 최소 두 개, 때로는 그 이상의 NIC가 사용될 수 있습니다. 라우터로 사용되는 각 NIC는 서로 다른 물리적 네트워크와 논리적 네트워크에 연결됩니다. 플래그 열의 플래그는 경로가 기본 게이트웨이(G)인 Up(U)임을 나타냅니다. 다른 징후가 나타날 수도 있습니다.

대부분의 호스트의 경우 라우팅 결정은 매우 간단합니다.

대상 호스트가 로컬 네트워크에 있는 경우 대상 호스트로 직접 데이터를 보냅니다.
대상 호스트가 라우팅 테이블에 나열된 로컬 게이트웨이를 통해 연결할 수 있는 원격 네트워크에 있는 경우 명시적으로 정의된 게이트웨이로 보냅니다.
대상 호스트가 원격 네트워크에 있고 해당 호스트에 대한 경로를 정의하는 다른 항목이 없으면 데이터는 기본 게이트웨이로 전송됩니다.
이러한 규칙은 단순히 불일치로 인해 다른 모든 작업이 실패할 경우 패킷이 기본 게이트웨이로 전송된다는 것을 의미합니다.

아래 그림 2의 라우팅 테이블은 세 개의 네트워크(그 중 하나는 인터넷으로 연결됨)에 연결된 라우터 역할을 하는 Linux 호스트에 속하므로 조금 더 복잡합니다. 테이블에는 로컬 클래스 C 네트워크(인터페이스 eth1의 192.168.0.0/24, eth2의 192.168.25.0/24)에 대한 항목과 나머지 세계로 연결되는 eth0의 기본 경로가 있습니다.

으아악

그림 2: 여러 네트워크가 포함된 더욱 복잡한 라우팅 테이블.

기본 게이트웨이는 여전히 하나만 있으며 인터페이스 eth0에 있습니다. 그러나 라우터의 LAN 측 IP 주소를 직접 가리키는 기본 경로 항목 외에도 전체 192.168.1.24/30 네트워크에 대한 항목도 있습니다. 네트워크에는 두 개의 사용 가능한 IP 주소만 포함되어 있습니다. 하나는 라우터의 LAN 측용인 192.168.1.25/30이고 다른 하나는 호스트 자체용인 192.168.1.26/30입니다.

라우팅 구성

그럼 라우팅 테이블은 어떻게 구성하나요? DHCP를 사용하여 네트워크에 연결된 호스트의 경우 DHCP 서버는 이 기본 경로에 대한 구성 정보는 물론 DNS, 호스트 IP 주소 및 기타 정보(예: NTP 서버의 IP 주소)도 제공합니다. 정적 구성의 경우 일반적으로 간단하지만 때로는 다소 복잡할 수 있습니다.

대부분의 경우 /etc/sysconfig/network 파일에 기본 경로를 추가하면 네트워크가 라우팅 테이블에 기본 경로를 구성하게 됩니다. 이 항목은 그림 3의 예와 유사합니다.

으아악

그림 3: 네트워크 파일의 게이트웨이 항목.

기본 게이트웨이만 네트워크 파일을 사용하여 구성할 수 있습니다.

정적으로 구성된 환경에서 기본 게이트웨이를 구성하는 또 다른 방법은 이를 /etc/sysconfig/network-scripts 디렉터리의 해당 인터페이스 구성 파일에 추가하는 것입니다. 인터페이스 eth0의 인터페이스 구성 파일에 게이트웨이를 추가하려면 위의 그림 3과 동일한 줄을 ifcfg-eth0 파일에 추가합니다. 이렇게 하면 해당 항목이 네트워크 파일에서 제거되어야 합니다.

在更复杂的环境中,例如当主机使用多个NIC连接到多个网络时,以及至少需要在路由表中输入两条或更多条路由时,您应该考虑在其中使用路由文件。 / etc / sysconfig / network-scripts。 对于NIC enp7s1,该文件将是route-enp7s1,它将包含图4所示的条目。

default via 192.168.0.1 dev enp7s1

图4:enp7s1的默认路由条目。

路由接口文件中的默认网关设置将覆盖网络文件中可能列出的所有网关。

当然,您始终可以使用route命令从命令行添加路由。 如果您需要在每次系统引导时都执行此操作,则可能会花费一些时间,因此您可能要考虑使用上述方法,或创建在启动时运行的脚本。 我为我的系统之一编写了一个脚本,其中包含以下两行,如图5所示。

route del default
route add default gw 192.168.0.1

图5:从命令行设置默认路由的命令。

请注意,设备名称在所有这些命令中都是可选的,在图5中未使用。

通过阅读本文,我们已经了解了如何使用常见的Linux路由检测命令,例如traceroute和mtr,以及如何利用tcpdump和wireshark来分析网络数据包。通过这些技巧,我们能够有效定位网络连接问题,并快速排除故障。相信这些知识对于广大Linux管理员和网络工程师都将有所帮助,让你们能够更加从容应对复杂的网络环境,提升自己的技术水平。

위 내용은 네트워크 라우팅 추적의 비밀, 리눅스 라우팅 탐지 기술 공개!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 lxlinux.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
이전 기사:리눅스 커널 모듈다음 기사:리눅스 커널 모듈