Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

3.4. 멀티 포트 서비스 및 로드 밸런서

모든 토폴로지 아래의 LVS 라우터는 다중 포트 로드 밸런서 서비스를 생성할 때 추가 구성이 필요합니다. 다중 포트 서비스는 방화벽 마크를 사용하여 서로 다른 번들이지만 HTTP(포트 80) 및 HTTPS(포트 443)와 같은 관련 프로토콜 또는 Load Balancer가 FTP와 같은 실제 다중 포트 프로토콜과 함께 사용되는 경우 인위적으로 생성할 수 있습니다. 두 경우 모두 LVS 라우터는 방화벽 표시를 사용하여 다른 포트로 향하지만 동일한 방화벽 마크가 있는 패킷이 동일하게 처리되어야 함을 인식합니다. 또한 지속성 매개 변수에 의해 지정된 시간 내에 연결이 발생하는 한 방화벽은 클라이언트 시스템의 연결이 동일한 호스트로 라우팅되도록 합니다.
IPVS는 실제 서버의 부하를 분산하는 데 사용되는 메커니즘을 통해 패킷에 할당된 방화벽 마크를 인식할 수 있지만 방화벽 표시는 자체적으로 할당할 수 없습니다. 방화벽 마크 할당 작업은 네트워크 패킷 필터인 iptables 에서 수행해야 합니다. Red Hat Enterprise Linux 7의 기본 방화벽 관리 툴은 firewalld 이며 iptables 를 구성하는 데 사용할 수 있습니다. 선호하는 경우 iptables 를 직접 사용할 수 있습니다. Red Hat Enterprise Linux 7의 iptables 사용에 대한 정보는 Red Hat Enterprise Linux 7 보안 가이드를 참조하십시오.

3.4.1. firewalld를 사용하여 방화벽 표시 할당

특정 포트를 대상으로 하는 패킷에 방화벽 표시를 할당하기 위해 관리자는 firewalldfirewall-cmd 유틸리티를 사용할 수 있습니다.
필요한 경우 firewalld 가 실행 중인지 확인합니다.
# systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
   Active: active (running) since Tue 2016-01-26 05:23:53 EST; 7h ago
firewalld 를 시작하려면 다음을 입력합니다.
# systemctl start firewalld
시스템을 시작할 때 firewalld 가 활성화되어 있는지 확인하려면 다음을 수행하십시오.
# systemctl enable firewalld
이 섹션에서는 HTTP 및 HTTPS를 예로 번들하는 방법을 설명하지만 FTP는 다른 일반적으로 클러스터형 다중 포트 프로토콜입니다.
방화벽 마크를 사용할 때 유의해야 할 기본 규칙은 Keepalived에서 방화벽 표시를 사용하는 모든 프로토콜에 대해 네트워크 패킷에 마크를 할당하려면 영속 방화벽 규칙이 있어야 한다는 것입니다.
네트워크 패킷 필터 규칙을 만들기 전에 규칙이 없는지 확인합니다. 이렇게 하려면 쉘 프롬프트를 열고 root 로 로그인한 다음 다음 명령을 입력합니다.
# firewall-cmd --list-rich-rules
리치 규칙이 없으면 프롬프트가 즉시 다시 표시됩니다.
firewalld 가 활성 상태이고 리치 규칙이 있는 경우 규칙 세트가 표시됩니다.
규칙이 이미 있는 경우 /etc/firewalld/zones/ 의 내용을 확인하고 진행하기 전에 안전한 장소에 보관할 수 있는 규칙을 복사합니다. 다음 형식으로 명령을 사용하여 원하지 않는 리치 규칙을 삭제합니다. --permanent 옵션은 설정이 지속되지만 명령은 다음 시스템 시작 시에만 적용됩니다.
firewall-cmd --zone=zone --remove-rich-rule='rule' --permanent
설정을 즉시 적용하는 데 필요한 경우 --permanent 옵션을 생략하는 명령을 반복합니다.
구성할 첫 번째 로드 밸런서 관련 방화벽 규칙은 Keepalived 서비스의 VRRP 트래픽이 작동하도록 허용하는 것입니다. 다음 명령을 실행합니다.
# firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
영역이 생략되면 기본 영역이 사용됩니다.
다음은 포트 80 및 443에서 유동 IP 주소 n.n.n.n.n 으로 향하는 들어오는 트래픽에 동일한 방화벽 마크 80을 할당하는 규칙입니다.
# firewall-cmd --add-rich-rule='rule family="ipv4" destination address="n.n.n.n/32" port port="80" protocol="tcp" mark set="80"' --permanent
# firewall-cmd --add-rich-rule='rule family="ipv4" destination address="n.n.n.n/32" port port="443" protocol="tcp" mark set="80"' --permanent
# firewall-cmd --reload
success
# firewall-cmd --list-rich-rules
rule protocol value="vrrp" accept
rule family="ipv4" destination address="n.n.n.n/32" port port="80" protocol="tcp" mark set=80
rule family="ipv4" destination address="n.n.n.n/32" port port="443" protocol="tcp" mark set=80
영역이 생략되면 기본 영역이 사용됩니다.
firewalld 의 풍부한 언어 명령 사용에 대한 자세한 내용은 Red Hat Enterprise Linux 7 보안 가이드를 참조하십시오.

