Estou tentando configurar um servidor openvpn em um raspberry pi para atuar como um ponto de extremidade para conexões rodoviárias, mas o dispositivo está na rede, não como o gateway de qualquer uma das máquinas na rede e suspeito que este seja o problema.
Eu olhei para MUITOS tutoriais e tenho a conexão vpn corretamente, e o roteamento do cliente está OK, pois posso me conectar ao raspi através do túnel, mas se eu fizer ping em qualquer outra coisa na rede, recebo tempos limite de solicitação. Minha única diferença é que estou usando uma conexão tcp, não uma UDP, mas ajustei as regras de firewall para o conjunto.
Eu tentei várias regras diferentes do iptables, habilitei o encaminhamento e até instalei uma rota estática no cyberoam para tentar fazer isso funcionar.
Minhas configs são as seguintes.
servidor...
local 192.168.1.84
port 1194
proto tcp
dev tun
ca /etc/openvpn/ca.crt # generated keys
cert /etc/openvpn/folkarch.crt
key /etc/openvpn/folkarch.key # keep secret
dh /etc/openvpn/dh2048.pem
server 10.8.0.0 255.255.255.0 # internal tun0 connection IP
ifconfig 10.8.0.1 10.8.0.2
ifconfig-pool-persist ipp.txt
push "route 10.8.0.1 255.255.255.255"
#route 192.168.1.0 255.255.255.0
push "route 10.8.0.0 255.255.255.0"
push "route 192.168.1.0 255.255.255.0"
#push dhcp-option DNS 8.8.8.8"
push "redirect-gateway def1"
keepalive 30 240
comp-lzo # Compression - must be turned on at both end
persist-key
persist-tun
status log/openvpn-status.log
verb 3 # verbose mode
client-to-client
duplicate-cn
configuração do cliente para corresponder, nada muito nele ..
firewall.sh
#!/bin/bash
#/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 192.168.1.84
/sbin/iptables -A INPUT -i tun+ -j ACCEPT
/sbin/iptables -A OUTPUT -o tun+ -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
/sbin/iptables -I FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -d 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables -I FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -d 10.1.0.0/8 -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 1194 -j ACCEPT
/sbin/iptables -A FORWARD -i tun+ -j ACCEPT
/sbin/iptables -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
A primeira linha comentada é outra tentativa de fazê-la funcionar.. e isso é chamado em /etc/network/interfaces como um pré-up.
A rota estática é 10.8.0.0/24, gateway 192.168.1.84, PortA no cyberoam.
Estou realmente preso aqui, como eu disse, posso facilmente acessar o dispositivo 192.168.1.84, mas nada mais na lan.
Alguma ideia??
Peter.
Informações adicionais... tabela de rotas de um cliente conectado (mac neste caso).
% netstat -rn pnunn@Peters-MacBook-Pro
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.0.1 UGSc 68 5 en0
default 10.8.0.5 UGScI 3 0 utun0
10.8/24 10.8.0.5 UGSc 1 0 utun0
10.8.0.5 10.8.0.6 UHr 7 0 utun0
10.8.0.5/32 link#19 UCS 1 0 utun0
127 127.0.0.1 UCS 1 0 lo0
127.0.0.1 127.0.0.1 UH 6 1179613 lo0
169.254 link#4 UCS 1 0 en0
192.168.0 link#4 UCS 4 0 en0
192.168.0.1/32 link#4 UCS 2 0 en0
192.168.0.1 c0:3f:e:e4:c:c UHLWIir 70 902 en0 375
192.168.0.4 link#4 UHLWIi 1 7 en0
192.168.0.5/32 link#4 UCS 2 0 en0
192.168.0.5 34:36:3b:cd:ca:20 UHLWIi 1 7 lo0
192.168.0.6 link#4 UHLWIi 1 0 en0
192.168.0.255 link#4 UHLWbI 1 894 en0
192.168.1 10.8.0.5 UGSc 2 5 utun0
255.255.255.255/32 link#4 UCS 2 0 en0
255.255.255.255 link#4 UHLWbI 1 13 en0
255.255.255.255/32 link#19 UCSI 1 0 utun0
O cliente VPN deve ter rota para acessar a rede, mas as máquinas na rede também devem ter rotas para enviar a resposta.
Portanto, você deve instruir as máquinas da rede local que, para acessar o cliente vpn, elas devem enviar o pacote para o endereço IP do raspberry PI (192.168.1.84)
Para confirmar que esse é o problema, adicione uma rota em uma máquina de rede: rota 10.8.0.0/24 via 192.168.1.84
No Windows, você pode adicioná-lo em um prompt de comando (como administrador) com
no linux
Se isso permitir que esta máquina se comunique, você poderá adicionar a rota no dispositivo que atua como gateway para a rede.