QoS 관련 tc 사용 질문입니다 (NAT base)
고수님들 안녕하세요.
몇일 전에 질문을 올렸는데 답글을 못받았는데요.
이것 저것 다시 해보다가 조금 더 간략하게 간추려서 질문 다시 올립니다.
네트웍 상태는..
eth0(wan 포트) eth1(lan 포트) 이 있고
iptables의 마스커레이드를 사용하여 NAT로 잘 사용 되는 상태입니다. (기타 패킷필터 설정은 없는 상태)
eth0 인터페이스로 나가는 패킷에 limit을 걸려고 하는데요
tc qdisc add dev eth0 root handle 1: htb default 10
tc class add dev eth0 parent 1: classid 1:10 htb rate 100Kbit ceil 100Kbit prio 0
이렇게 해서 큐와 클래스를 만들어 놓고.. (eth0으로 나가는 모든 패킷을 100kbit로 제한)
linux box 로컬에서 패킷을 생성해서 내보내면 제한이 잘 됩니다. (iperf 사용)
그런데 eth1(lan)으로 들어와서 eth0(wan)으로 나가는 패킷은 제한이 안 된 속도로 그냥 통과해 버립니다.
tc -s class show class dev eth0 으로 패킷 전송을 확인 해 보면 생성한 큐로 통과한 흔적이 없습니다.
마치 다른 큐를 타고 나가는 것 처럼 보입니다.
tc qdisc add dev eth0 root handle 1: htb
이렇게 함으로써 eth0로 나가는 모든 패킷은 생성된 htb qdisc로 나가야 되는게 맞는게 아닌가요?
왜 안되는지.. 다른 설정이 필요한 것인지.. 궁금합니다
참고로 패킷에 마킹해서 tc 필터 추가하는 방식도 당연히 해보았습니다.
(올바른 체인에.. 또한 마킹이 잘 되는 것 도 확인)
참고사항으로 tc 상태를 보여드립니다
# tc qdisc show
qdisc htb 1: dev eth0 root refcnt 2 r2q 100 default 10 direct_packets_stat 0
qdisc pfifo_fast 0: dev eth1 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
결론은 왜 리눅스 로컬에서 나가는 것은 제한이 잘 되고(생성된 큐를 잘 타고)
외부(lan)에서 들어오는 것은 제한이 안되는 것인지(왜 알수 없는 다른 큐를 타고 나가는지)
이것이 궁금합니다.
고수님들 답변 부탁드립니다. (__)
흠..
저도 오래 되서 잘 기억은 나지 않지만 둘중에 하나는 걸리지 않을겁니다.
가장 좋은것은 IMQ같은 가상의 인터페이스를 이용하는 방법입니다.
댓글 달기