Raspberry Pi를 라우팅 장치로 사용한 사람이 있습니까?
주로 네트워크를 모니터링하는 데 사용하고 싶습니다. 이더넷에 대한 입력 및 출력이 있으면 좋을 것입니다. 그렇지 않으므로 이더넷 입력을 사용하여 네트워크를 모니터링하는 것이 매우 효과적인지 궁금합니다. 그런 다음 USB 동글을 Wi-Fi 라우터로 사용합니다. 누구든지 이런 일을 했습니까? 인터넷 속도가 느려 집니까?
Raspberry Pi를 라우팅 장치로 사용한 사람이 있습니까?
주로 네트워크를 모니터링하는 데 사용하고 싶습니다. 이더넷에 대한 입력 및 출력이 있으면 좋을 것입니다. 그렇지 않으므로 이더넷 입력을 사용하여 네트워크를 모니터링하는 것이 매우 효과적인지 궁금합니다. 그런 다음 USB 동글을 Wi-Fi 라우터로 사용합니다. 누구든지 이런 일을 했습니까? 인터넷 속도가 느려 집니까?
답변:
모델 B와 함께 제공되는 이더넷 포트 하나만 사용하여 트래픽 쉐이핑이있는 라우터로 모델 B를 사용하고 있습니다. 방법에 대한 빠르고 더러운 내용은 다음과 같습니다.
정적 네트워크 구성으로 Pi를 구성하면 아래 제안 된 DHCP 변경 사항에 영향을받지 않습니다. 내 내용은 다음과 같습니다 /etc/network/interfaces
.
# pi@flux:/home/pi/projects/adsl/rrdlogger (master *) # cat /etc/network/interfaces auto lo iface lo inet loopback #iface eth0 inet dhcp iface eth0 inet static address 192.168.1.1 netemask 255.255.255.0 gateway 192.168.1.254 # IP of my ADSL router box allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
이제 기본 게이트웨이 / 라우터가 Pi가되도록 네트워크의 DHCP 설정을 변경하십시오. 이는 기존 ADSL 라우터 상자의 설정을 변경하는 것을 의미합니다. 위의 예에서 Pi의 IP 주소는 192.168.1.1
입니다.
다음에 장치가 네트워크에 다시 연결되면 Pi는 인터넷에 대한 게이트웨이라고 알리고 모든 인터넷 연결 트래픽이 전송됩니다. Pi는 모든 트래픽을 일반적인 라우터로 릴레이합니다. 이러한 변경 사항을 적용하려면 장치의 연결을 끊었다가 다시 연결해야 할 수도 있습니다.
이제 vnstat 와 같은 모니터링 도구를 작성하거나 설치할 수 있습니다 .
교통 정체와 관련하여 여기에 내 자신의 wondershaper 변형을 사용하는 또 다른 빠르고 더러운 안내서가 있습니다 .
이 기능이 유용하려면 인터넷 연결 속도를 알아야합니다. 일반적으로 (원래) 라우터의 웹 인터페이스에서이를 찾을 수 있지만 speedtest를 사용하여 견적을 얻을 수는 없습니다 .
sudo apt-get install iptables
wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
sudo ./wondershaper eth0
트래픽 조절의 현재 상태를 인쇄합니다. 분명히 예상되는 상태는 쉐이핑이 없다는 것입니다. 즉, 다음과 같은 단일 규칙이 적용됩니다 pfifo_fast
.
eth0
모델 B의 유선 네트워크 어댑터 ifconfig
이름입니다. 시스템의 인터페이스 이름 참조 )# pi@flux:/home/pi/projects/adsl/wondershaper (master *) # sudo ./wondershaper eth0 qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 Sent 1908 bytes 15 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0
sudo ./wondershaper eth0 3000 370
, 어디:
3000
내 인터넷 연결의 다운 링크 속도는 kbit 입니다. 따라서 3Mbit == 3000kbit370
다시 인터넷 연결의 업 링크 속도입니다 (kbit).sudo ./wondershaper eth0
이제 훨씬 더 많은 출력을 표시해야합니다.
# pi@flux:/home/pi/projects/adsl/wondershaper (master *) # sudo ./wondershaper eth0 qdisc htb 1: root refcnt 2 r2q 10 default 0 direct_packets_stat 0 Sent 1858 bytes 9 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 40: parent 1:40 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 1858 bytes 9 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 10: parent 1:10 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 20: parent 1:20 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 30: parent 1:30 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc ingress ffff: parent ffff:fff1 ---------------- Sent 768 bytes 12 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 class htb 1:1 root rate 370000bit ceil 370000bit burst 10Kb cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 3459453 ctokens: 540531 class htb 1:10 parent 1:1 leaf 10: prio 1 rate 370000bit ceil 370000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 540531 ctokens: 540531 class htb 1:20 parent 1:1 leaf 20: prio 2 rate 246000bit ceil 246000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 813000 ctokens: 813000 class htb 1:30 parent 1:1 leaf 30: prio 3 rate 74000bit ceil 74000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 2702687 ctokens: 2702687 class htb 1:40 root leaf 40: prio 0 rate 100000Kbit ceil 100000Kbit burst 512Kb cburst 1600b Sent 3486 bytes 15 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 15 borrowed: 0 giants: 0 tokens: 654609 ctokens: 1250
발신 네트워크 트래픽은 이제 Pi에 의해 형성되고 있으며 원래 라우팅 상자가 아닌 Pi가 트래픽을 제어 할 수 있도록 인바운드 트래픽이 약간 조절됩니다.
쉐이핑을 비활성화하려면을 실행하십시오 sudo ./wondershaper eth0 clear
. 먼저 지우지 않고 업 링크 및 다운 링크 속도를 변경할 수 있지만 아프지 않습니다.
업데이트 : 또한 모든 트래픽이 Pi를 통과해야 쉐이핑이 발생하므로 ICMP 리디렉션 전송을 비활성화 해야합니다. Linux 커널은 홈 네트워크의 클라이언트가 Pi를 통해 트래픽을 반송하지 않고 ADSL 박스와 직접 통신 할 수 있다는 것을 알기에 충분히 영리하며 모든 기회에이를 알려줍니다. 그런 다음 클라이언트는 트래픽을 ADSL 상자로 직접 보내고 Pi는이를 형성 할 기회를 얻지 못합니다. 다음과 같이 재부팅 할 때와 같이 즉시 비활성화하십시오.
echo 0 | sudo tee /proc/sys/net/ipv4/conf/*/send_redirects
부팅 중에이를 설정하려면 다음을 업데이트하십시오. /etc/sysctl.conf
net/ipv4/conf/eth0/send_redirects = 0
( 이 팁 은 https://unix.stackexchange.com/a/58081/22537 에 감사합니다 )
Linux 게이트웨이 구성에 대한 개인 참고 사항에 관심이있을 수도 있습니다. http://www.robmeerman.co.uk/unix/gateway
wondershaper
그래도 귀하의 제안 에 대해 질문이 있습니다 : 클라이언트 당 또는 전체 한도입니까?
약간의 네트워크 배경을 가지고 있기 때문에 가장 먼저 염두에 두어야 할 것은 Snort 상자로 사용하는 것이므로 인터페이스가 하나만있는 것에 대해 걱정할 필요가 없습니다. 모든 트래픽을 Pi로 전달하도록 스위치 / 라우터를 설정하고 엔드 디바이스로 전달합니다. 이것을 스위치 포트 모니터라고하지만 장치가이를 지원하지 않을 수 있습니다. 이를 위해 관리되는 스위치 가 필요할 수 있습니다 . Snort는 트래픽을 분석하고보고합니다. Snort에 대한 추가 정보 http://www.snort.org/
이런 종류의 설정에 대한 좋은 점은 Pi가 데이터와 함께 앉아 있지 않고 스위치를 통해 실행되는 모든 것을보고 옆에 앉아 있다는 것입니다. 이런 방식으로 소프트웨어 결함이 발생하더라도 트래픽은 계속 모니터링 될 수 있습니다. 두 가지 인터페이스로 설명하는 내용으로 인해 프로그램이 중단되고 네트워크가 중단됩니다.
파이를 라우터로 사용하지는 않지만 네트워크를 통해 이동하는 트래픽을 모니터링하고보고 할 수 있습니다.
라우팅에 Raspberry Pi를 사용했으며 제대로 작동했습니다. Raspberry Pi에는 이더넷 포트가 하나만 있으므로 하나 이상의 네트워크 인터페이스가 필요합니다. USB 포트에 연결된 다른 인터페이스를 추가 할 수 있습니다. GSM 모뎀과 Wi-Fi 스틱을 사용했습니다.
참고 사항 :
다음은 라우팅에 대한 블로그 게시물 과 Wi-Fi 액세스 지점 설정에 대한 다른 게시물 입니다. 이 가이드 는 라우팅 설정에 도움 이 되었습니다. 라우팅 재료는 라즈베리 파이에만 국한되지 않습니다. 일반적으로 Linux에서 작동하는 모든 것이 가능해야합니다. 세부 사항은 사용하는 배포판에 따라 다릅니다.
Raspberry Pi를 라우터로 사용하는 데 약 한 달 동안 아무런 문제가 없었습니다. 가정용 Wi-Fi 라우터가 아닌 실제 상용 Wi-Fi 액세스 포트가 있으므로 사용했습니다. 또한 Wii에서 "빌려온"USB- 이더넷 변환기도 있습니다. 이는 홈 LAN으로, Raspberry Pi의 내장 이더넷은 WAN / 인터넷으로 연결됩니다.
Raspberry Pi 용 IPFire 사본을 받으십시오 . 직렬 콘솔과 최신 안정 버전이없는 ARM 버전이 필요합니다. ARM 탭을 클릭하십시오. "armv5tel 아키텍처 이미지"를 다운로드하십시오.
부팅하십시오. HDMI TV와 키보드를 연결합니다. 처음 몇 가지 질문에 답하십시오. 나머지 구성은 홈 네트워크의 브라우저에서 수행 할 수 있으므로 그 후에 TV 나 키보드가 필요하지 않습니다.
너무 힘들지 않았고 챔피언처럼 일했습니다! 공식적인 지침은 다음과 같습니다. http://wiki.ipfire.org/en/hardware/arm/rpi
마지막 한가지. USB 전원 Wi-Fi 동글을 사용하려면 Raspberry Pi의 전원 공급 장치를 확인하십시오. Raspberry Pi에 전원을 공급하기에 700mA USB 전원 공급 장치로 충분할 수 있지만 Wi-Fi에 전력을 공급하는 데 많은 도움이되지 않습니다. 전원이 공급되는 USB 허브를 사용하거나 1 ~ 2 A USB 전원 공급 장치로 Raspberry Pi에 전원을 공급하십시오.
행운을 빕니다!
(이 부록 은 Pi를 LAN의 인터넷 게이트웨이로 구성하는 방법에 대한 가이드 인 이전 답변을 따릅니다. )
전반적인 인터넷 사용량 을 모니터링하는 데 만족하지 않고 LAN에서 각 장치의 인터넷 사용량을 모니터링하는 도구를 작성했습니다. 이를 통해 콘솔 창에서 즉각적인 사용량을보고 기록 사용량의 차트를 생성하여 밤새 발생한 일을 확인할 수 있습니다.
LAN 장치의 실시간 및 히스토리 네트워크 사용을 모니터링하는 도구 인 Rhodes (MAC 주소 기반) : https://github.com/meermanr/adsl/tree/master/rhodes
콘솔 출력 샘플 :
193 kiB/s TX 17 kiB/s RX 0004edbf98c0 home.gateway (Billion Electric Co.)
0 kiB/s TX 0 kiB/s RX 2002af18dc15 Samsung Galaxy Tab 10.1, Vicky
0 kiB/s TX 0 kiB/s RX 34af2c01197b Nintendo 3DS:XL, Robert
0 kiB/s TX 0 kiB/s RX 34af2c3af204 Nintendo 3DS:XL, Vicky
0 kiB/s TX 0 kiB/s RX 34af2c9cfffd Nintendo WiiU
0 kiB/s TX 0 kiB/s RX 6045bd9c9dbc Xbox360 Slim
0 kiB/s TX 0 kiB/s RX 745e1c56c297 Pioneer SX-LX57
13 kiB/s TX 109 kiB/s RX 7831c1be0c34 Az Pro (Macbook Pro)
0 kiB/s TX 0 kiB/s RX 80ea96e6214e Roberts-AirPort-Time-Capsule
0 kiB/s TX 0 kiB/s RX 88308a770370 Samsung Galaxy S3, Vicky
189 kiB/s TX 211 kiB/s RX b827eb8fc0f3 Flux (Raspberry Pi)
2 kiB/s TX 39 kiB/s RX b8e8563acb34 Macbook Pro, Vicky
0 kiB/s TX 0 kiB/s RX d022be2c26ef Samsung Galaxy Note 3, Rob
0 kiB/s TX 0 kiB/s RX f82fa89368ea
첫 번째 열에는 전송중인 장치의 양이 표시되는데 이는 일반적으로 인터넷에 업로드하는 것을 의미합니다. 이에 대한 예외는 ADSL 라우터 자체 (위의 샘플에서 home.gateway)는 ISP로부터받은 데이터를 요청한 장치 (예 : 다운로드)를 전송합니다. 물론 인터넷으로 업로드를 전송하지만 LAN에 있지 않으므로이 도구에 표시되지 않는 ADSL 모뎀을 사용하여 업로드합니다.
다른 예외는 Raspberry Pi (위의 "Flux") 자체이며, 물론 관리하는 모든 데이터를 양방향으로 전송합니다.
그러나 이러한 예외를 제외하고 TX (전송) 번호는 업로드 및 RX (수신) 번호를 나타냅니다. 세 번째 열은 장치의 MAC 주소입니다 (일반적인 ":"또는 "-"구분 기호 제외). 네 번째 열은 사람이 읽을 수있는 장치의 이름입니다 (알고있는 경우).
을 실행하여 차트를 생성 ./index.py
합니다.이 lighttpd
(는 index.py
의 index-file.names
구성 설정에 추가 된) 웹 서버에서 호출됩니다 /etc/lighttpd/lighttpd.conf
. 수동으로 실행할 수 있으며 일부 이미지를 생성하고 HTML을 STDOUT으로 인쇄합니다. 따라서 브라우저에서 열 수있는 파일로 리디렉션하고 싶습니다.
./index.py > index.html
그런 다음 원하는 브라우저에서 index.html을여십시오.
설치 요구 사항 (모두 설치 가능 apt-get install
) :
tcpdump
-네트워크 트래픽 캡처 및 설명을위한 명령 줄 도구rrdtool
라운드 로빈 데이터베이스 도구, 기록 및 차트 시계열 데이터rrdcached
-라운드 로빈 데이터베이스 캐싱 데몬, 여러 RRD 파일과 동시에 작업 할 때 오버 헤드를 줄이는 서비스입니다.pypy-upstream
(Python 프로그래밍 언어의 빠른 구현)
python rhodes.py
( pypy
단지 인 타임 (JIT) 컴파일을 수행하는 파이썬 프로그래밍 언어의 다른 구현, 너무 오래 실행 메모리의 원가에서 CPU 사이클을 사용하는 스크립트)사용 메모 :이 스크립트에서 사용하는 'tcpdump'도구는 원시 네트워크 트래픽에 액세스하려면 루트 권한이 필요합니다. 이는 sudo tcpdump
스크립트가 시작될 때 시작되므로 비밀번호를 입력하라는 메시지가 표시 될 수 있습니다. 개인적으로 NOPASSWD 규칙을 추가 /etc/sudoers
했으므로 메시지가 표시되지 않습니다.