Linux, como forçar todo o tráfego para um host específico através de VPN?

0

Estou tentando garantir que todo o tráfego para o nosso servidor de estatísticas seja forçado pela VPN, no caso de a VPN cair, não deve ser que o tráfego tente rotear pela WAN. Para causar um curto-circuito nas pesquisas de DNS, listamos o host no arquivo de hosts, mas isso também seria resolvido no mundo.

Veja o que temos:

$ echo "12.23.45.67 the.statsd.server" > /etc/hosts

# From a /etc/ppp/ip-up.d/thevpn (so it's a pptp client script that does this)
route add -host 12.34.45.67 dev ppp0

$ iptables -I INPUT -s  12.23.45.67 -i eth0 -j DROP
$ iptables -I OUTPUT -d 12.23.45.67 -o eth0 -j DROP
$ iptables -I OUTPUT -d 12.23.45.67 -o ppp0 -j ACCEPT

Tudo funciona até que as tabelas IP funcionem, mas o problema (se realmente for um problema) é que agora eu não consigo mais pingar esse host, mesmo quando a VPN está ativa:

root@li149-82:~# ping the.statsd.server
PING the.statsd.server (12.23.45.67) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted

Eu não sou particularmente habilidoso com tabelas IP, o principal é que por padrão não deve ser possível rotear para esse host, a menos que esteja acima de ppp0 .

    
por Lee Hambley 17.03.2012 / 09:18

1 resposta

1

Em / etc / hosts você deve colocar o endereço privado do servidor de estatísticas e não o público. Uma rota deve ser suficiente. route add -host PRIVATE_ADDRESS dev ppp0. Com essa configuração, o arquivo .statsd.server será resolvido apenas para seu endereço privado e será roteado através da interface ppp0. Não há necessidade de iptables, porque se a vpn não estiver ativa, o servidor não será acessível por seu endereço privado.

    
por 07.05.2012 / 17:31