OpenVPN e DD-WRT

OpenVPN e DD-WRT

Estou tentando configurar um novo roteador dd-wrt para funcionar com OpenVpn. No entanto, o OpenVpn que preciso usar possui um arquivo de configuração gerado automaticamente. Isso se parece com:

# Automatically generated OpenVPN client config file
# Generated on Wed Sep 11 17:15:39 2013 by ip-10-164-12-159
# Note: this config file contains inline private keys
#       and therefore should be kept confidential!
# Note: this configuration is user-locked to the username below
# OVPN_ACCESS_SERVER_USERNAME=openvpn
# Define the profile name of this particular configuration file
# OVPN_ACCESS_SERVER_PROFILE=-redacted-
# OVPN_ACCESS_SERVER_CLI_PREF_ALLOW_WEB_IMPORT=True
# OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_CONNECT=True
# OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_XD_PROXY=True
# OVPN_ACCESS_SERVER_WSHOST=-redacted-
# OVPN_ACCESS_SERVER_WEB_CA_BUNDLE_START
# -----BEGIN CERTIFICATE-----
# -redacted-
# -----END CERTIFICATE-----
# OVPN_ACCESS_SERVER_WEB_CA_BUNDLE_STOP
# OVPN_ACCESS_SERVER_IS_OPENVPN_WEB_CA=0
# OVPN_ACCESS_SERVER_ORGANIZATION=OpenVPN Technologies, Inc.
setenv FORWARD_COMPATIBLE 1
client
proto udp
nobind
remote -redacted-
port 443
dev tun
dev-type tun
ns-cert-type server
reneg-sec 604800
sndbuf 100000
rcvbuf 100000
auth-user-pass
# NOTE: LZO commands are pushed by the Access Server at connect time.
# NOTE: The below line doesn't disable LZO.
comp-lzo no
verb 3
setenv PUSH_PEER_INFO

<ca>
-----BEGIN CERTIFICATE-----
-redacted-
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
-redacted-
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
-redacted-
-----END PRIVATE KEY-----
</key>

key-direction 1
<tls-auth>
#
# 2048 bit OpenVPN static key (Server Agent)
#
-----BEGIN OpenVPN Static key V1-----
-redacted-
-----END OpenVPN Static key V1-----
</tls-auth>

Se houver um SSH em meu roteador (isso significa que ativei o sshd), posso usar esta configuração para conectar-me ao servidor OpenVpn. Se eu olhar para a página de controle de acesso do servidor VPN, é mostrado que me conectei com sucesso. No entanto, acredito que a tabela de roteamento do dd-wrt não está enviando tráfego do dispositivo wifi para a VPN.

Sou muito novo em roteamento e não consegui trabalhar nenhum dos tutoriais do dd-wrt (todos eles assumem que você usa outro tipo de configuração, que não posso usar). Portanto, minhas perguntas estão divididas em duas partes:

  1. Alguém pode me orientar na configuração do iptables (ou o que quer que envie o tráfego do dispositivo de rede wifi) de maneira programável para que eu possa executar o script iptables e iniciar o OpenVPN no roteador.

  2. Como faço para alterar isso para funcionar apenas em um VAP (ponto de acesso virtual) ou apenas com determinados endereços IP (assim apenas o dispositivo com ip de xxxx conectado ao AP passa pela VPN).

Nota: normalmente gosto de ter esses scripts no meu computador e, em seguida, ssh-los em qualquer roteador dd-wrt disponível e, em seguida, executá-los para abrir uma conexão VPN.

Passar pelo google e este site não me ajudou muito até agora.

Responder1

Estou falando principalmente com base em meus planos de mudar minha configuração doméstica do OpenVPN para o OpenWRT. Atualmente está implementado no Fedora18, mas gostaria de usar a máquina de teste para outras coisas. Imagino que o DD-WRT seja semelhante, mas pode haver algumas imprecisões devido a dificuldades de implementação. Espero que alguém com mais experiência em DD-WRT seja capaz de me apoiar e suavizar quaisquer solavancos.

