Кто определяет, что все работает через utun0, а не на en0? Я знаю, что программное обеспечение моего провайдера VPN делает это через некоторые записи DNS, но я не понимаю всей концепции.
Это будут таблицы маршрутизации. Они в основном определяют, какой шлюз приведет вас к каким сетям. В OS X L2TP и PPTP VPN, использующие встроенный демон racoon
, имеют опцию в System Preferences > Network > (VPN interface) > Advanced > Options
называемую «Отправить весь трафик через VPN-соединение», которая делает это для вас.
Вы можете использовать ipconfig route
самостоятельно как в Linux, так и в OS X.
Если VPN-соединение закрывается, en0 вступает во владение снова. Как я могу предотвратить это? Например, можно временно деактивировать en0 или какие шаги я должен предпринять, чтобы предотвратить утечку IP-адреса в случае случайного разрыва соединения?
Вы можете подключиться к чему-то, что срабатывает при изменении конфигурации сети (при сбое VPN или отсутствии интерфейса). В OS X вы могли бы создать демон launchd, который запускает сценарий для этого события. Сценарий должен попытаться восстановить VPN, иначе сломать Интернет. Вот примерная суть, которую я нашел на github относительно того, как это сделать в OS X. Должен быть способ назначить сценарий "down" интерфейса в Linux или сделать это непосредственно в OpenVPN.
В качестве более гибкого решения вы могли бы создать некоторые правила брандмауэра, чтобы разрешить трафик только через VPN, за исключением самой VPN, которая должна выходить за пределы вашего фактического интерфейса.
Если я очень обеспокоен утечкой поставщиков программного обеспечения VPN, я полагаю, что это заставит драйвер сделать это более надежно в OS X, чтобы гарантировать, что никакие пакеты никогда не исчезнут, если не через VPN.