Raspberry Pi를 라우터로 사용하십니까?

라우팅 장치로 Raspberry Pi를 사용한 사람이 있습니까?

주로 네트워크를 모니터링하는 데 사용하고 싶습니다. 이더넷에 대한 입력과 출력이 있다면 훌륭하지만 그렇지 않습니다. 그래서 이더넷 입력을 한 다음 USB 동글을 Wi-Fi 라우터로 사용하여 네트워크를 모니터링하는 것이 매우 효과적인지 궁금합니다. 이런 일을 한 사람이 있습니까? 인터넷 속도가 많이 느려지나요?

댓글

  • 인터넷 연결 속도에 따라 다릅니다. 제 것은 100Mb, 그래서 ‘ 속도가 느려질 것이라고 확신합니다.)
  • ‘ 인터넷 연결이 30Mbps이고 현재 5Mbps의 트래픽으로 스 노트 기능이있는 인라인 라즈베리 파이는 CPU 50 ~ 95 %, 메모리 85 %를 사용합니다. 설정은 아직 조정되지 않았지만 실제 수치를 보여 드리고 싶습니다.
  • 라즈베리 파이를 사용하는 사용자 지정 라우터에서 badwidth 할당이 어떻게 작동하는지 아무도 없습니까? 3Mbps 인터넷 연결, 10 명의 사용자가 있습니다. 어떻게 나눌 것인지 설명해 주시겠습니까? 3Mbps 속도. 감사. 이해하길 바랍니다. 🙂
  • 안녕하세요. 다른 질문에 대해서는 질문하지 마십시오. 대신 페이지 상단의 질문하기 링크를 사용하여 새 질문을 엽니 다. 감사합니다.
  • 아마도 요? learn.adafruit.com/ …

답변

저는 함께 제공되는 하나의 이더넷 포트만 사용하여 트래픽 쉐이핑이있는 라우터로 모델 B를 사용하고 있습니다. 다음은 방법에 대한 간단한 설명입니다. :

  1. IPv4 전달을 사용 설정 하여 Pi가 수신하는 모든 트래픽을 전달하여 라우터 역할을합니다.
  2. 아래 제안 된 DHCP 변경 사항에 영향을받지 않도록 고정 네트워크 구성으로 Pi를 구성합니다. 다음은 참조 용 /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 
  3. 이제 기본 게이트웨이 / 라우터가 Pi가되도록 네트워크의 DHCP 설정을 변경합니다. 이는 기존 ADSL의 설정을 변경하는 것을 의미 할 수 있습니다. 위의 예에서 내 Pi의 IP 주소는 192.168.1.1입니다.

다음에 장치가 다음에 다시 연결될 때 네트워크에 연결되면 Pi가 인터넷에 대한 게이트웨이라는 메시지를 받고 인터넷에 연결된 모든 트래픽이 여기로 전송됩니다. Pi는 차례로 모든 트래픽을 일반적인 라우터로 릴레이합니다. 이러한 변경 사항을 적용하려면 장치를 분리했다가 다시 연결해야 할 수 있습니다.

이제 vnstat .

트래픽 셰이핑

트래픽 셰이핑에 관해서는 여기에 제 개인 변형을 사용할 수있는 또 다른 빠르고 간단한 가이드가 있습니다. wondershaper .

이 기능을 사용하려면 인터넷 연결 속도를 알아야합니다. 일반적으로 (원본 ) 라우터의 웹 인터페이스이지만 speedtest 를 사용하여 예상치를 얻을 수 없습니다.

  1. sudo apt-get install iptables
  2. wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
  3. 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 
  4. sudo ./wondershaper eth0 3000 370, 여기서 :

    • 3000는 내 인터넷 연결의 다운 링크 속도 ( kbit )입니다. . 따라서 3Mbit == 3000kbit
    • 370는 다시 kbit로 표시되는 인터넷 연결의 업 링크 속도입니다.
  5. 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를 실행하세요. 먼저 삭제하지 않고 업 링크 및 다운 링크 속도를 변경할 수 있습니다. ,하지만 아프지는 않습니다.

업데이트 : 또한 ICMP 리디렉션 은 형성을 위해 모든 트래픽이 Pi를 통과해야하기 때문입니다.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

