Roteie o tráfego para algum host na Internet via servidor VPN

Roteie o tráfego para algum host na Internet via servidor VPN

Preciso direcionar o tráfego para algum host na Internet via servidor VPN.

Configuração:

Computador: Ubuntu-12.04

eth0 - xxxx/24

tun0 - endereço inet:10.8.0.6 PtP:10.8.0.5 Máscara:255.255.255.255

Existe servidor OpenVPN (Amazon):

Ubuntu-12.04

eth0 - aaaa/24

tun0 - endereço inet:10.8.0.1 PtP:10.8.0.2 Máscara:255.255.255.255

Existe host no IP da Internet: qqqq

Quero trafegar para qqqq e lançar o servidor OpenVPN. Para isso eu faço:

tabelas de ip:

Eu marco pacotes na tabela mangle:

sudo iptables -t mangle -A OUTPUT -d q.q.q.q -j MARK --set-mark 2

Eu envio tráfego para qqqq throw tun0:

sudo iptables -t nat -A POSTROUTING -d q.q.q.q -j SNAT --to-source 10.8.0.6

iproute2:

Eu faço a tabela "100" em /etc/iproute2/rt_tables

sudo ip rule add fwmark 2 table 100
sudo ip route add default via 10.8.0.5 table 100

tcpdump no primeiro computador:

14:22:04.554399 IP 10.8.0.6 > qqqq.clodo.ru: solicitação de eco ICMP, id 11717, seq 1, comprimento 64

14:22:04.681918 IP qqqq.clodo.ru> 10.8.0.6: resposta de eco ICMP, id 11717, sequência 1, comprimento 64

14:22:05.562577 IP 10.8.0.6 > qqqq.clodo.ru: solicitação de eco ICMP, id 11717, seq 2, comprimento 64

14:22:05.690240 IP qqqq.clodo.ru> 10.8.0.6: resposta de eco ICMP, id 11717, sequência 2, comprimento 64

Mas não há ping. 2 pacotes transmitidos, 0 recebidos, 100% de perda de pacotes.

Responder1

Você não precisa marcar os pacotes. Para fazer o que está planejando você precisa do seguinte

no arquivo de configuração do servidor adicione o seguinte:

"push route q.q.q.q 255.255.255.255"

O acima irá empurrar a rota para o lado do cliente para que todo o tráfego enviado do cliente para aquele IP seja enviado através do túnel openvpn.

Também no lado do servidor você precisa aceitar o tráfego de entrada do cliente, você pode aceitar todo o tráfego proveniente da sub-rede do cliente da seguinte forma

iptables -A INPUT -s 10.8.0.0/24 -j ACCEPT

você também pode precisar disso, não tenho certeza:

iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT

Você precisa enviar o tráfego que chega do lado do cliente para o servidor [faça isso no lado do servidor]

iptables -t nat -A POSTROUTING -d q.q.q.q -j SNAT --to-source PUBLIC_IP_OR_YOUR_VPN_SERVER

E você não precisa da tabela iproute2 ou mangle.

A ordem das regras é importante, então agrade-os antes de descartar uma regra correspondente

informação relacionada