라즈베리 파이를 라우터로 사용하십니까?


50

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

주로 네트워크를 모니터링하는 데 사용하고 싶습니다. 이더넷에 대한 입력 및 출력이 있으면 좋을 것입니다. 그렇지 않으므로 이더넷 입력을 사용하여 네트워크를 모니터링하는 것이 매우 효과적인지 궁금합니다. 그런 다음 USB 동글을 Wi-Fi 라우터로 사용합니다. 누구든지 이런 일을 했습니까? 인터넷 속도가 느려 집니까?


3
인터넷 연결 속도에 따라 다릅니다. 광산은 100Mb이므로 속도가 느려질 것입니다.)
John La Rooy

3
나는 30Mbps의 인터넷 연결을 가지고 있으며 현재 5Mbps의 트래픽으로 snort가있는 인라인 라즈베리 파이는 ~ 50-95 %의 CPU와 85 %의 메모리를 소비합니다. 내 설정은 아직 조정되지 않았지만 실제 수치를 보여주고 싶습니다.
파이프

누구든지 raspberry pi를 사용하여 사용자 지정 라우터에서 대역폭을 어떻게 할당합니까? 예를 들어, 3Mbps의 인터넷 연결 속도가 있으며 10 명의 사용자가 있습니다. 어떻게 구분할 수 있습니까? 3Mbps 속도. 감사. 이해하시기 바랍니다. :)
kirbs

2
안녕하십니까. 다른 질문에 대해서는 질문하지 마십시오. 대신 페이지 상단에있는 질문하기 링크를 사용하여 새 질문을여십시오 . 감사합니다.

답변:


30

모델 B와 함께 제공되는 이더넷 포트 하나만 사용하여 트래픽 쉐이핑이있는 라우터로 모델 B를 사용하고 있습니다. 방법에 대한 빠르고 더러운 내용은 다음과 같습니다.

  1. IPv4 전달을 활성화 하면 Pi가 수신하는 모든 트래픽을 전달하여 라우터로 작동합니다
  2. 정적 네트워크 구성으로 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
    
  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. 먼저 지우지 않고 업 링크 및 다운 링크 속도를 변경할 수 있지만 아프지 않습니다.

업데이트 : 또한 모든 트래픽이 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


다른 장치에 연결할 수있는 Wi-Fi 네트워크 이름과 암호를 어떻게 설정합니까?
fommil

훌륭한 가이드. wondershaper그래도 귀하의 제안 에 대해 질문이 있습니다 : 클라이언트 당 또는 전체 한도입니까?
Bob

@fommil : 위의 가이드는 ISP가 제공 한 모뎀 / 라우터 / WiFi 액세스 포인트를 여전히 사용한다고 가정하지만 연결하는 모든 클라이언트에게 "Pi에 트래픽 보내기"가되도록 구성합니다. 일반적으로 ISP 상자의 DHCP 설정에 Pi (정적!) IP 주소를 입력하면됩니다. 일반적으로 "게이트웨이", "기본 게이트웨이"또는 "기본 경로"라는 필드에 있습니다.
RobM

@Bob : 입력 한 숫자는 인터넷 링크의 총계입니다. wondershaper 스크립트는 필요따라 모든 클라이언트에게 이것을 공유하려고 시도합니다 . 따라서 한 명의 클라이언트 만 인터넷을 사용하는 경우 100 %를 확보해야합니다. 다른 클라이언트가 시작되면 약간의 "안정 시간"(~ 10 초) 후에 각각 50 % 씩 사용됩니다.
RobM

완전한. @fommil에 대한 참고 사항으로, 내 라우터 중 어느 것도 (그리고 더 많은 것이 동일하다고 가정하지 않음) DHCP를 통해 할당 된 게이트웨이를 설정하는 쉬운 방법을 제공하지 않습니다. 라우터에서 DHCP를 끄고 Pi에서 DHCP 서버를 설정했습니다.이 과정은 매우 간단합니다 (원하는 경우 가이드를 찾으십시오).
Bob

10

약간의 네트워크 배경을 가지고 있기 때문에 가장 먼저 염두에 두어야 할 것은 Snort 상자로 사용하는 것이므로 인터페이스가 하나만있는 것에 대해 걱정할 필요가 없습니다. 모든 트래픽을 Pi로 전달하도록 스위치 / 라우터를 설정하고 엔드 디바이스로 전달합니다. 이것을 스위치 포트 모니터라고하지만 장치가이를 지원하지 않을 수 있습니다. 이를 위해 관리되는 스위치 가 필요할 수 있습니다 . Snort는 트래픽을 분석하고보고합니다. Snort에 대한 추가 정보 http://www.snort.org/

이런 종류의 설정에 대한 좋은 점은 Pi가 데이터와 함께 앉아 있지 않고 스위치를 통해 실행되는 모든 것을보고 옆에 앉아 있다는 것입니다. 이런 방식으로 소프트웨어 결함이 발생하더라도 트래픽은 계속 모니터링 될 수 있습니다. 두 가지 인터페이스로 설명하는 내용으로 인해 프로그램이 중단되고 네트워크가 중단됩니다.

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


7

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

참고 사항 :

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

다음은 라우팅에 대한 블로그 게시물Wi-Fi 액세스 지점 설정에 대한 다른 게시물 입니다. 이 가이드 는 라우팅 설정에 도움 되었습니다. 라우팅 재료는 라즈베리 파이에만 국한되지 않습니다. 일반적으로 Linux에서 작동하는 모든 것이 가능해야합니다. 세부 사항은 사용하는 배포판에 따라 다릅니다.


4

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에 전원을 공급하십시오.
행운을 빕니다!


1

(이 부록 은 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.pyindex-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했으므로 메시지가 표시되지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.