실용적인 사례 I : 4 NAT 및 DNAT로드 균형 조정 이해

게시자 Zevenet | 20 년 2017 월 XNUMX 일

이러한 실제 사례는 네트워킹, 보안 및 고 가용성 기술의 작동 방식을 더 잘 이해할 수있는 교육 안내서입니다.

첫째, 다음 연습을 해보십시오 :

Step 1. Install Zevenet CE from GIT, SF or Docker
            https://www.zevenet.com/community

Step 2. Create L4xNAT farm with 2 backends and NAT or DNAT mode
            https://www.zevenet.com/knowledge-base/

Step 3. Execute in a console of Zevenet CE and try to understand the result of:
            root# iptables -t mangle -n -L
            root# iptables -t nat -n -L

공무원의 의문과 의견 메일 링리스트!

대답

로드 밸런서는 클라이언트와 백엔드 또는 실제 서버 사이의 트래픽 흐름을 보장하는 네트워크 장치이므로 4 단계가 흐름, 4 계층의 연결 패킷을 보장하기 위해주의를 기울일 것입니다.

Load_Balancer_l4_packet_flows

1. 클라이언트의 패킷이 클라이언트에서로드 밸런서로 전송됩니다.
2. 패킷이로드 밸런서에서 선택된 하나의 실제 서버 또는 백엔드로 전송됩니다.
3. 패킷이 서버에서로드 밸런서에 응답합니다.
4. 패킷이 응답으로 클라이언트에 다시 전송됩니다.

Zevenet 계층 4 (LSLB – L4xNAT 프로필)는 다음을 사용하여 이러한 모든 패킷을 처리합니다. 넷 필터 서브 시스템을 통해 iptables에 및 네트워크 라우팅 시스템.

이러한 이유로, DTA 모드 팜을 실행하고 iptables 명령을 실행합니다. 테이블에서 생성 된 규칙을 찾을 수 있습니다. 압착 롤러NAT 의 netfilter. 추가 정보 Netfilter 테이블 여기 .

. PREROUTING 사슬의 압착 롤러 테이블에는 일치하는 규칙이 표시됩니다.

– 대상이 서비스의 가상 주소 및 포트 인 모든 소스 또는 클라이언트에서 들어오는 모든 패킷 (예에서 192.168.101.250 : 443)
– 그런 다음 특정 알고리즘에 따라 패킷을 표시합니다.이 경우 확률 방법에 따른 가중치입니다.

root@zevenet:~# iptables -L -t mangle -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
CONNMARK   all  --  0.0.0.0/0            0.0.0.0/0            CONNMARK restore
MARK       tcp  --  0.0.0.0/0            192.168.101.250      statistic mode random probability 1.00000000000 multiport dports 443 /*  FARM_app_1_  */ MARK set 0x20d
MARK       tcp  --  0.0.0.0/0            192.168.101.250      statistic mode random probability 0.50000000000 multiport dports 443 /*  FARM_app_0_  */ MARK set 0x20c
CONNMARK   all  --  0.0.0.0/0            0.0.0.0/0            state NEW CONNMARK save

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

들어오는 패킷이 표시되면 PREROUTING 사슬의 NAT table 패킷의 목적지 주소를 한 백엔드 또는 다른 백엔드로 변경하기 위해 패킷 마크를 사용합니다. 이 예에서 IP 주소 192.168.1.10192.168.1.11 실제 서버입니다.

root@zevenet:~# iptables -L -t nat -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20c /*  FARM_app_0_  */ to:192.168.1.10:443
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20d /*  FARM_app_1_  */ to:192.168.1.11:443

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

그리고, 협곡 테이블은 대상 주소 변환을 관리하며 DTA 모드에서로드 밸런서가 백엔드의 기본 게이트웨이가 될 때 리턴 패킷은 라우트별로 관리됩니다.

의 경우 NATSNAT 일반적으로 알려진 것처럼 conntrack은 대상 주소 변환뿐만 아니라 소스 주소 변환도 관리합니다. 이 경우 유일한 차이점은 DTA 응답 된 패킷은 라우팅 시스템이 아니라 conntrack 테이블에 의해 관리된다는 것입니다. 그래서 우리는 단지 2 개의 새로운 규칙을 찾을 수 있습니다. POSTROUTING nat 테이블의 체인을 수행하기 위해 추측 팜의 가상 IP 주소와 비교합니다.

root@zevenet:~# iptables -L -t nat -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20c /*  FARM_app_0_  */ to:192.168.1.10:443
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20d /*  FARM_app_1_  */ to:192.168.1.11:443

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20c /*  FARM_app_0_  */ to:192.168.101.250
SNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20d /*  FARM_app_1_  */ to:192.168.101.250

더 의심? the에 문의하십시오. 메일 링리스트!

공유 :

GNU Free Documentation License의 조건에 따른 문서.

이 글이 도움 되었나요?

관련 기사