댓글

  • 다른 기기에서 연결할 수있는 Wi-Fi 네트워크 이름과 비밀번호를 어떻게 설정하나요?
  • 훌륭한 가이드입니다. wondershaper 제안 : 클라이언트 별 또는 전체적인 제한입니까?
  • @fommil : 위의 가이드에서는 ISP가 제공 한 모뎀 / 라우터 / WiFi 액세스 포인트를 여전히 사용하고 있다고 가정합니다. 그러나 연결하는 모든 클라이언트에게 ” Pi로 트래픽을 보냅니다 “. 이는 일반적으로 ISP 상자의 DHCP 설정에 Pi ‘ s (정적!) IP 주소를 입력하여 수행됩니다. 일반적으로 ” Gateway “, ” 기본 게이트웨이 또는 ” 기본 경로 “.
  • @Bob : 번호 입력은 인터넷 링크의 합계입니다. Wondershaper 스크립트는 수요 에 따라 모든 고객에게 공정한 공유를 시도합니다. 따라서 한 클라이언트 만 인터넷을 사용하는 경우 100 %를 확보해야합니다. 다른 클라이언트가 시작되면 ” 정착 시간 ” (~ 10 초) 후에 각각 50 %를 사용하게됩니다. 등등.
  • 완벽합니다. @fommil에 대한 참고 사항은 내 라우터 중 어느 것도 DHCP를 통해 할당 된 게이트웨이를 설정하는 쉬운 방법을 제공하지 않습니다 (더 많은 라우터가 동일하다고 가정합니다). 결국 라우터에서 DHCP를 끄고 Pi에 DHCP 서버를 설정했습니다. ‘ 상당히 간단한 프로세스입니다 (원하는 경우 가이드 검색).

답변

네트워크 배경이 조금 있으면 가장 먼저 떠오르는 것은 Snort 상자로 사용하는 것입니다. 그런 다음 하나의 인터페이스 만 갖는 것에 대해 걱정할 필요가 없습니다. 모든 트래픽을 Pi로 전달하고이를 최종 장치로 전달하도록 스위치 / 라우터를 설정합니다. 이것은 스위치 포트 모니터로 알려져 있지만 장치는 지원하지 않습니다.이 작업을 수행하려면 관리 형 스위치 가 필요할 수 있습니다. 그러면 Snort가 트래픽을 분석하고 이에 대해보고합니다. Snort에 대한 자세한 정보 http://www.snort.org/

이러한 종류의 설정에서 좋은 점은 Pi가 모든 것을 지켜보고 있다는 것입니다. 데이터와 함께 일렬로 앉아있는 것이 아니라 스위치를 통해 실행됩니다. 소프트웨어가있는 경우 g 이렇게하면 트래픽이 계속 흐를 수 있으며 모니터링되지 않습니다. 두 개의 인터페이스로 설명하는 내용을 사용하면 프로그램이 충돌하고 네트워크가 충돌합니다.

파이를 라우터로 사용하지 않지만 네트워크를 통해 이동하는 트래픽을 모니터링하고보고 할 수 있습니다. .

Answer

라우팅에 Raspberry Pi를 사용했는데 잘 작동했습니다. 말했듯이 Raspberry Pi에는 이더넷 포트가 하나만 있으므로 네트워크 인터페이스가 하나 이상 필요합니다. USB 포트에 연결된 다른 인터페이스를 추가 할 수 있습니다. GSM 모뎀과 Wi-Fi 스틱을 사용했습니다.

참고 사항 :

  • 전원이 공급되는 USB 허브를 사용합니다. Wi-Fi 및 GSM 기기는 Raspberry Pi의 USB 포트가 공급할 수있는 것보다 더 많은 전력을 필요로합니다.
  • Wi-Fi 기기를 구입하는 경우 Linux 지원이 우수한 기기를 구입하세요. 액세스 포인트 모드이며 모든 스틱이 지원하는 것은 아닙니다. linuxwireless.org 에서 확인하세요.

여기 내 블로그 게시물 Wi-Fi 액세스 포인트 설정에 대한 다른 게시물입니다. 이 가이드 는 라우팅 설정에 도움이되었습니다. 라우팅 항목은 Raspberry Pi에만 국한된 것이 아닙니다. 일반적으로 Linux에서 작동하는 모든 것이 가능해야합니다. 세부 사항은 어느 정도에 따라 달라집니다. 사용하는 배포.

Answer

지금까지 약 한 달 동안 Raspberry Pi를 라우터로 사용하고 있습니다. . 가정용 Wi-Fi 라우터가 아닌 실제 상용 Wi-Fi 액세스 포트가있어서이 포트를 사용했습니다. 또한 Wii에서 ” 빌 렸습니다.이는 홈 LAN으로 이동하고 Raspberry Pi의 내장 이더넷은 WAN / 인터넷으로 이동합니다.

가서 IPFire Raspberry Pi 용입니다. 직렬 콘솔이없는 ARM 버전과 안정적인 최신 버전이 필요합니다. ARM 탭을 클릭합니다. ” armv5tel 아키텍처 용 이미지 다운로드 “.

