Raspberry Pi가 라우터로부터 IP를 수신하고 다른 IP를 다른 장치에 전달하도록 하려면 어떻게 해야 합니까?

Raspberry Pi가 라우터로부터 IP를 수신하고 다른 IP를 다른 장치에 전달하도록 하려면 어떻게 해야 합니까?

이더넷 스위치를 사용하여 원하는 결과를 얻을 수 있다는 것을 알고 있지만 더 저렴한 솔루션을 사용하여 이것이 달성될 수 있는지 궁금합니다.

아이디어는 다음과 같습니다.

  • Rapsberry Pi에는 두 개의 이더넷 포트가 있습니다. 하나는 내장되어 있고 다른 하나는 저렴한 USB-이더넷 어댑터입니다.

  • 포트 중 하나가 로컬 라우터에 직접 연결되어 DHCP IP 주소를 받습니다. 192.168.1.2라고 가정해 보겠습니다.

  • 다른 포트는 다른 장치에 연결됩니다. 동일한 라우터에 직접 연결되어 있다고 생각하고 라우터로부터 DHCP IP 주소를 받으려면 이 장치가 필요합니다. 주소가 192.168.1.3이라고 가정합니다.

기본적으로 RPi가 이더넷 스위치처럼 작동하여 자체적으로 IP를 요청한 다음 다른 요청을 다른 장치로 라우팅하기를 원합니다.

스위치를 사용하여 이 작업을 수행하는 방법을 설명하는 그림은 다음과 같습니다.

일부 장치 및 스위치가 있는 RPi

내가 원하는 작동 방식은 다음과 같습니다.

일부 장치 및 이더넷 어댑터가 있는 RPi

이제 5개의 3포트 스위치 대신에 "RPi 플러스 장치" 쌍이 5개(또는 그 이상) 있다고 상상해 보십시오. 여기에는 별도의 전원 공급 장치와 2개의 추가 전선이 필요합니다.

이 설정이 RPi의 이더넷 포트 및 이더넷 어댑터와 작동하도록 하는 Linux 구성 옵션이 있습니까?

답변1

설정을 통해 이를 달성할 수 있어야 합니다.다리두 네트워크 인터페이스 사이.

통합 이더넷 인터페이스가 eth0USB 어댑터를 통해 켜져 있다고 가정하면 eth1다음과 같은 구성이 /etc/network/interfaces작동합니다( bridge-utils패키지가 설치되어 있고 커널이 이를 지원하는 경우).

auto lo br0
iface lo inet loopback

iface eth0 inet manual

iface eth1 inet manual

iface br0 inet dhcp
    bridge_ports eth0 eth1

을 실행하면 ifconfig인터페이스가 표시됩니다(제 기억이 맞다면 아마도 MAC 주소가 있을 것입니다 br0). eth0이 인터페이스는 실제로 RPi의 병합된 인터페이스가 되며 라우터에서 해당 IP 주소를 가져옵니다.

다른 장치의 트래픽은 브리지를 통해 흘러야 하며 해당 IP 주소도 얻어야 합니다. 트래픽이 통과하지 않는 경우 통과를 허용해야 할 수도 있습니다 iptables. 당신도 옳을 수도 있습니다. . . 관심이 있다이 기사.

(그런데, 많은 어댑터가 동시에 여러 MAC 주소를 사용할 수 없기 때문에 이것이 반드시 무선 LAN 어댑터에 적용되는 것은 아닙니다.)

답변2

가장 좋은 방법은 Pi를 고정 IP로 설정하는 것입니다.

거기에서 DHCP 서버를 설치합니다

 apt-get install isc-dhcp-server 

그런 다음 구성 파일을 편집할 수 있습니다.

 /etc/conf.d/dhcp 

다음 줄을 사용하여 수신할 인터페이스를 DHCP 서버에 알려줍니다.

 DHCP4_ARGS="... eth0" 

그런 다음 다음 명령을 사용하여 서버 데몬을 시작할 수 있습니다.

 sudo /etc/rc.d/dhcp4 start 

이제 eth0에 연결된 IP를 브로드캐스트하는 모든 클라이언트는 dhcp 서버에 의해 관리됩니다.

필요에 따라 eth0을 eth1로 바꿔야 할 수도 있습니다.

답변3

Pi USB+이더넷은 Pi GPU의 단일 포트에 연결되는 단일 멍청한 온보드 칩에서 나옵니다. 즉, USB-이더넷 어댑터는 내장 이더넷에 "직접 연결"되지 않습니다.

따라서 한 인터페이스에서 다른 인터페이스로 데이터를 전송하려고 하면 CPU가 모든 바이트를 읽어야 하고 CPU가 GPU에 다른 인터페이스(외부 칩에서)를 선택하라고 지시할 때까지 기다려야 하기 때문에 처리량이 저하됩니다. 데이터를 GPU로 다시 보내고 다른 인터페이스로 출력합니다.

물론 "청크"를 한 번에 읽고 쓰는 것이 더 효율적이지만 Pi가 한 인터페이스에서 청크를 보내는 동안 다른 인터페이스의 연결이 끊어지므로 들어오는 모든 것이 "삭제"되므로 제거해야 합니다. 재전송...

이더넷 및 USB "동글" 드라이버가 인코딩되는 방식에 따라 100mbs 이더넷이 10mbs 미만으로 줄어들 수 있습니다(kbs 범위에서 일부 보고서를 본 적이 있습니다).

관련 정보