Linux는 애플리케이션 트래픽을 라우팅할 인터페이스를 어떻게 결정합니까?

Linux는 애플리케이션 트래픽을 라우팅할 인터페이스를 어떻게 결정합니까?

int1및 와 같은 두 가지 인터페이스를 실행하는 가상화된 Linux 상자가 있습니다 int2. int1"NAT 네트워크"이며 int2VirtualBox의 "호스트 전용" 어댑터입니다.

터미널에서 "google.com"을 ping하려고 하면 트래픽이 google.com에서 라우팅되기 때문에 int2아무런 응답을 받지 못합니다 . 그러나 브라우저에서 "google.com"에 액세스하려고 하면 문제 없이 응답합니다.

터미널과 Firefox는 둘 다 간단한 애플리케이션이므로 Linux가 어떤 애플리케이션의 트래픽을 어떤 인터페이스를 통해 라우팅해야 하는지 어떻게 결정하는지, 그리고 이를 어떻게 변경할 수 있는지 알고 싶습니다.

추신: 만일을 대비해 Linux 상자는 실제로 Ubuntu 기반 운영 체제인 "Linux Backbox"입니다.

PPS: 게스트 OS에서 인터넷과 호스트 OS에 액세스하고 싶다면 브리지 연결을 할 수 있지만 이것은 제가 사용하고 있는 회사 컴퓨터이고 IT 부서가 네트워크를 검색하면서 돌아다니는 것을 원하지 않습니다. "유령" 호스트의 경우 Ghost Machine의 이름입니다(문자 그대로 "유령" :D).

답변1

Linux는 규칙과 라우팅을 사용하여 사용할 인터페이스를 결정합니다.

이러한 규칙은 패킷의 조건과 참조해야 하는 라우팅 테이블을 지정하며, ip rule showiproute2를 사용하는 경우 이러한 규칙을 볼 수 있습니다. 대부분의 경우 이는 로컬 테이블, 기본 테이블, 기본 테이블을 순서대로 보는 것을 의미합니다.

라우팅 테이블에는 다음에 패킷을 보내야 하는 대상과 개체 목록만 포함되어 있습니다(패킷을 보내야 하는 인터페이스 포함). 이것기본라우팅 테이블은 을 사용하여 확인할 수 있습니다 ip route show.

AFAIK Linux는 서로 다른 애플리케이션에 대해 서로 다른 경로를 사용하지 않습니다(동일한 네트워크 네임스페이스에 있고 이상한 iptables fwmarking 시스템이 없는 경우).

관련 정보