Computer >> 컴퓨터 >  >> 스마트폰 >> Linux

리눅스 IPTables로 트래픽을 다른 서버(IP)로 리디렉션하는 방법

웹 서비스나 웹사이트를 한 서버에서 다른 서버로 이전해 본 경험이 있다면, 그 과정이 얼마나 까다로울 수 있는지 잘 알고 있을 것입니다. 하지만 작업을 명확한 단계로 나누고 지속적으로 점검한다면 훨씬 수월하게 진행할 수 있습니다. 마이그레이션이 거의 끝나갈 무렵 흔히 겪는 문제 중 하나는, 새 서버에서 웹사이트가 이미 정상적으로 운영되고 있음에도 도메인이 새 서버로 연결되기를 기다려야 하는 시기입니다.

이럴 때 도메인 전환이 완료될 때까지 서비스를 중단하는 방법도 있지만, 기존 서버가 모든 트래픽을 새 서버로 전달하도록 설정하는 것이 더 현명한 선택입니다. 이 글에서는 리눅스 머신에서 IPTables를 사용해 트래픽을 다른 IP 주소로 리디렉션하는 방법을 단계별로 살펴보겠습니다.

IPTables란?

IPTables는 대부분의 리눅스 배포판에 기본으로 포함되어 있는 소프트웨어 방화벽입니다. 방화벽 용도 외에도 매우 다양하게 활용할 수 있는 강력한 도구입니다. 이번 실습에서는 리눅스 서버에 IPTables를 설정하여 80번 포트(기본 웹 서버 포트)로 들어오는 모든 트래픽을 122.164.34.240 IP를 가진 서버로 리디렉션하겠습니다.

1단계: IP 포워딩 활성화

먼저 리눅스 시스템이 이러한 종류의 포워딩을 허용하도록 설정해야 합니다. 터미널 창을 열고 root 사용자로 로그인한 뒤 아래 명령어를 실행합니다:

# echo 1 > /proc/sys/net/ipv4/ip_forward

2단계: 트래픽 리디렉션 규칙 추가

다음은 IPTables에게 트래픽을 새 서버로 리디렉션하도록 지시하는 단계입니다:

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 122.164.34.240

3단계: MASQUERADE 설정

여기서 IPTables의 진짜 마법이 펼쳐집니다. 세 번째이자 마지막 단계에서는 새 서버의 80번 포트로 향하는 연결들이 마치 기존 서버에서 온 것처럼 보이도록 출발지를 재작성하라고 IPTables에 지시합니다:

# iptables -t nat -A POSTROUTING -p tcp -d 122.164.34.240 --dport 80 -j MASQUERADE

마지막 단계가 필요한 이유

이 마지막 단계는 필수적입니다. 새 서버의 웹 서버에 클라이언트 머신에서 직접 연결이 들어온다고 알려주지 않으면, 웹 서버는 해당 연결들이 기존 서버에서 시작된 것으로 인식하기 때문입니다. MASQUERADE 규칙을 통해 패킷의 출발지 주소가 올바르게 유지되므로, 접속 로그 분석이나 접근 제어 설정에도 문제가 발생하지 않습니다.