OpenVPN e DD-WRT [fechado]

1

Estou tentando configurar um novo roteador dd-wrt para trabalhar com o OpenVpn. No entanto, o OpenVpn que eu preciso usar tem um arquivo de configuração gerado automaticamente. Parece que:

# 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 um SSH no meu roteador (isso significa que eu liguei o sshd) eu posso usar essa configuração para conectar ao servidor OpenVpn. Se eu olhar para a página de controle de acesso do servidor VPN é mostra que eu tenho conectado 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 no roteamento e não consegui trabalhar com 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 são em duas partes:

  1. Alguém pode me orientar na configuração do iptables (ou o que envia 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 somente em um ponto de acesso virtual (VAP) ou somente com determinados endereços IP (portanto, apenas o dispositivo com o ip de xxxx conectado ao ponto de acesso passa pela VPN).

Nota: Eu normalmente gosto de ter estes scripts no meu computador e então eu os ssh em qualquer roteador dd-wrt existente e então os execute para abrir uma conexão VPN.

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

    
por Bradley Lederholz Leatherwood 11.09.2013 / 20:14

1 resposta

1

Eu estou falando principalmente com base nos meus planos para mudar a configuração do OpenVPN para OpenWRT. Ele está atualmente implementado no Fedora18, mas eu gostaria de usar a máquina de teste para outras coisas. Eu imagino que DD-WRT seria semelhante, mas pode haver algumas imprecisões devido a dificuldades de implementação. Espero que alguém com mais experiência em DD-WRT possa me apoiar e suavizar qualquer problema.

A diretiva dev tun significa que você está usando uma sub-rede separada, geralmente definida usando a diretiva server (acredito que essa 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 do cliente dentro desse intervalo.

Se este dispositivo for seu roteador de internet, ele será usado como o 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 perguntará ao gateway padrão. O que eu suspeito que está acontecendo é que suas regras iptables não estão definidas para procurar e aceitar qualquer tráfego de sua sub-rede VPN, com base na interface de entrada

Você pode ver sua configuração do iptables usando iptables -nvL --line-numbers . As pessoas que desejam usar seu dispositivo como um roteador podem se deparar com algo como o seguinte.

  1. Aceite as 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 tráfego da sub-rede local.
  4. Soltar / Rejeitar todas as tentativas restantes que cruzam a cadeia de regras.

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

Esses procedimentos são organizados em cadeias de regras baseadas em tarefas. O que estou planejando fazer é definir uma cadeia para minhas sub-redes OpenVPN no início do "zone_lan_forward", a cadeia de regras que manipula as conexões locais. É algo assim:

iptables -N zone_lan_vpn

iptables -I zone_lan_forward -i tun+ -j zone_lan_vpn

O que você faz em seguida depende de quais tipos de restrições você deseja aplicar a esses clientes. Eu tenho três instâncias OpenVPN diferentes (uma administrativa e dois níveis de acesso de convidado), então eu dividi isso um pouco mais.

Os usuários na sub-rede VPN administrativa têm acesso a quase tudo, então eu implementei uma configuração DENY- > ALLOW que impede apenas os endereços específicos que estão fora do menu antes de aceitar todo o resto. Os visitantes só têm permissão para acessar determinados recursos, por isso, eles estão em uma configuração ALLOW- & DUY DENY.

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

config 'include'

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

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

Se suas regras de firewall estão no padrão DD-WRT, você poderia postar a saída de iptables -nvL --line-numbers em pastebin ou similar, com seu endereço público redigido? 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ê poderia também postar a tabela de roteamento do seu roteador, como mostrado pelos resultados de route -n ? (Certifique-se de que o servidor OpenVPN está sendo executado enquanto você faz isso). Se você redigir endereços de rede a partir disso, identifique qual era o objetivo do intervalo (por exemplo, sub-rede local, sub-rede de VPN, pública).

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

Eu tenho medo de não entender a parte dois da sua pergunta. Você quer apenas que determinados endereços IP possam se conectar ao dispositivo via OpenVPN? Você quer que este serviço esteja em um servidor que não seja seu roteador DD-WRT no futuro?

    
por 11.09.2013 / 23:58