18.12.11.2. 연결 수 제한
게스트 가상 머신이 설정할 수 있는 연결 수를 제한하려면 지정된 유형의 트래픽에 대한 연결 제한을 설정하는 규칙을 제공해야 합니다. 예를 들어 VM이 한 번에 하나의 다른 IP 주소만 ping하도록 허용되고 한 번에 하나의 활성화된 ssh 연결만 있어야 합니다.
예 18.10. 연결에 제한을 설정하는 XML 샘플 파일
다음 XML 조각을 사용하여 연결을 제한할 수 있습니다.
[...] <rule action='drop' direction='in' priority='400'> <tcp connlimit-above='1'/> </rule> <rule action='accept' direction='in' priority='500'> <tcp dstportstart='22'/> </rule> <rule action='drop' direction='out' priority='400'> <icmp connlimit-above='1'/> </rule> <rule action='accept' direction='out' priority='500'> <icmp/> </rule> <rule action='accept' direction='out' priority='500'> <udp dstportstart='53'/> </rule> <rule action='drop' direction='inout' priority='1000'> <all/> </rule> [...]
참고
제한 규칙은 트래픽을 수락하기 위한 규칙보다 먼저 XML에 나열되어야 합니다. 예 18.10. “연결에 제한을 설정하는 XML 샘플 파일” 의 XML 파일에 따르면 포트 22로 전송된 DNS 트래픽을 허용하는 추가 규칙이 게스트 가상 머신으로 이동하며 ssh 데몬이 DNS 조회 실패와 관련된 이유로 ssh 세션이 설정되지 않도록 하는 추가 규칙이 추가되었습니다. 이 규칙을 벗어나면 ssh 클라이언트가 연결을 시도하면서 예기치 않게 중단될 수 있습니다. 트래픽 추적과 관련된 시간 제한을 처리하는 것과 관련하여 추가 주의를 사용해야 합니다. 사용자가 게스트 가상 머신 내부에서 종료될 수 있는 ICMP ping은 호스트 물리적 머신의 연결 추적 시스템에 시간 초과를 가질 수 있으므로 다른 ICMP ping이 통과할 수 없습니다.
가장 좋은 해결책은 다음 명령을 사용하여 호스트 물리적 시스템의
sysfs
의 시간 제한을 조정하는 것입니다.# echo 3 > /proc/sys/netfilter/nf_conntrack_icmp_timeout. 이 명령은 ICMP 연결 추적 타임아웃을 3초로 설정합니다. 이는 한 번 ping이 종료되면 다른 ping이 3초 후에 시작될 수 있다는 것입니다.
어떤 이유로든 게스트 가상 머신이 TCP 연결을 제대로 종료하지 않은 경우 특히 호스트 물리적 시스템에서 많은 시간 동안 TCP 시간 제한이 설정된 경우 더 긴 기간 동안 연결을 열 수 있습니다. 또한 유휴 연결은 패킷이 교환되면 다시 활성화될 수 있는 연결 추적 시스템에 시간이 초과될 수 있습니다.
그러나 제한을 너무 낮게 설정하면 새로 시작된 연결은 TCP 백오프에 유휴 연결을 강제 수행할 수 있습니다. 따라서 새 TCP 연결의 변동이 유휴 연결과 관련하여 홀수 트래픽 동작을 유발하지 않도록 연결 제한이 다소 높아야 합니다.