패킷을 라우팅할 때 Linux 커널은 어떻게 올바른 src IP를 선택합니까?

패킷을 라우팅할 때 Linux 커널은 어떻게 올바른 src IP를 선택합니까?

Calico를 CNI 플러그인으로 사용하는 kubernetes 클러스터가 있습니다. 내 로컬 라우팅 테이블에서 다음과 같은 일부 경로를 얻을 수 있습니다.

root@k8s-master:~# ip r
default via 192.168.100.1 dev ens18 proto dhcp src 192.168.100.215 metric 100
10.222.235.232 dev cali5bda0fdd27a scope link  # route to pod
10.222.235.233 dev cali1209a63af2b scope link
10.222.235.235 dev cali12d4a061371 scope link
10.222.235.241 dev cali9d4dd01dda6 scope link
10.222.235.246 dev calid0a379e0710 scope link
10.222.235.248 dev cali67ee1300377 scope link

내 컴퓨터에는 여러 인터페이스가 있습니다. 패킷을 포드로 라우팅할 때 Linux 커널이 올바른 src IP를 선택하는 방법을 알고 싶습니다.

root@k8s-master:~# ip r get 10.222.235.232
10.222.235.232 dev cali5bda0fdd27a src 192.168.200.2 uid 0
    cache

cali5bda0fdd27a인터페이스에 IP 주소가 없습니다. 이는 호스트 네트워크 네임스페이스에 있는 veth 쌍의 한쪽 끝입니다(다른 쪽 끝은 컨테이너 네트워크 네임스페이스에 있음).

192.168.200.2다른 인터페이스의 IP입니다. 왜 리눅스 커널은 선택 192.168.200.2하고 선택하지 않습니까 192.168.100.215?

관련 정보