이상한 이유로 동일한 물리적 네트워크 인터페이스에 두 개의 IP 주소가 있고 두 IP가 모두 동일한 서브넷에 있는 Linux 상자가 있습니다. 두 IP를 통해 기기에 액세스할 수 있으며 모든 것이 괜찮은 것 같습니다.
이 컴퓨터가 NAS 서비스를 사용해야 한다는 사실을 알기 전까지는 말이죠. 그리고 이 NAS는 IP를 기준으로 잠겨 있습니다. 두 번째 IP가 추가되었기 때문에 NAS 공유를 더 이상 마운트할 수 없는 것 같습니다. 확실한 해결책은 IP 제한을 제거하거나 두 번째 IP를 추가하는 것입니다.
내 질문은: 컴퓨터에 여러 개의 IP가 있는 경우 트래픽을 보내는 데 어떤 IP를 사용합니까? 즉, 이 이중 IP 시스템이 클라이언트 역할을 한다면 서버는 어떤 클라이언트 IP를 보게 될까요?
편집: 이제 일부 클라이언트 응용 프로그램이 나가는 트래픽에 사용되는 인터페이스를 지정할 수 있다는 것을 이해합니다. 이것은 나에게 새로운 것입니다. 그래서 내 고객은
- NFS 마운트(
mount -t nfs ...
) - 평평한
나가는 트래픽에 대한 IP를 지정하는 방법은 무엇입니까? 클라이언트 애플리케이션이 이를 지정하지 않으면 운영 체제는 어떻게 선택합니까? 나가는 트래픽에 대한 운영 체제 선택이 인터페이스 중 하나를 선호합니까, 아니면 두 인터페이스 모두를 선호합니까?
답변1
클라이언트가 연결을 시작하려고 하면 자체 클라이언트 IP를 지정하거나 해당 주소 INADDR_ANY
(AKA 0.0.0.0
:)를 소스 주소로 사용할 수 있습니다. INADDR_ANY를 사용하면 클라이언트가 호출할 때 Linux가 자동으로 주소를 선택합니다.연결하다()- 바라보다사람들 7 IP.
가장 쉬운 수정고객에게 어떤 IP를 선택할지 알려주십시오.
설치할 때 옵션 mount -t nfs ...
만 설정하면 됩니다 (참조:clientaddr
사람 5 NFS). 원하는 IP가 10.20.30.41인 경우 다음 옵션을 추가하면 됩니다.
... -o clientaddr=10.20.30.41 ...`
또는 이미 있는 경우 -o
다른 옵션을 쉼표로 구분할 수 있습니다. 변화
... -o foo=bar
도착하다
... -o foo=bar,clientaddr=10.20.30.41
INADDR_ANY를 사용하여 클라이언트를 중지할 수 없는 경우그 다음에...
내가 아는 한, 소스 주소는 src
라우팅 테이블의 주소에 의해 설정됩니다. 바라보다피플8 IP 라우팅
따라서 Linux는 연결하려는 원격(NAS) IP를 확인한 다음 라우팅 테이블에서 해당 주소를 찾습니다. src
거기에 지정된 주소를 선택합니다 .
터미널에서 라우팅 테이블을 보면 ip route
다음과 같은 내용을 얻을 수 있습니다.
default via 192.168.1.254 dev wlan0 proto dhcp src 192.168.1.143 metric 600
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.19.0.0/16 dev br-ff4f53a0f3b5 proto kernel scope link src 172.19.0.1
172.22.0.0/16 dev br-66358811b693 proto kernel scope link src 172.22.0.1 linkdown
172.29.0.0/16 dev br-ce3d9cbbad0b proto kernel scope link src 172.29.0.1 linkdown
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.143
192.168.1.254 dev wlan0 proto dhcp scope link src 192.168.1.143 metric 600
여기에서 무엇이든 연결하려고 하면 Linux가 소스 주소로 172.17.x.x
선택하는 것을 볼 수 있습니다. 172.17.0.1
마찬가지로 공용 인터넷의 모든 항목은 "기본 경로"를 통과하므로 선택됩니다 192.168.1.143
.
ip route add ...
ip route change ...
라우팅 테이블을 사용하고 수정할 수 있습니다 ip route del ...
.
다른 문제를 피하기 위해 라우팅 테이블을 가능한 한 조금만 변경하는 것이 좋습니다. 단일 IP에 대한 경로를 생성하면 전체 서브넷 경로보다 우선 적용됩니다. 예를 들어 LAN이 10.20.30.0/24인 경우 시스템의 보조 IP 주소도 인터페이스에서 10.20.30.22입니다.이더넷 0그리고 이 LAN의 NAS도 10.20.30.31을 사용합니다.
ip route add 10.20.30.31/32 dev eth0 src 10.20.30.22
또는 NAS가 주소 172.20.30.31의 게이트웨이 10.20.30.1을 통해 액세스할 수 있는 다른 네트워크에 있는 경우:
ip route add 172.20.30.31/32 via 10.20.30.1 src 10.20.30.22
경고: 위 내용을 테스트할 기회가 없었습니다.