Uma máquina virtual Debian 8 no meu servidor ESXi está executando um servidor OpenVPN que estava funcionando bem até que eu decidi adicionar outra interface à máquina com outro IP. Eu gostaria de usar um IP apenas para o tráfego VPN, não para administração de servidor.
Estes são os dois IPs externos. O provedor com o qual estou usando uma configuração bastante estranha, eu tenho que configurar o gateway para um IP fora da sub-rede. E como muitos sistemas operacionais aceitam isso, tenho que criar uma rota estática.
Isto é o que parece:
root@ln-1:/etc/openvpn# ifconfig
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx
inet addr:92.xxx.xxx.xxx Bcast:92.xxx.xxx.xxx Mask:255.255.255.255
inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:271765 errors:0 dropped:10 overruns:0 frame:0
TX packets:4545 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:16520579 (15.7 MiB) TX bytes:1027263 (1003.1 KiB)
eth1 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:217.xxx.xxx.xxx Bcast:217.xxx.xxx.xxx Mask:255.255.255.255
inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:271152 errors:0 dropped:9 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:16727664 (15.9 MiB) TX bytes:1598 (1.5 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:45 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:2774 (2.7 KiB) TX bytes:0 (0.0 B)
E as rotas, eu configurei a rota para 91.xxx.xxx.xxx (que é o gateway) em ambas as interfaces, mas eu fiz o default em eth0 que faz as máquinas usarem aquela por padrão eu acho, mas Eu quero que o tráfego VPN passe pela eth1, usando o mesmo IP do gateway:
root@ln-1:/etc/openvpn# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 91.xxx.xxx.xxx 0.0.0.0 UG 0 0 0 eth0
10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
91.xxx.xxx.xxx 0.0.0.0 255.255.255.255 UH 0 0 0 eth1
91.xxx.xxx.xxx 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
E a configuração do iptables:
root@ln-1:/etc/openvpn# iptables-save
# Generated by iptables-save v1.4.21 on Tue May 9 00:08:15 2017
*filter
:INPUT DROP [8286:454500]
:FORWARD DROP [801:48621]
:OUTPUT ACCEPT [4648:980772]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -i eth1 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -o eth1 -j ACCEPT
COMMIT
# Completed on Tue May 9 00:08:15 2017
# Generated by iptables-save v1.4.21 on Tue May 9 00:08:15 2017
*nat
:PREROUTING ACCEPT [19909:1034285]
:INPUT ACCEPT [54:2776]
:OUTPUT ACCEPT [144:10480]
:POSTROUTING ACCEPT [144:10480]
-A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
COMMIT
# Completed on Tue May 9 00:08:15 2017
SSH Gostaria de falar sobre a eth0, o resto, o tráfego da VPN passa pela porta 443 e, na porta 80, eu sirvo a configuração do OpenVPN para facilitar a localização. A configuração do OpenVPN inclui as seguintes linhas:
local 217.xxx.xxx.xxx
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
O encaminhamento de IP está ativado e tudo funcionou até que eu quisesse usar a eth0 para tudo, exceto o tráfego da VPN, e a eth1 apenas para o tráfego da VPN.
Não consigo fazer isso funcionar, procurei muito, mas não consigo encontrar alguém com uma configuração semelhante que tenha resolvido isso. Qualquer ajuda seria muito apreciada!
Se eu perdi algo relevante, por favor, diga-me e eu adicionarei, é claro, também sou novo para postar coisas neste site, por favor, desculpe-me se estou fazendo algo errado.
EDIT 10 de maio 2017 22:07 CEST: Eu tenho novas informações:
Aparentemente, o OpenVPN tenta encaminhar / encaminhar de tun0 para eth0, eu estava experimentando com o logging do iptables:
-A INPUT -m limit --limit 3/min -j LOG --log-prefix "iptables_INPUT_denied: " --log-level 4
-A FORWARD -m limit --limit 3/min -j LOG --log-prefix "iptables_FORWARD_denied: " --log-level 4
O que me mostrou isso:
May 10 21:20:15 ln-1 kernel: [176312.426411] iptables_FORWARD_denied: IN=tun0 OUT=eth0 MAC= SRC=10.8.0.6 DST=157.56.144.215 LEN=89 TOS=0x00 PREC=0x00 TTL=127 ID=1513 PROTO=UDP SPT=57959 DPT=3544 LEN=6
Também estou surpreso de ver PROTO=UDP
aqui porque o servidor e o cliente estão configurados para usar o TCP.