Linux, как заставить весь трафик на конкретный хост через VPN?

0

Я пытаюсь убедиться, что весь трафик на наш сервер статистики проходит через VPN, в случае, если VPN падает, не должно быть, что трафик пытается маршрутизироваться через WAN. Для короткого замыкания поиска DNS мы перечислили хост в файле hosts, но он также разрешится и в более широком мире.

Вот что мы имеем:

$ 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

Все до тех пор, пока IP-таблицы не работают, но проблема (если это действительно проблема) заключается в том, что я больше не могу пинговать этот хост, даже когда VPN работает:

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

Я не особо разбираюсь в таблицах IP, главное, чтобы по умолчанию не было возможности маршрутизировать к этому хосту вообще, пока он не закончился ppp0.

Ли Хэмбли
источник

Ответы:

1

В / etc / hosts вы должны указать частный адрес сервера статистики, а не публичный. Маршрут должен быть достаточным. route add -host PRIVATE_ADDRESS dev ppp0. При такой конфигурации .statsd.server будет разрешен только по своему частному адресу и будет маршрутизироваться через интерфейс ppp0. Нет необходимости в iptables, потому что, если vpn не работает, сервер не будет доступен по его частному адресу.

Hextht
источник