A dev tundiretiva significa que você está usando uma sub-rede separada, geralmente definida usando a serverdiretiva (suponho que esta parte seja tratada na página Gerenciamento de VPN). Por exemplo, server 10.0.0.0 255.255.255.0, significaria que seus clientes receberiam um endereço no adaptador virtual de seus clientes dentro desse intervalo.

Se este dispositivo for o seu roteador de Internet, ele estará sendo usado como gateway padrão da sua rede. Se o seu dispositivo sem fio não tiver uma rota estática para uma determinada rede definida, ele solicitará o gateway padrão. O que suspeito que esteja acontecendo é que suas regras de iptables não estão configuradas para procurar e aceitar qualquer tráfego da sua sub-rede VPN, com base na interface de entrada

Você pode visualizar a configuração do iptables usando iptables -nvL --line-numbers. As pessoas que desejam usar seu dispositivo como roteador encontrariam algo como o seguinte.

  1. Aceite conexões estabelecidas.
  2. Aceite conexões com endereços locais da Internet correspondentes a quaisquer regras de encaminhamento de porta que você tenha em vigor.
  3. Aceite o tráfego da sub-rede local.
  4. Abandone/rejeite todas as tentativas restantes que cruzem a cadeia de regras.

Se a sua sub-rede OpenVPN não for mencionada no estágio 3, ela atingirá o estágio 4 e cairá.

Esses procedimentos são organizados em cadeias de regras baseadas na tarefa. O que estou planejando fazer é definir uma cadeia para minhas sub-redes OpenVPN no início de "zone_lan_forward", a cadeia de regras que lida com conexões locais. É mais ou menos assim:

iptables -N zone_lan_vpn

iptables -I zone_lan_forward -i tun+ -j zone_lan_vpn

O que você fará a seguir depende do tipo de restrições que deseja aplicar a esses clientes. Tenho três instâncias OpenVPN diferentes (uma administrativa e dois níveis de acesso de convidado), então dividi isso um pouco mais.

Os usuários na sub-rede VPN administrativa têm acesso a quase tudo, então implementei uma configuração DENY->ALLOW que barra apenas os endereços específicos que estão fora do menu antes de aceitar todo o resto. Os convidados só têm acesso a determinados recursos, portanto, eles estão na configuração ALLOW->DENY.

A parte que não tenho certeza sobre o DD-WRT é como configurar isso para ocorrer automaticamente na inicialização. No OpenWRT, as regras de firewall são geradas com base em scripts (que não devem ser interferidos) em /lib/firewall. O arquivo de configuração, /etc/config/firewall, contém as seguintes linhas:

config 'include'

option 'path' '/etc/firewall.user'

O /etc/firewall.userarquivo definido acima é lido como um script BASH sempre que as regras do firewall são recarregadas, para permitir ajustes específicos do usuário. Não estou familiarizado especificamente com o DD-WRT, por isso não tenho certeza se o mesmo método de configuração de firewall é usado.

Se suas regras de firewall estiverem no padrão DD-WRT, você poderia postar a saída iptables -nvL --line-numbersno pastebin ou similar, com seu endereço público editado? Isso me ajudaria a ter uma ideia melhor do layout específico do DD-WRT. Você consegue confirmar o endereço IP na sub-rede OpenVPN que o cliente remoto está obtendo? Você também poderia postar a tabela de roteamento do seu roteador, conforme mostrado pelos resultados de route -n? (Certifique-se de que o servidor OpenVPN esteja em execução enquanto você faz isso). Se você redigir endereços de rede, identifique qual era a finalidade do intervalo (por exemplo, sub-rede local, sub-rede VPN, pública).

Claro, tudo isso poderia ser discutível se houvesse uma opção para definir esse acesso na interface web. Existe uma opção no console web do seu roteador para filtrar usuários na sub-rede OpenVPN?

Receio não ter entendido muito bem a segunda parte da sua pergunta. Você deseja que apenas determinados endereços IP possam se conectar ao dispositivo via OpenVPN? Você deseja que este serviço esteja em um servidor diferente do seu roteador DD-WRT no futuro?

informação relacionada