다음 명령이 tc를 사용하여 포트 21의 트래픽을 제한하지 않는 이유는 무엇입니까?

다음 명령이 tc를 사용하여 포트 21의 트래픽을 제한하지 않는 이유는 무엇입니까?

실행 중인 비트코인 ​​인스턴스의 나가는 대역폭을 제한하는 방법을 찾고 있던 중,이 가이드이는 특정 대상 IP에 대한 트래픽의 속도를 제한하는 방법을 설명합니다.

tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 10mbit 
tc class add dev $DEV parent 1: classid 1:1 cbq rate 512kbit allot 1500 prio 5 bounded isolated 
tc filter add dev $DEV parent 1: protocol ip prio 16 u32 match ip dst 195.96.96.97 flowid 1:1

하지만 특정 대상 IP로 트래픽을 제한하고 싶지 않고 특정 포트로 들어오고 나가는 트래픽을 제한하고 싶어서 찾았습니다.이 가이드소스 및 대상 포트별로 트래픽을 일치시키는 방법을 알려줍니다.

tc filter add dev eth0 protocol ip parent 10: prio 1 u32 match ip dport 22 0xffff flowid 10:1
tc filter add dev eth0 protocol ip parent 10: prio 1 u32 match ip sport 80 0xffff flowid 10:1

두 번째 스크립트의 포트 일치와 결합된 첫 번째 스크립트는 포트 21에서 나가는 트래픽을 160kbit/s로 제한해야 하는 다음 명령 세트를 생성합니다. 비트코인을 포트 8333으로 제한하는 것은 트래픽을 보낼 시기를 결정할 수 없었기 때문에 테스트를 위한 최선의 선택이 아니었기 때문에 먼저 FTP를 사용하여 설정을 테스트했습니다.

tc qdisc add dev eth0 root handle 1: cbq avpkt 1000 bandwidth 800kbit 
tc class add dev eth0 parent 1: classid 1:1 cbq rate 160kbit allot 1500 prio 5 bounded isolated
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dport 21 0xffff flowid 1:1

내가 아는 한, 이는 800kbit/s ~ 160kbit/s의 나가는 대역폭으로 eth0 인터페이스의 포트 21로 나가는 트래픽을 제한해야 하지만 작동하지 않습니다.

NetHogs version 0.8.0

  PID USER     PROGRAM                      DEV        SENT      RECEIVED       
23653 rune     filezilla                    eth0     102.609       2.978 KB/sec

FTP 연결은 포트 21에 대한 두 가지 연결로 구성됩니다.

$ netstat -n|grep "21 "
tcp        0      0 192.168.1.33:59967      194.192.207.26:21       ESTABLISHED
tcp        0      0 192.168.1.33:59974      194.192.207.26:21       ESTABLISHED

내가 뭘 잘못했나요?

관련이 있는 경우 Ubuntu Raring을 실행하고 있습니다.

답변1

하나는 유한하고 다른 하나는 "무한"이라는 두 개 이상의 범주가 필요합니다. 이를 통해 한 종류의 트래픽을 제한된 카테고리로 필터링하고 나머지는 제외할 수 있습니다. 클래스가 하나만 있으면 모든 트래픽이 제한됩니다.

관련 정보