사용자 당 대역폭을 어떻게 제한 할 수 있습니까? 서버가 있습니다. 각

요약하면 : 나는 웹 GUI로 토런트 클라이언트를 실행하는 몇 명의 친구가있는 전용 서버가 있습니다. 각 사용자는 서버에서 사용자 이름으로 클라이언트를 실행하므로 다운로드는 사용자 디렉토리로 이동하며 자신의 파일에만 액세스 할 수 있습니다.

사용자별로 월별 대역폭을 모니터링하고 제한하려면 어떻게해야합니까?

iptables를 사용하는 방법이 있어야한다고 생각했습니다. 그리고 사용자 X의 모든 프로세스에서 사용하는 대역폭을 모니터링하여 월 단위로 허용되는 YGB 이상의 대역폭을 사용하면 토런트 클라이언트에 대한 네트워킹이 차단되고 클라이언트가 완전히 종료되었다는 메시지가 표시됩니다. 나는 또한 오징어에 대해 생각했지만 여러 토런트 클라이언트를 사용할 때 많은 서버 리소스를 사용할 수 있다고 생각합니다 …

데비안 레니를 사용하고 있습니다.

어떻게 해야할지 모르겠습니다 …

이것이 가능할까요? 이것에 대한 부분적인 해결책조차도 감사합니다 …



답변

‘tc’트래픽 쉐이핑 명령을 사용할 수 있습니다.

BitTorrent에 사용할 각 친구에게 다른 포트를 제공하십시오. 각 포트에 대해 iptables로 TCP 패킷을 표시하십시오.

iptables -t mangle -A FORWARD -p tcp --sport 6881 -j MARK --set-mark 100
iptables -t mangle -A FORWARD -p tcp --dport 6881 -j MARK --set-mark 100

그런 다음 tc 명령을 사용하여 각 사용자의 최대 대역폭과 속도를 설정하십시오.

월말에 ‘tc’명령을 삭제하고 추가하여 카운트를 재설정 할 수 있습니다.

다음을 통해 각 사용자의 사용량을 모니터링 할 수 있습니다.

tc filter show dev ethX

데비안 설치 쇼어 월을 사용한다면 iptables를 엉망으로 만들지 않고도 트래픽을 쉽게 만들 수 있습니다. / etc / shorewall 디렉토리에서 tcdevices, tcclasses 및 tcrules를 편집하기 만하면됩니다. 자세한 정보는 여기 : http://www.shorewall.net/traffic_shaping.htm

다른 사람이 제안했듯이, 사용자 이름으로 패킷을 표시하는 것이 아마도 포트보다 낫습니다. 그러면 iptables를 업데이트하지 않고도 포트를 변경할 수 있습니다.


답변

--quotaiptables 에서 옵션을 사용하여 전송 제한을 바이트 단위로 설정할 수 있습니다. 각각 다른 사용자 이름으로 여러 개의 토렌트 클라이언트를 실행하고 있으므로--uid-owner katriel이 제안한 것처럼 옵션 옵션을 있습니다.

이러한 방식으로 사용자의 다운로드 속도를 제한하지 않고 기간 (일 / 주 / 월 / 등) 당 전송 제한을 적용 할 수 있습니다.

패킷 카운터를 지속적으로 유지하려면 서버를 다시 부팅하거나 방화벽 규칙을 플러시해야 할 경우 복원 할 수 있도록 주기적으로 (예 : 크론 작업을 통해) 저장해야합니다.


답변

위의 질문에 추가하십시오.

iptables를 사용자 일치와 함께 사용하여 패킷에 다음과 같이 색상을 지정할 수 있습니다.

iptables -t mangle -A OUTPUT -p tcp -m owner --uid-owner someuser -j MARK --set-mark 100

그런 다음 ‘tc’를 사용하여 사용자별로 제한하십시오.


답변

한 달에 각 사용자에게 허용 할 월간 트래픽 양에 따라 다른 사용자가 제안한 도구 중 일부를 사용하여 대역폭 제한을 설정할 수 있습니다.

예를 들어 최대 다운로드 제한을 250GB / month 로 설정한다고 가정 해 보겠습니다 . 이제 이것을 한 달의 시간 수 (~ 730)로 나눈 다음 3600으로 나누면 최대 다운로드 속도를 얻습니다.이 예제에서는 100KB / s 정도 입니다.