부팅합니다. HDMI TV와 키보드를 연결합니다. 처음 몇 가지 질문에 답합니다. 나머지 구성은 브라우저에서 수행 할 수 있습니다. 홈 네트워크를 사용하므로 그 후에는 TV 나 키보드가 필요하지 않습니다.

너무 어렵지 않았고 챔피언처럼 작동했습니다! 공식적인 지침은 다음과 같습니다. https://wiki.ipfire.org/hardware/arm/rpi/threeplus

마지막 한 가지. USB 전원 Wi-Fi 동글을 사용하려면 Raspberry Pi의 전원 공급 장치를 확인하십시오. 700mA USB 전원 공급 장치는 Raspberry Pi에 전원을 공급하는 데 충분할 수 있지만 Wi에 전원을 공급하는 데 많은 시간이 걸리지 않습니다. -Fi. 전원이 공급되는 USB 허브를 사용하거나 1 ~ 2A USB 전원 공급 장치로 Raspberry Pi에 전원을 공급하십시오.
행운을 빕니다!

답변

(이 부록은 Pi를 LAN의 인터넷 게이트웨이로 구성하는 방법에 대한 가이드 인 내 이전 답변 을 따릅니다.)

전체 인터넷 사용을 모니터링하는 데 만족하지 않고, 내 LAN에서 각 장치의 인터넷 사용을 모니터링하는 도구를 작성했습니다. 이를 통해 콘솔 창에서 즉각적인 사용량을 확인하고 과거 사용량 차트를 생성하여 하룻밤 사이에 발생한 일을 확인할 수 있습니다.


Rhodes , LAN 장치의 실시간 및 과거 네트워크 사용량을 모니터링하기위한 도구 (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 

첫 번째 열은 일반적으로 인터넷에 업로드하는 것을 의미합니다. 이에 대한 예외는 ISP로부터받은 데이터를 요청한 장치 (즉, 다운로드)를 전송하는 ADSL 라우터 자체 (위 샘플의 home.gateway)입니다. 물론 업로드도 인터넷으로 전송하지만 LAN에 없기 때문에이 도구에 표시되지 않는 ADSL 모뎀을 사용하여 전송합니다.

다른 예외는 Raspberry Pi ( ” 위의 Flux ) 자체가 관리하는 모든 데이터를 양방향으로 전송합니다.

그러나 이러한 예외를 제외하고 TX (전송) 번호는 업로드를 의미하고 RX (수신 ) 다운로드 할 번호. 세 번째 열은 장치의 MAC 주소 (일반적인 “:”또는 “-“구분 기호 없음)입니다. 네 번째 열은 알려진 경우 사람이 읽을 수있는 장치 이름을 표시합니다.

차트 lighttpd (index.py

를 실행하여 생성됩니다. 가/etc/lighttpd/lighttpd.confindex-file.names구성 설정에 추가되었습니다. 수동으로 실행하기 만하면 일부 이미지와 HTML을 STDOUT으로 인쇄합니다. 브라우저에서 열 수있는 파일로 리디렉션 할 수 있습니다.

./index.py > index.html 

그런 다음 원하는 위치에서 index.html을 엽니 다. 브라우저.

설치 요구 사항 (모두 apt-get install로 설치할 수 있음) :

  • tcpdump-네트워크 트래픽 캡처 및 설명을위한 명령 줄 도구
  • rrdtool-라운드 로빈 데이터베이스 도구, 시계열 데이터 기록 및 차트
  • rrdcached-라운드 로빈 데이터베이스 캐싱 데몬, 여러 RRD 파일을 동시에 작업 할 때 오버 헤드를 줄이는 서비스입니다.
  • pypy-upstream (Python 프로그래밍 언어의 빠른 구현)

    • 원하는 기본 Python을 사용할 수 있습니다. python rhodes.py (pypy는 JIT (Just-In-Time) 컴파일을 수행하는 Python 프로그래밍 언어의 대체 구현이므로 장기 실행 스크립트는 더 많은 메모리 비용으로 CPU주기를 덜 사용합니다.)

사용 참고 사항 : “tcpdump”도구 이 스크립트에서 사용하려면 원시 네트워크 트래픽에 액세스하려면 루트 권한이 필요합니다. 이는 스크립트가 시작될 때 sudo tcpdump를 실행하여 이루어 지므로 비밀번호를 입력하라는 메시지가 표시 될 수 있습니다. 개인적으로 /etc/sudoers에 NOPASSWD 규칙을 추가했기 때문에 메시지가 표시되지 않습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다