파이오링크 L4 DSR 모드 완벽 정리 — 원암·투암 구조와 실전 컨피그
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
📌 요약 · 파이오링크 PAS-K L4 스위치의 DSR(Direct Server Return) 모드는 서버 응답이 L4를 거치지 않고 클라이언트로 바로 가는 부하 분산 방식입니다. 이 글에서는 DSR이 무엇인지, 원암(One-Arm)·투암(Two-Arm) 토폴로지가 어떻게 다른지, 그리고 PAS-K에서 실제 어떻게 설정하는지를 컨피그 예제와 함께 정리합니다.
📑 목차
L4 서버 부하 분산과 NAT 모드 종류
L4 서버 부하 분산(SLB, Server Load Balancing)은 클라이언트의 요청을 여러 서버에 골고루 나눠주는 기능입니다. 클라이언트는 실제 서버 IP가 아닌 가상 IP(VIP)로 접속하고, L4 스위치가 그 트래픽을 받아 실제 서버 중 하나로 보냅니다.
PAS-K는 클라이언트와 서버 사이에서 IP 주소를 어떻게 다룰지 결정하는 4가지 NAT 모드를 지원합니다.
| NAT 모드 | 동작 |
|---|---|
| Dest NAT | 기본 모드. 목적지 IP만 바꿔서 서버로 전달, 응답도 L4를 거침 |
| Both NAT | 출발지·목적지 IP 모두 변환. 서버는 클라이언트 IP를 못 봄 |
| DSR | 응답이 L4를 거치지 않고 서버에서 클라이언트로 직접 전송 |
| LAN-to-LAN | 서버 그룹끼리 클라이언트 역할을 할 때 사용 |
이 중 이번 글에서 다룰 것이 DSR 모드입니다. 트래픽이 큰 환경에서 L4의 부담을 줄여주는 강력한 옵션이지만, 서버 측 설정이 까다로워 정확한 이해가 필요합니다.
DSR(Direct Server Return)이란
DSR(Direct Server Return)은 이름 그대로 "서버가 클라이언트에게 직접(Direct) 돌려준다(Return)"는 뜻입니다.
- 요청 경로: 클라이언트 → L4(PAS-K) → 서버
- 응답 경로: 서버 → 클라이언트 (L4 우회)
💡 비유로 이해하기 — 택배 회사
일반 NAT 모드는 택배 회사(L4)가 손님(클라이언트)의 물건을 받고, 창고(서버)에 갔다가, 다시 가져와서 손님에게 돌려주는 방식입니다. 모든 짐이 택배 회사를 두 번 거치죠.
DSR은 다릅니다. 손님이 주문하면 택배 회사가 창고에 "이 손님 주소로 보내세요"라고만 알려주고, 창고가 손님에게 바로 발송합니다. 택배 회사는 처음 한 번만 거치니 훨씬 가볍게 일합니다.
왜 굳이 DSR을 쓸까요? 인터넷 트래픽은 보통 요청은 작고 응답은 큽니다. 동영상이나 파일 다운로드를 떠올려 보세요. 요청은 "이 파일 주세요" 한 줄이지만 응답은 수 GB짜리 파일입니다. DSR은 이 큰 응답이 L4를 거치지 않게 만들어, L4 부하를 극적으로 줄여줍니다.
| 장점 | 단점 |
|---|---|
| L4 부하가 크게 줄어듦 (응답 트래픽 우회) | 서버 OS마다 추가 설정 필요 |
| 동영상·다운로드·FTP·스트리밍에 최적 | L4가 응답을 못 보니 L7 기능 사용 불가 |
| 서버가 클라이언트 실제 IP를 그대로 봄 | 서버와 L4가 같은 L2 네트워크에 있어야 함 |
원암 vs 투암 토폴로지 차이
L4 스위치를 네트워크에 어떻게 연결하느냐에 따라 두 가지 구조로 나뉩니다.
투암(Two-Arm) 구조
L4가 두 개의 인터페이스(arm)로 클라이언트 측과 서버 측 사이에 인라인(in-line)으로 들어가 있는 구조입니다. 모든 트래픽이 L4를 무조건 거치게 됩니다.
[ 투암(Two-Arm) 구조 ] 클라이언트 ──── 라우터 ──── [PAS-K] ──── 서버 팜 │ arm 1 (외부망 측) arm 2 (서버 측)
원암(One-Arm) 구조
L4가 네트워크에 한쪽 다리(arm)로만 매달려 있는 구조입니다. 서버 옆에 붙어서 트래픽이 필요할 때만 끌어와 부하 분산을 수행합니다.
[ 원암(One-Arm) 구조 ] 클라이언트 ──── 라우터 ──── 스위치 ──── 서버 팜 │ └── [PAS-K] ← arm 하나로만 연결
| 비교 항목 | 투암(Two-Arm) | 원암(One-Arm) |
|---|---|---|
| 연결 방식 | 외부망–서버망 사이 인라인 | 한쪽 인터페이스만 사용 |
| 구성 복잡도 | 기존 토폴로지 변경 필요 | 기존 토폴로지 그대로 |
| 장애 영향 | L4 다운 = 전체 통신 끊김 | L4 다운 = 부하 분산만 중단, 직접 접속은 가능 |
| DSR과 궁합 | 자연스럽게 동작 | 매우 잘 맞음 (응답이 L4 안 거침) |
| 주로 쓰이는 곳 | 신규 구축, 보안 분리 필요 환경 | 기존망에 L4 추가, 동영상·CDN 환경 |
💡 DSR과 원암 구조가 잘 맞는 이유
원암 구조에서 응답을 L4가 처리하려면 다시 L4로 끌어와야 하는데, DSR은 응답을 서버에서 바로 보내므로 그럴 필요가 없습니다. L4는 요청만 받아 부하 분산하면 끝이라 가장 자연스럽게 동작합니다.
DSR이 동작하는 원리 — MAC 변경
일반 NAT 모드는 IP 주소를 바꿔서 전달하지만, DSR은 다릅니다. IP는 그대로 두고 목적지 MAC 주소만 변경해 서버로 보냅니다.
[ DSR 요청 패킷 ] 출발지 IP : 클라이언트 IP 목적지 IP : VIP (가상 IP) ← 그대로! 출발지 MAC: L4 MAC 목적지 MAC: 실제 서버의 MAC ← 변경됨 [ DSR 응답 패킷 ] 출발지 IP : VIP 목적지 IP : 클라이언트 IP ※ L4를 거치지 않고 서버가 직접 응답
서버 입장에서는 이상한 상황이 벌어집니다. 패킷이 자기 MAC으로 도착했지만, 목적지 IP는 자기 IP가 아닌 VIP입니다. 일반적인 OS라면 "이 패킷은 내 게 아니네" 하고 그냥 버립니다.
그래서 DSR은 서버 측에 반드시 추가 설정이 필요합니다. 다음 섹션에서 이 설정을 다룹니다.
서버 측 필수 설정
DSR이 정상 동작하려면 실제 서버에서 두 가지를 설정해야 합니다.
- VIP를 루프백(loopback)에 추가 — 서버가 "이 VIP도 내 거야"라고 인식해서 패킷을 받아들이게 합니다.
- VIP에 대한 ARP 응답 비활성화 — 서버가 VIP에 대한 ARP 요청에 답하면 안 됩니다. 만약 답해 버리면 클라이언트가 L4가 아닌 서버로 직접 패킷을 보내게 되어 부하 분산이 깨집니다.
Linux 서버 설정 예시
# 1. 루프백 인터페이스에 VIP 추가 ifconfig lo:0 10.10.10.100 netmask 255.255.255.255 up # 2. ARP 응답 비활성화 (실서버가 VIP 대신 응답하지 않도록) echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
Windows 서버 설정 요점
Windows에서는 Microsoft Loopback Adapter를 추가하고 거기에 VIP를 할당합니다. ARP 응답은 netsh 명령으로 weakhostsend / weakhostreceive를 조정해 처리합니다. OS 버전마다 방식이 달라 사전 검증이 필요합니다.
PAS-K 컨피그 예제 — 투암 DSR
아래 예제는 다음 구성을 기준으로 합니다.
- PAS-K가 외부망(VLAN 10)과 서버망(VLAN 20) 사이에 인라인으로 위치
- 가상 IP(VIP):
10.10.10.100:80 - 실제 서버 2대:
192.168.20.11,192.168.20.12
① 장애 감시(Health Check) 설정
PAS-K(config)# health-check 1 PAS-K(config-health-check[1])# type tcp PAS-K(config-health-check[1])# port 80 PAS-K(config-health-check[1])# interval 5 PAS-K(config-health-check[1])# apply
② 실제 서버(Real Server) 등록
PAS-K(config)# real 1 PAS-K(config-real[1])# ip 192.168.20.11 PAS-K(config-real[1])# apply PAS-K(config)# real 2 PAS-K(config-real[2])# ip 192.168.20.12 PAS-K(config-real[2])# apply
③ L4 서버 부하 분산(SLB) 서비스 정의 — DSR 모드
PAS-K(config)# slb WEB_DSR PAS-K(config-slb[WEB_DSR])# vip 10.10.10.100 protocol tcp vport 80 PAS-K(config-slb[WEB_DSR])# nat-mode dsr ← DSR 모드 지정 PAS-K(config-slb[WEB_DSR])# lb-method rr ← Round Robin PAS-K(config-slb[WEB_DSR])# real 1,2 PAS-K(config-slb[WEB_DSR])# health-check 1 PAS-K(config-slb[WEB_DSR])# apply
PAS-K 컨피그 예제 — 원암 DSR
원암 구조에서는 PAS-K가 한 인터페이스만 사용합니다. 클라이언트와 서버가 모두 같은 L2 세그먼트에 있어야 하며, 라우터의 트래픽이 자연스럽게 서버 측 스위치를 거쳐 가도록 구성합니다.
기준 구성
- PAS-K가 서버 스위치 옆에 1개 포트로 연결(원암)
- VIP:
192.168.10.100:80 - 실제 서버:
192.168.10.21,192.168.10.22(PAS-K와 같은 대역)
PAS-K 컨피그
! VLAN과 IP 설정 PAS-K(config)# vlan 10 PAS-K(config-vlan[10])# ip-add 192.168.10.10/24 PAS-K(config-vlan[10])# apply ! 실제 서버 등록 PAS-K(config)# real 1 PAS-K(config-real[1])# ip 192.168.10.21 PAS-K(config-real[1])# apply PAS-K(config)# real 2 PAS-K(config-real[2])# ip 192.168.10.22 PAS-K(config-real[2])# apply ! 장애 감시 (DSR 환경에서는 tip을 VIP로 지정) PAS-K(config)# health-check 1 PAS-K(config-health-check[1])# type tcp PAS-K(config-health-check[1])# port 80 PAS-K(config-health-check[1])# tip 192.168.10.100 ← VIP를 점검 목적지로 PAS-K(config-health-check[1])# apply ! L4 SLB 서비스 - DSR 모드 PAS-K(config)# slb WEB_ONEARM PAS-K(config-slb[WEB_ONEARM])# vip 192.168.10.100 protocol tcp vport 80 PAS-K(config-slb[WEB_ONEARM])# nat-mode dsr PAS-K(config-slb[WEB_ONEARM])# lb-method wrr PAS-K(config-slb[WEB_ONEARM])# real 1,2 PAS-K(config-slb[WEB_ONEARM])# health-check 1 PAS-K(config-slb[WEB_ONEARM])# apply
⚠️ DSR 장애 감시에는 tip 옵션이 필요
DSR 환경에서는 실제 서버의 응답이 VIP를 출발지로 사용합니다. 그래서 PAS-K가 장애 감시 패킷을 보낼 때도 목적지 IP를 실서버 IP가 아닌 VIP로 지정해야 합니다. 이걸 위한 옵션이 tip <VIP>입니다.
DSR 점검과 트러블슈팅
기본 점검 명령
PAS-K# show slb ! SLB 서비스 상태 전체 PAS-K# show slb WEB_DSR ! 특정 서비스 상세 PAS-K# show real ! 실제 서버 상태 (up/down) PAS-K# show health-check ! 장애 감시 결과 PAS-K# show session ! 현재 활성 세션
DSR이 안 될 때 흔한 원인 4가지
- 서버에 VIP가 추가되지 않음 → 서버가 패킷을 받자마자 폐기. 서버에서
ifconfig또는ip addr로 lo:0에 VIP가 있는지 확인. - 서버가 VIP에 ARP 응답 → 클라이언트가 L4가 아닌 서버로 직접 접속.
arp_ignore와arp_announce설정 확인. - 장애 감시 실패 → tip 옵션 누락이 가장 흔함.
show health-check에서 fail이 떨어진다면 점검. - L4와 서버가 다른 L2 세그먼트 → DSR은 MAC 변경 방식이라 같은 브로드캐스트 도메인 안에 있어야 동작. 라우터를 사이에 두면 DSR 불가.
자주 묻는 질문
Q. DSR을 쓰면 항상 좋은 거 아닌가요? 왜 다른 모드도 있죠?
A. DSR은 L4가 응답을 못 보기 때문에 L7 기능(URL 기반 분기, 쿠키 삽입, SSL 오프로드 등)을 쓸 수 없습니다. 또 서버 측 설정이 추가로 필요해 운영 난이도가 올라갑니다. 응답 트래픽이 크지 않은 일반 웹 서비스라면 기본 Dest NAT 모드가 더 편합니다.
Q. 원암 구조에서 PAS-K가 죽으면 어떻게 되나요?
A. 부하 분산은 중단되지만, 클라이언트가 실제 서버 IP를 직접 알고 있다면 그 서버로는 접속이 가능합니다. 인라인 구조인 투암에 비해 장애 영향 범위가 작은 것이 원암의 장점입니다.
Q. 서버에서 ARP 응답을 막으면 서버 관리(SSH 등)도 안 되는 거 아닌가요?
A. ARP 응답을 막는 건 루프백에 추가한 VIP에 대해서만입니다. 서버의 실제 IP(eth0 등)에 대한 ARP는 정상 동작하므로 일반 관리 접속에는 영향이 없습니다.
Q. 부하 분산 방식(lb-method)은 어떤 걸 골라야 하나요?
A. 가장 무난한 것은 Round Robin(rr)입니다. 서버 사양이 다르다면 가중치를 주는 Weighted RR(wrr), 연결 수에 따라 분산하려면 Least Connection(lc)을 씁니다. DSR 환경에서도 모두 사용 가능합니다.
Q. DSR에서 SSL(HTTPS)도 처리할 수 있나요?
A. L4 레벨에서는 처리 가능합니다. 단, PAS-K가 SSL을 복호화해서 검사하거나 인증서를 처리하는 SSL 오프로드는 응답을 L4가 봐야 가능하기 때문에 DSR에서는 사용할 수 없습니다. 그런 기능이 필요하면 Dest NAT나 Both NAT 모드를 사용해야 합니다.
#파이오링크 #PASK #L4스위치 #DSR #서버부하분산 #SLB #원암 #투암 #LoadBalancer #네트워크엔지니어 #네트워크설정 #도담인사이트
댓글
댓글 쓰기