17.14.11.2. 연결 수 제한
게스트 가상 머신이 설정할 수 있는 연결 수를 제한하려면 지정된 트래픽 유형에 대한 연결 제한을 설정하는 규칙을 제공해야 합니다. 예를 들어 VM이 한 번에 하나의 다른 IP 주소만 ping하도록 허용되며 한 번에 하나의 활성 ssh 연결만 사용해야 합니다.
예 17.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에 나열되어야 합니다. 예 17.10. “연결 제한을 설정하는 XML 샘플 파일” 의 XML 파일에 따르면 포트 22로 전송된 DNS 트래픽이 게스트 가상 머신으로 전송될 수 있도록 하는 추가 규칙이 추가되어 ssh 세션이 ssh 데몬에서 DNS 조회 실패와 관련된 이유로 설정되지 않았습니다. 이 규칙을 벗어나면 ssh 클라이언트가 연결을 시도할 때 예기치 않게 중단될 수 있습니다. 트래픽 추적과 관련된 시간 초과를 처리하는 것과 관련하여 추가로 주의해야 합니다. 사용자가 게스트 가상 머신 내에서 종료될 수 있는 ICMP ping은 호스트 물리적 시스템의 연결 추적 시스템에서 시간이 오래 걸릴 수 있으므로 다른 ICMP ping을 통과할 수 없습니다.
가장 좋은 해결책은 다음 명령을 사용하여 호스트 물리적 시스템의
sysfs
에서 시간 초과를 조정하는 것입니다. # echo 3 > /proc/sys/net/netfilter/nf_conntrack_icmp_timeout. 이 명령은 ICMP 연결 추적 타임아웃을 3초로 설정합니다. 이 문제는 한 ping이 종료되면 3초 후에 또 다른 ping을 시작할 수 있다는 것입니다.
어떠한 이유로 게스트 가상 머신이 TCP 연결을 제대로 종료하지 않은 경우, 특히 호스트 물리적 시스템에서 많은 시간 동안 TCP 제한 값을 설정한 경우 더 오랜 시간 동안 열려 있는 연결을 유지할 수 있습니다. 또한 모든 유휴 연결이 연결 추적 시스템에서 시간 초과되어 패킷을 교환하면 다시 활성화될 수 있습니다.
그러나 제한이 너무 낮게 설정되어 있으면 새로 시작한 연결은 유휴 연결을 TCP 백오프로 강제할 수 있습니다. 따라서 새 TCP 연결의 변동으로 인해 유휴 연결과 관련하여 홀수 트래픽 동작이 발생하지 않도록 연결 제한이 설정되어야 합니다.