IP 주소는 다르지만 서브넷은 동일한 NFS 트래픽이 인터페이스됩니다.

IP 주소는 다르지만 서브넷은 동일한 NFS 트래픽이 인터페이스됩니다.

내 NFS 서버에는 3개의 인터페이스가 있습니다.0: 1GB,1: 10GB,2: 10Gb.

Iface 0은 관리 목적으로만 사용되며 1/2은 두 개의 다른 마운트용입니다.

모든 인터페이스는 동일한 서브넷(/24)에 있습니다.

| 서버 | ----> iface 0/1/2 ----> |비공개 스위치| ----> |모든 클라이언트|

내 클라이언트는 인터페이스를 통해 nfs에 연결하도록 구성되었습니다.1그리고2.

$ mount
...
iface1:/home on /home type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.1.1.3,local_lock=none,addr=172.1.1.1)
iface2:/scratch on /scratchlair type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.1.1.3,local_lock=none,addr=172.1.1.2)
...

어디에서 iface1그리고2각각 172.1.1.{1,2}입니다. Iface 0은 172.1.1.5입니다.

내 문제는 서버에서 iface로 가는 모든 트래픽을 보고 있다는 것입니다.0, nload를 통해. 면1그리고2트래픽이 표시되지 않습니다.

이는 nfs 서버에 연결된 10개의 클라이언트 모두에 대해 동일하게 진행됩니다.

트래픽이 iface로 이동하는 원인0, 구성된 인터페이스를 통해 nfs 클라이언트의 트래픽을 강제로 적용하려면 어떻게 해야 합니까?

답변1

이 작업을 수행하려면 세 개의 inet 인터페이스 모두에 대해 별도의 라우팅 테이블과 규칙을 구성하고 arp_filter.
다음 단계에서 연결을 쉽게 중단할 수 있고 분명히 약간의 문제가 발생할 수 있으므로 먼저 VM 환경에서 이를 테스트할 수도 있습니다.


먼저 활성화하십시오 arp_filter.

sysctl net.ipv4.conf.default.arp_filter=1

영구적으로 만들려면 이것을 /etc/sysctl.conf. 배포판에 따라 아래의 파일에 배치할 수도 있습니다 /etc/sysctl.d/.

echo net.ipv4.conf.default.arp_filter = 1 >> /etc/sysctl.conf

이제 라우팅 테이블을 추가해 보겠습니다.

cat << TABLES >> /etc/iproute2/rt_tables 
101 rt1
102 rt2
103 rt3
TABLES

넷마스크가 있고 /24기본 게이트웨이가 이라고 가정합니다 172.1.1.254. 또한 인터페이스 0, 1, 2는 이며 eth0다음 예 eth1에서는 eth2설정과 일치하지 않을 수 있으므로 이를 채택해야 합니다.

ip route add 172.1.1.0/24 dev eth0 src 172.1.1.5 table rt1
ip route add table rt1 default via 172.1.1.254 dev eth0
ip rule add table rt1 from 172.1.1.5

ip route add 172.1.1.0/24 dev eth1 src 172.1.1.1 table rt2
ip route add table rt2 default via 172.1.1.254 dev eth1 
ip rule add table rt2 from 172.1.1.1    

ip route add 172.1.1.0/24 dev eth2 src 172.1.1.2 table rt3
ip route add table rt3 default via 172.1.1.254 dev eth2
ip rule add table rt2 from 172.1.1.2

이러한 라우팅 테이블과 규칙을 영구적으로 만들려면 위의 단계를 NIC 구성에 추가해야 합니다. RHEL 기반 시스템에서는 다음과 같습니다.

에 대한 경로 및 규칙 eth0.

cat << ROUTE > /etc/sysconfig/network-scripts/route-eth0
172.1.1.0/24 dev eth0 src 172.1.1.5 table rt1
table rt1 default via 172.1.1.254 dev eth0
ROUTE

cat << RULE > /etc/sysconfig/network-scripts/rule-eth0
table rt1 from 172.1.1.5
RULE

에 대한 경로 및 규칙 eth1.

cat << ROUTE > /etc/sysconfig/network-scripts/route-eth1
172.1.1.0/24 dev eth1 src 172.1.1.1 table rt2
table rt2 default via 172.1.1.254 dev eth1
ROUTE

cat << RULE > /etc/sysconfig/network-scripts/rule-eth1
table rt2 from 172.1.1.1   
RULE

에 대한 경로 및 규칙 eth2.

cat << ROUTE > /etc/sysconfig/network-scripts/route-eth2
172.1.1.0/24 dev eth2 src 172.1.1.2 table rt3
table rt3 default via 172.1.1.254 dev eth2
ROUTE

cat << RULE > /etc/sysconfig/network-scripts/rule-eth2
table rt3 from 172.1.1.2   
RULE

이미 설명에 설명된 대로 인터페이스에 다른 서브넷을 사용하고 다른 서브넷에 대해 클라이언트에 IP 별칭을 할당하는 것이 더 쉬울 수 있습니다.

CentOS7 NFS 서버가 있는 VM 환경에서 이를 테스트했습니다.

관련 정보