3.4.2. iptables를 사용하여 방화벽 마크 할당

방화벽 표시를 특정 포트로 향하는 패킷에 할당하기 위해 관리자는 iptables 를 사용할 수 있습니다.
이 섹션에서는 HTTP 및 HTTPS를 예로 번들하는 방법을 설명하지만 FTP는 다른 일반적으로 클러스터형 다중 포트 프로토콜입니다.
방화벽 마크를 사용할 때 유의해야 할 기본 규칙은 Keepalived에서 방화벽 표시를 사용하는 모든 프로토콜에 대해 네트워크 패킷에 마크를 할당하려면 영속 방화벽 규칙이 있어야 한다는 것입니다.
네트워크 패킷 필터 규칙을 만들기 전에 규칙이 없는지 확인합니다. 이렇게 하려면 쉘 프롬프트를 열고 root 로 로그인한 다음 다음 명령을 입력합니다.
/usr/sbin/service iptables status
iptables 가 실행되고 있지 않으면 프롬프트가 즉시 다시 표시됩니다.
iptables 가 활성화된 경우 규칙 세트가 표시됩니다. 규칙이 있는 경우 다음 명령을 입력합니다.
/sbin/service iptables stop
규칙이 이미 있는 경우 /etc/sysconfig/iptables 의 내용을 확인하고 진행하기 전에 안전한 장소에 보관해야 하는 규칙을 복사합니다.
방화벽 규칙과 관련된 첫 번째 로드 밸런서는 Keepalived 서비스가 작동할 수 있도록 VRRP 트래픽을 허용하는 것입니다.
/usr/sbin/iptables -I INPUT -p vrrp -j ACCEPT
다음은 포트 80 및 443에서 유동 IP 주소 n.n.n.n.n 으로 향하는 들어오는 트래픽에 동일한 방화벽 마크 80을 할당하는 규칙입니다.
/usr/sbin/iptables -t mangle -A PREROUTING -p tcp -d n.n.n.n/32 -m multiport --dports 80,443 -j MARK --set-mark 80
root 로 로그인하고 처음으로 규칙을 발행하기 전에 iptables 에 대한 모듈을 로드해야 합니다.
위의 iptables 명령에서 n.n.n.n.n.n.n.n.n.n은 HTTP 및 HTTPS 가상 서버의 유동 IP로 교체해야 합니다. 이러한 명령은 적절한 포트에서 VIP로 주소가 지정된 모든 트래픽을 80의 방화벽 표시로 할당하여 IPVS에 의해 인식되고 적절하게 전달됩니다.
주의
위의 명령은 즉시 적용되지만 시스템을 재부팅하면 유지되지 않습니다.