다음과 같은 상황 : 우리는 지역 주민 회관의 인터넷 연결을 관리하는 학생 그룹이며 총 약 2000 명의 최종 사용자가 있습니다.
우리는 트래픽 포인트 시스템을 가지고 있으며, MB 다운 또는 업로드 비용 포인트마다 새로운 포인트가 시간 단위로 추가됩니다. 현재 사용자가 모든 포인트를 사용했을 때 사용자의 인터넷 액세스를 차단합니다 (Debian 게이트웨이 라우터의 iptables에 거부 정책을 적용 함).
사용자의 대역폭 만 제한하고 싶습니다. 가장 좋은 방법은 무엇입니까?
간단한 대답은 사용자의 스위치 포트 (대부분 Cisco Catalyst 3550)에서 속도 제한을 설정하는 것입니다. 그러나 자체 네트워크 및 대학 네트워크 내부의 트래픽은 무제한으로 유지되어야하므로 바람직하지 않습니다. Cisco IOS에서 특정 대상 또는 소스 IP 범위 (따라서 송신 및 수신)가있는 패킷에 대해서만 대역폭을 제한하는 방법이 있습니까? 나는 아무것도 찾을 수 없었다.
다른 방법은 게이트웨이 라우터의 트래픽을 제어하는 것입니다. 몇 가지 해결책이 떠 오릅니다.
tc 또는 tcng-둘 다 다소 간결한 구문을 가지고 있으며 IP 별 트래픽 제어를 수행하는 데 유용한 기능을 제공하지 않는 것 같습니다. 많은 사람들을위한 전용 QDisc는 아마도 라우터 속도를 상당히 느리게 할 것입니다. 또한, 둘 다에 대한 문서는 상당히 구식입니다.
shorewall-구성에 대해 다소 깔끔한 구문이있는 것 같지만이 트래픽과 사용자를 처리 할 수 있는지 여부와 IP 별 트래픽 제한에 적합한 지 확실하지 않습니다.
pfSense-우리와 같은 목적을위한 OS처럼 보입니다. 그러나 게이트웨이 라우터를 강제로 다시 설치해야합니다. 우리는 다른 BSD 시스템을 가지고 있지 않으며 pfSense는 매우 우수한 트래픽 계정 기능이 필요합니다 (현재 우리는 fprobe-ulog 및 ulog-acctd를 사용하고 있습니다).
당신의 경험은 무엇입니까? 어떤 솔루션이 우리의 요구에 적합하고 가장 쉽게 유지 보수 될 수 있습니까? 다른 아이디어가 있습니까?
시스템에 대한 추가 정보가 필요하면 언제든지 문의하십시오.
미리 감사드립니다.
편집 : 나는 함께 시스템을 구현 iptables
하고 tc
.
모든 사용자는 / 28- 서브넷, VPN IP (모두 10.0.0.0/8) 및 외부 IP를 가지며 하나의 iptables 체인을 통해 조정됩니다. 이 체인에는 하나의 규칙 만 RETURN
있습니다.
5 분마다 Python 스크립트는 이러한 규칙의 바이트 카운터를 읽습니다. PostgreSQL 데이터베이스에서 카운터를 재설정하고 사용자의 트래픽 지점 계정을 업데이트합니다.
사용자의 포인트 밸런스가 특정 임계 값 아래로 감소하면이 사용자에 대해 두 개의 tc 클래스 (하나는 수신, 하나는 게이트웨이 라우터의 발신 인터페이스에 대해)가 생성되고 IP는 이러한 클래스에 속하는 tc 필터에 입력됩니다. 수업은 HTB에 의해 속도가 제한됩니다.
와 이전 시스템에 비해 fprobe-ulog
및 ulog-acctd
바이트 계산이 iptables에 의해 수행 될 때이 훨씬 빠릅니다.
사용자의 네트워크 속도가 크게 향상되었습니다.