Como rotear o tráfego da ethernet para um dispositivo tun (criar uma porta ethernet VPN)

1

Eu tenho uma ecorder N rede V ideo R conectada a um pi de framboesa diretamente pela ethernet, e o raspberry pi está conectado à internet através de wlan0 . Eu quero rotear todo o tráfego do NVR através de uma conexão VPN no pi framboesa.

Veja como eu estou começando a VPN:

openvpn --config /home/pi/my_conf.conf --pull-filter ignore redirect-gateway --route-noexec 

Estou ignorando as rotas enviadas pelo servidor por meio desses comandos que encontrei nos tutoriais de VPN abertos . Após a inspeção, vejo que um dispositivo tun0 é criado depois que eu me conecto à minha VPN.

Portanto, para rotear o tráfego do NVR para a VPN, preciso fornecer à interface eth0 do raspberry pi um IP estático no intervalo usado pelo NVR. Eu fiz isso com o seguinte em /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

Meu framboesa wlan0 tem o gateway 192.168.0.1 , portanto não há conflito. Agora que eu tenho um endereço IP para a interface eth que está no intervalo do NVR, e eu tenho uma conexão com o servidor VPN no tun0 , tudo que eu preciso fazer é adicionar uma rota para tun0 para os endereços IP que o NVR vai acessar. Desde que eu quero acessar algumas câmeras IP no intervalo 192.168.0 / 24, aqui está o que eu fiz para a minha tabela de roteamento:

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

você pode ver que tudo no intervalo 192.168.1.0/24 passa por tun0 porque tem métrica 0 .

Embora eu também esteja executando dnsmasq on eth0 , também estou usando um endereço IP estático no NVR, que é 192.168.1.9 .

Obviamente não consigo acessar nenhuma câmera no NVR. Tentei adicionar conexão no NVR à câmera 192.168.1.189 . Eu tentei executar tcpdump em eth0 , isso é principalmente o que eu vejo:

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

O NVR ( 192.168.1.9 ) está tentando descobrir quem é 192.168.1.189 , mas não há resposta. Nada está sendo encaminhado, eu acho. Eu também tentei pingar 192.168.1.189 no raspberry pi apenas para ver se funcionava. Funcionou a primeira vez que tentei. Depois de alguns minutos, não consigo mais fazer ping, não sei por quê. Ping 192.168.1.1 sempre funciona embora.

ATUALIZAÇÃO:

Eu entendi o problema que estou tendo. Como o NVR está na sub-rede 192.168.1.0/24 e está tentando acessar uma câmera na mesma sub-rede, seus pacotes IP não são enviados para o gateway (raspberry pi). Em vez disso, ele tenta descobrir onde está 192.168.1.189 (a câmera) enviando solicitações ARP como eu estava vendo no tcpdump.

Para resolver este problema, alterei a sub-rede do NVR para 192.168.2.0/24 e dei o endereço 192.168.2.1 à interface eth0 do raspberry pi. Agora eu posso ver todos os pacotes enviados pelo NVR para as câmeras e para alguns servidores da Amazon e assim. No entanto, não há resposta. O NVR envia apenas pacotes, mas não recebe nada. Eu verifiquei e as rotas para tun0 estão ok, então os pacotes devem passar por isso. No entanto, os pacotes não estão retornando.

ATUALIZAÇÃO:

em vez de adicionar rotas manualmente, adicionei o seguinte ao meu arquivo de configuração vpn aberto no cliente:

route 192.168.1.0 255.255.255.0
route-metric 0
route-nopull

logo abaixo de client . Agora posso ver essa rota na tabela de roteamento depois de conectar minha VPN. Eu também posso pingar a partir do pi framboesa e funciona. No entanto, parece que o NVR ainda envia apenas pacotes e não recebe nada

Importante: Se eu executar tcpdump -vvv -i eth0 , vejo muitos pacotes destinados a 192.168.1.189 , que é minha câmera. Eles devem ir para tun0 porque há uma rota com métrica 0 que faz com que eles passem por ela. Se eu correr tcpdump -vvv -i tun0 não vejo nada, mesmo que eu deixe por alguns minutos. Então as coisas não estão sendo encaminhadas por lá. Se, no entanto, eu executar ping 192.168.1.189 dentro do meu pi de framboesa (através de ssh) eu posso ver todos os pacotes de ping no tcpdump de tun0 , o que confirma que a rota funciona. Não está funcionando para os pacotes vindos da ethernet.

    
por Guerlando OCs 01.09.2018 / 19:23

0 respostas