두 개의 이더넷 포트가 있는 서버가 있는데, 각각은 별도의 NIC(eth0 및 eth1)에서 실행됩니다. UDP(다른 트래픽 없음)를 통해 비디오를 스트리밍하는 별도의 시스템에 eth0을 연결하고 다른 인터페이스(eth1)는 게이트웨이/라우터에 연결하고 싶습니다.
UDP 트래픽 포트가 더 넓은 네트워크에 연결되지 않아도 상관 없습니다.
감사합니다!
편집: 이 질문은 보류 중이므로 아래 설명을 바탕으로 내 시스템을 더욱 명확하게 설명하고 싶습니다. 내 시스템은 두 개의 이더넷 NIC가 있는 Linux를 실행하는 시스템으로 구성됩니다. 이 포트 중 하나에서 보안 카메라로 직접 LAN-LAN 연결을 통해 UDP 스트림을 수신하고 있습니다. 카메라에서 패킷을 읽을 수는 있지만 tcpdump
이를 통해 들어오는 패킷은 본 적이 없습니다. 비디오를 표시하는 데 사용할 계획입니다 gstreamer
.
두 포트 모두 고정 IP 주소를 가지며 다음과 같이 구성됩니다.
eth0 Link encap:Ethernet HWaddr 5C:F8:21:34:80:F6
inet addr:192.168.1.233 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::5ef8:21ff:fe34:80f6%132688/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1237 errors:0 dropped:0 overruns:0 frame:0
TX packets:90 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:113089 (110.4 KiB) TX bytes:14016 (13.6 KiB)
Interrupt:99
eth1 Link encap:Ethernet HWaddr 5C:F8:21:34:80:F7
inet addr:192.168.1.234 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1%132688/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:330 errors:0 dropped:0 overruns:0 frame:0
TX packets:330 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:277171 (270.6 KiB) TX bytes:277171 (270.6 KiB)
내부 라우팅 테이블은 다음과 같습니다.
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth1
카메라는 해당 주소에 있으며 192.168.1.239
UDP를 통해 내 서버로 직접 방송됩니다. (대상 MAC는 패킷에 하드코드되어 있습니다.) MJPEG 스트림을 브로드캐스팅하고 있으며 저장된 패킷을 받으면 tcpdump
MJPEG로 재구성할 수 있습니다.
gstreamer
그러나 다음 명령을 사용할 때 :
gst-launch-1.0 udpsrc multicast-iface=eth0, port=1234 ! filesink location=foo
foo
데이터가 저장되지 않습니다. 나는 과거에 gstreamer를 사용하여 UDP 스트림을 저장하기 위해 이 시스템을 사용했지만 두 포트가 모두 사용 중일 때는 그렇지 않았습니다. IE의 경우 비디오는 다른 컴퓨터에서 나와 라우터를 통해 문제의 서버로 이동합니다.
그러면 서버가 명확하게 보고 이해하는(적어도 삭제하지는 않음) 이러한 패킷이 내 gstreamer 프로그램에 도달할 수 없는 이유는 무엇입니까?
답변1
일반적으로 RFC1918(개인) 공간의 다른 비트에서 자체 /30 서브넷을 교차 연결에 할당합니다. 그래서 당신은 다음과 같이 할 것입니다 :
- 192.168.1.234/24는 eth1의 LAN입니다.
- 192.168.255.1/30은 eth0(교차 연결)에 위치한 이 머신입니다.
- 192.168.255.2/30은 비디오 소스이며 교차 연결의 한쪽 끝에 있습니다.
UDP 연결을 위한 IP 주소로 192.168.255.1 및 192.168.255.2를 사용하는 경우 eth0을 통해 전송됩니다.
LAN과 동일한 서브넷을 사용하여(/32 라우팅, 정책 라우팅 또는 브리징 트릭 사용) 이를 달성할 수 있지만 이러한 모든 방법은 더 복잡하고 임의 프로그램 혼란으로 인한 문제를 일으킬 가능성이 더 높습니다.
(/x 표기법에 대한 빠른 설명: 이는 왼쪽/최상위 비트부터 시작하여 1[바이너리!]의 수를 세어 넷마스크를 지정하는 간단한 방법입니다. 따라서 /30은 넷마스크 255.255.255.252를 의미합니다. )