그런 다음 최대 DL 속도를 100KB / s로 설정하면 250GB / 월 다운로드 제한이 자동으로 적용됩니다 (물론 트래픽 셰이퍼가 제대로 작동한다고 가정). 사용자가 100KB / s보다 빠른 속도로 다운로드 할 수없는 경우 한 달에 250GB 이상을 다운로드 할 수 없습니다.

다운로드 속도를 제한하기 위해 tc언급 된 다른 도구 나 다른 도구를 사용할 수 있습니다 . 직접 처리하지 않으려면 cbq.init를tc 사용하면 매우 간단하게 설정할 수 있습니다. 이 스크립트는 Debian Etch에서shaper 패키지 했지만 그 이후에 제거 된 것으로 보입니다. 어쨌든 SourceForge에서 다운로드 할 수있는 간단한 스크립트 일뿐입니다.

물론이 방법은 귀하의 경우에 유용하지 않을 수 있습니다 (예를 들어, 사용자가 최대 속도로 다운로드 할 수 있지만 여전히 제한적으로 시행하려는 경우 제안이 작동하지 않습니다).


답변

나는 이것이 오래된 게시물이라는 것을 알고 있지만 오늘도 답을 찾고 그것을 우연히 발견했으며 결국에는 나에게 완벽하게 어울리는 무언가를 모았습니다. 25Mbs 다운 링크와 2.5Mbs 업 링크가 있으며이 링크를 공유하는 4 명의 사람과 5 개의 서버가 있습니다. 서버의 경우 업 링크 대역이 중요하지만 다운 링크는 4 명에게 유용하므로 아무도이를 호기하지 않습니다.

centos 6.3을 라우터로 실행하고 있지만이 명령은 모든 Linux에서 작동해야합니다. eth0은 제공자에 대한 나의 업 링크입니다. eth1은 24 포트 스위치 및 wifi 액세스 포인트를 통한 나의 LAN입니다. 다운로드를 25Mbs (약 500KB / sec) 중 5 개로 다운로드를 제한합니다. 업로드를 200Kbit (약 25KB / sec)로 제한합니다

tc qdisc add dev eth0 root handle 1:0 htb default 99
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 100Mbit ceil 100Mbit
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 200Kbit ceil 200Kbit prio 2
tc qdisc add dev eth0 parent 1:11 handle 10: sfq perturb 10

tc qdisc add dev eth1 root handle 2:0 htb default 99
tc class add dev eth1 parent 2:0 classid 2:1 htb rate 100Mbit ceil 100Mbit
tc class add dev eth1 parent 2:1 classid 2:11 htb rate 5Mbit ceil 5Mbit prio 2
tc qdisc add dev eth1 parent 2:11 handle 20: sfq perturb 10

그런 다음 사용자를 제한하기 위해 사용자 당 2 개의 iptables 라인을 사용합니다

업로드를 제한하려면 :

iptables -t mangle -A POSTROUTING -o eth0 -p tcp -s 192.168.0.100 -j CLASSIFY --set-class 1:11

다운로드를 제한하기 위해

iptables -t mangle -A POSTROUTING -o eth1 -p tcp -d 192.168.0.100 -j CLASSIFY --set-class 2:11

제한하려는 사람과 일치하도록 IP 주소와 eth 포트를 변경하십시오.


답변

완전성을 위해이라는 사용자 공간 데몬이 trickle있습니다. 단일 프로세스의 대역폭을 제한하는 데 사용할 수 있습니다. 사용법은 매우 간단합니다. fe는 aptitude에서 사용하는 대역폭을 제한하기 위해 다음 trickle -d 10 aptitude install wesnoth과 같이 쓸 수 있습니다.


답변

useripacct 커널 패치를 살펴보십시오 (실제로 오랜 역사가 있습니다 ). 이전 버전문서에서 할당량 적용 및 모니터링 기능을 제공하는 것으로 보이며 자체 정책 스크립트를 제공 할 수도 있습니다.

useripacct 제작자가 원하는 동작을 얻기 위해 커널 패치를 사용해야한다면 기본적으로 사용 가능한 간단한 방법이 없을 것 같습니다. 유일한 대안은 여기에서 대부분의 다른 답변 (실제로 찾고있는 것은 아님)에서 제안한대로 대역폭 제한 (TC 또는 물방울과 같은 것)이거나 각 사용자에 대한 VM 만들기 (가벼운 OS 가상화 사용) OpenVZ 와 같은 ) 및 VM 당 계정 트래픽 ( vnstat 와 같은 것으로 상당히 쉽게 평가됩니다 ). 그래도 과도한 것으로 보입니다 (갑자기 하나의 시스템 대신 관리 할 VM이 많이 있습니다).