Historicamente, no IPv4, as interfaces não numeradas não eram possíveis. A única maneira possível de configurar uma interface ponto-a-ponto era com um endereço local e um endereço remoto. A única maneira de rotear algum outro endereço IP através da interface ponto-a-ponto em questão era instalar uma rota usando o endereço remoto da interface como o gateway (não havia opção no comando route
ou no kernel para especificar o destino pelo nome da interface). Naquela época, você veria uma grande quantidade de endereços IP preciosos consumidos como endereços de interface em conexões SLIP.
Mesmo agora, uma interface IPv4 exige pelo menos algum tipo de endereço configurado para servir como endereço de origem para erros de ICMP originados dessa interface (e é assim que traceroute
detecta qual interface em um roteador foi percorrida) .
Mas o que você pode fazer agora (e não poderia fazer historicamente) é tornar a interface sem numeração. Isso significa dar a ele o mesmo endereço IP de alguma outra interface no sistema. Geralmente, uma interface sempre ativa estável (como uma interface de loopback ou a interface "principal" do roteador) serve como o doador para o endereço IP. Quanto ao endereço IP remoto, você não precisa fornecer nenhum (mas veja o próximo parágrafo). Sem um endereço IP remoto especificado, você pode usar ip route ... dev <interface>
em vez de ip route ... via <address>
para direcionar o tráfego para a interface, como você sabe. Tudo somado, isso pode levar a uma enorme economia em endereços IP. (Como um aparte, é interessante notar que enquanto no UNIX uma interface não numerada está implícita no fato de que o endereço IP local não é único, em outros sistemas operacionais como o Cisco IOS, é bastante explícito: o comando é ip unnumbered <donor-interface-name>
.
Não obstante, parece que no OpenVPN, especificar o endereço IP remoto não é opcional. No entanto, o que você pode fazer é especificar um endereço remoto arbitrário. Por exemplo, se a outra extremidade do túnel for outro roteador, você poderá usar o loopback do roteador remoto ou o endereço IP "principal" (refletindo basicamente uma configuração não numerada na extremidade remota), não consumindo, portanto, endereços IP para o túnel. Se você estiver disposto a fazer a tabela de roteamento parecer um pouco feia, você pode usar um endereço IP completamente falso para o endereço remoto ifconfig; tudo vai funcionar bem e o endereço falso nunca aparecerá em nenhum lugar (mesmo em traceroutes).