나는질소회로망V아이디어오른쪽에코더는 이더넷을 통해 Raspberry Pi에 직접 연결되고 Raspberry Pi는 이더넷을 통해 연결됩니다 wlan0
. Raspberry Pi의 VPN 연결을 통해 NVR의 모든 트래픽을 라우팅하고 싶습니다.
VPN을 시작하는 방법은 다음과 같습니다.
openvpn --config /home/pi/my_conf.conf --pull-filter ignore redirect-gateway --route-noexec
이 명령을 통해 서버가 푸시한 경로를 무시하고 있습니다.OpenVPN 튜토리얼에서 이것을 찾았습니다. 확인해 보니 tun0
VPN 연결 후 디바이스가 생성된 것으로 확인되었습니다.
따라서 NVR에서 VPN으로 트래픽을 라우팅하려면 eth0
NVR이 사용하는 범위 내의 고정 IP를 Raspberry Pi의 인터페이스에 제공해야 합니다. 나는 다음과 같은 방법으로 해냈습니다 /etc/dhcpcd.conf
.
interface eth0
static ip_address=192.168.1.1/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
내 Raspberry Pi에는 wlan0
게이트웨이가 있으므로 192.168.0.1
충돌이 없습니다. 이제 NVR 범위에 있는 eth 인터페이스에 대한 IP 주소가 있고 VPN 서버에 연결되었으므로 NVR의 IP 주소 에 액세스할 수 있는 tun0
경로를 추가하기 만 하면 됩니다 tun0
. 192.168.0/24 범위의 일부 IP 카메라에 액세스하고 싶기 때문에 라우팅 테이블에 다음을 수행합니다.
pi@raspberrypi:~ $ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 304 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 304 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.255.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
측정항목이 있기 때문에 해당 범위의 모든 항목이 192.168.1.0/24
통과되는 것을 볼 수 있습니다 .tun0
0
dnsmasq
NVR 에서도 eth0
고정 IP 주소를 사용하고 있지만 192.168.1.9
.
분명히 NVR의 어떤 카메라에도 접근할 수 없습니다. NVR의 연결을 192.168.1.189
카메라에 추가해 보았습니다. 나는 달리기를 시도했고 tcpdump
이것이 eth0
기본적으로 내가 보는 것입니다:
17:10:46.673062 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.1.189 tell 192.168.1.9, length 46
NVR( 192.168.1.9
)이 누구인지 찾으려고 시도하고 있지만 192.168.1.189
응답이 없습니다. 내 생각에는 아무것도 라우팅되지 않는 것 같습니다. 나는 또한 192.168.1.189
그것이 작동하는지 확인하기 위해 라즈베리 파이에 핑을 시도했습니다. 첫 시도에 성공했어요. 몇 분 후에는 더 이상 핑을 보낼 수 없으며 그 이유를 모르겠습니다. 그러나 Ping은 192.168.1.1
항상 작동합니다.
고쳐 쓰다:
나는 내가 겪고 있는 문제를 어느 정도 이해합니다. NVR은 192.168.1.0/24
서브넷에 있고 동일한 서브넷에 있는 카메라에 액세스하려고 하기 때문에 IP 패킷이 게이트웨이(Raspberry Pi)로 전송되지 않습니다. 대신 192.168.1.189
tcpdump에서 볼 수 있듯이 ARP 요청을 보내 카메라가 어디에 있는지 알아내려고 합니다 .
이 문제를 해결하기 위해 NVR의 서브넷을 으로 변경 192.168.2.0/24
하고 Raspberry Pi의 인터페이스에 주소를 제공했습니다 192.168.2.1
. eth0
이제 NVR이 카메라와 일부 Amazon 서버 등에 보내는 모든 패킷을 볼 수 있습니다. 그러나 응답이 없었습니다. NVR은 패킷을 보내기만 하고 아무것도 받지 않습니다. 확인해보니 tun0
도착경로에 이상이 없으니 패킷은 통과해야 할 것 같습니다. 그러나 패킷은 반환되지 않습니다.
고쳐 쓰다:
수동으로 경로를 추가하는 대신 클라이언트에서 열린 VPN 구성 파일에 다음을 추가했습니다.
route 192.168.1.0 255.255.255.0
route-metric 0
route-nopull
바로 밑 client
. VPN에 연결하면 이제 라우팅 테이블에서 이 경로를 볼 수 있습니다. Raspberry Pi에서 ping을 실행할 수도 있으며 작동합니다. 하지만 NVR은 여전히 패킷을 보내기만 하고 어떤 정보도 받지 못하는 것 같습니다.
중요한:실행하면 카메라로 tcpdump -vvv -i eth0
많은 패킷이 이동하는 것을 볼 수 있습니다 . 그들을 통과하게 할 측정값이 있는 경로가 있기 때문에 192.168.1.189
그들은 가야 합니다 . 달리면 몇 분 동안 달려도 아무것도 보이지 않는다. 그래서 일이 거기에서 진행되지 않습니다. 그러나 Raspberry Pi 내부에서 (ssh를 통해) 실행하면 tcpdump 에서 모든 ping 패킷을 볼 수 있으며 이는 경로가 작동하는지 확인합니다. 그러나 이더넷에서 들어오는 패킷에는 작동하지 않습니다.tun0
0
tcpdump -vvv -i tun0
ping 192.168.1.189
tun0