이더넷에서 Tun 장치로 트래픽을 라우팅하는 방법(VPN 이더넷 포트 생성)

이더넷에서 Tun 장치로 트래픽을 라우팅하는 방법(VPN 이더넷 포트 생성)

나는질소회로망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 튜토리얼에서 이것을 찾았습니다. 확인해 보니 tun0VPN 연결 후 디바이스가 생성된 것으로 확인되었습니다.

따라서 NVR에서 VPN으로 트래픽을 라우팅하려면 eth0NVR이 사용하는 범위 내의 고정 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통과되는 것을 볼 수 있습니다 .tun00

dnsmasqNVR 에서도 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.189tcpdump에서 볼 수 있듯이 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 패킷을 볼 수 있으며 이는 경로가 작동하는지 확인합니다. 그러나 이더넷에서 들어오는 패킷에는 작동하지 않습니다.tun00tcpdump -vvv -i tun0ping 192.168.1.189tun0

관련 정보