네트워크 인터페이스는 어떤 IP 주소를 사용합니까?

네트워크 인터페이스는 어떤 IP 주소를 사용합니까?

호스트가 클라이언트 역할을 할 때 인터페이스는 어떤 IP를 사용합니까?

2개의 IP 주소(192.168.1.7 및 192.168.1.8)로 eth0을 구성했다고 가정해 보겠습니다.

Route 명령은 다음과 같은 내용을 보여줍니다.

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.240.0   0.0.0.0         255.255.240.0   U     256    0        0 eth0
...

이는 기본적으로 네트워크의 호스트에 연결하려고 하면 192.168.240.0eth0 인터페이스를 사용한다는 의미입니다. 좋습니다. 그런데... 해당 인터페이스의 IP 주소는 무엇인가요?

호스트가 서버 역할을 하고 클라이언트가 IP 주소를 사용하여 내 컴퓨터에 연결하는 경우 192.168.1.7eth0이 클라이언트와 통신하는 데 사용할 것이라는 것을 알고 있지만 192.168.1.7, 내가 클라이언트라면 어떻게 될까요?


편집하다

IP 주소가 구성되었습니다. 다음 오류가 발생하기 때문에 Ubuntu WSL의 인터페이스에 다른 IP 주소를 추가할 수 없습니다.

$ ip address add 192.168.1.7/24 dev eth0
RTNETLINK answers: Permission denied

의 출력은 ip r s다음과 같습니다:

$ ip r s
none 224.0.0.0/4 dev eth0 proto unspec metric 256
none 255.255.255.255 dev eth0 proto unspec metric 256
none 224.0.0.0/4 dev eth1 proto unspec metric 256
none 255.255.255.255 dev eth1 proto unspec metric 256
...

편집 2

WSL2로 업그레이드했고 이제 IP 주소를 추가하는 명령이 작동합니다(Sudo 사용).

$ ip -4 a s dev eth0
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet 192.168.249.181/20 brd 192.168.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.1.7/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.1.8/24 scope global secondary eth0
       valid_lft forever preferred_lft forever

답변1

Linux의 경우 귀하의 질문에 대한 답변은 다음과 같습니다.여기에 주어진:

아웃바운드 패킷의 초기 소스 주소는 다음 일련의 규칙에 따라 선택됩니다.

애플리케이션은 특정 IP를 요청할 수 있으며, 커널은 선택한 경로 경로의 src 힌트를 사용하거나, 이 힌트가 없으면 커널은 대상 주소와 동일한 네트워크에 속하는 인터페이스에 구성된 첫 번째 주소를 선택합니다. 넥스트홉 라우터.

답변2

클라이언트는 연결하려는 주소와 일치하는 ROUTES를 조회합니다. 귀하의 예에서와 같이 일치하는 경로가 두 개 이상인 경우 메트릭이 가장 높은 경로 항목을 선택하고 해당 인터페이스의 IP 주소를 사용하여 경로 테이블에 있는 인터페이스에서 패킷을 보냅니다.

Route의 출력을 잘랐으며 무엇에 연결했는지 말하지 않았습니다. 따라서 어떤 인터페이스가 될지는 말할 수 없습니다.

서버에서는....글쎄 상황이 좀 더 복잡해집니다. 동일한 서브넷에 여러 인터페이스가 있는 Centos 및 Redhat 호스트가 있습니다. 패킷이 전송된 동일한 주소/인터페이스에서 응답합니다. 그러나 클라이언트 패킷의 주소 지정을 무시하고 사용할 인터페이스와 주소를 찾기 위해 라우팅 테이블을 다시 방문하는 최근 Ubuntu 및 Debian 시스템도 있습니다. 클라이언트는 통신하지 않는 IP 주소에서 돌아오는 패킷을 무시합니다.

관련 정보