서버별 트래픽 Quota 설정
별도의 트래픽 비용을 납부 없이 사용하고자 한다면 아래와 같은 방법으로 활용가능하니 참고하시기 바랍니다.
※ 본문은 iwinv 서버군 상품을 기준으로 작성되었으며 리눅스내 기본 방화벽 iptables 에 대한 기본적인 이해도가 있다는 가정하에 적습니다.
시스템 요구사항
1. 리눅스 기반 OS 2. iptables quota 모듈 활용 |
1. 서버 클라우드 기본 트래픽 제공(리얼서버 : 900GB/월, 가상서버 : 300GB/월) + 트래픽 차등 요금제 적용(추가 트래픽 요금 1GB당 60원 ~ 40원)
3. 가상서버의 경우 내부(사설) 트래픽에서 발생되는것 또한 무료 |
유의사항
1. Packet bytes 카운팅은 모든 룰에 최우선 2. 리부팅 및 iptables 재시작을 하게되면 카운팅 초기화 3. 주기적인 iptables 카운팅 저장 관리 4. 시스템 재시작 or iptables 재시작시 저장된 카운팅으로 restore 5. 일단위 정책을 반영할지 월단위 정책을 반영할지 결정 |
설정
모듈체크
# modprobe ipt_quota # lsmod |grep quota xt_quota 1439 0 |
iptables Control
# iptables -N TRAFFIC_QUOTA # iptables -I OUTPUT -j TRAFFIC_QUOTA |
단위계산
1 GBYTE = 1073741824 BYTE
:: 1024*1024*1024 = 1073741824
300 GBYTE = 322122547200 BYTE
# iptables -A TRAFFIC_QUOTA -m quota --quota 1073741824 -j RETURN :: 여기서는 트래픽 조건을 1G 이상 사용으로... # iptables -A TRAFFIC_QUOTA -j DROP :: 위 1G 트래픽 조건을 소진하게 되면 DROP # iptables -vxnL :: 카운팅 조회 --quota 수치가 들어오는 bytes 숫자만큼...감소 |
자... 유의사항과 트래픽 정책을 무시하면 설정은 이걸로 끝이다.
테스트를 위해서는 트래픽 조건을 낮게줘서 확인해본다.
다음부터는 유의사항 조건이 들어가게된다.
1번조건은 iptables I 옵션으로...
2,3번조건은 CRON으로 주기적 카운팅정보까지 업데이트
여기에서는 1분마다
# vim /etc/crontab */1 * * * * root iptables-save -c > ${IPTABLES_DATA} ex) */1 * * * * root iptables-save -c > /etc/sysconfig/iptables |
4번 조건은 iptables 재시작시 카운팅 정보까지 로딩할수있게 시작스크립트(/etc/init.d/iptables)내에 -c 옵션추가
# vim /etc/init.d/iptables ......................... $IPTABLES-restore -c $OPT $IPTABLES_DATA |
5번 조건은 CRON 활용으로 카운팅 초기화를 결정하면 된다. (일/월)
기본 트래픽 조건파일을 별도로 만들어서 정해진 시간(0시 0분)에 CRON을 활용해 QUOTA 설정을 초기화한다.
마지막으로 이제는...iwinv 트래픽 정책을 반영한다.
내부 사설 라우터를 통해 통신되는 트래픽은 무료... (사설아이피)
iwinv (스마일서브) 내에서 통신되는 트래픽 또한 무료... (공인아이피)
※ 스마일서브 공인 아이피 대역은 조금만 발품팔면 확인가능하니 여기서는 따로 노출하지는 않겠습니다.
example) # iptables -I TRAFFIC_QUOTA -s 172.16.0.0/16 -j RETURN # iptables -I TRAFFIC_QUOTA -s 115.XXX.XXX.0/16 -j RETURN |
다음은 설정한 QUOTA를 사용하고나서 DROP 된 사항을 IWINV Console 화면내 VNC 콘솔로 접근해서 확인해본 결과입니다.
설정한 쿼터(트래픽)만큼 카운팅되고 0 bytes 되는 시점이후부터 패킷은 DROP 되고 있는 상태입니다.