Intereting Posts
Есть ли способ узнать, сколько данных я отправил через Интернет? Поиск появления, до определенного слова Лучший способ сравнить различные решения для шифрования в моей системе Запись источника монитора (выходной микс) другого компьютера с использованием PulseAudio Debian Linux не запускается, поскольку не было найдено загрузочного устройства Как добавить RAID5 в существующий крипто-LVM? Средство чтения в командной строке (например, «меньше»), которое может указать строку, где пользователь перестает читать Как записать в новый файл, если есть вхождения в другом? Как создать скрипт, который переключает одно значение в synclient? Отключить обнаружение определенного оборудования? Доступ SANE-сканера изнутри виртуальной машины? почему на моем рабочем столе работает шесть процессов getty? Ubuntu VirtualBox застрял перед экраном входа Каждые несколько минут меняется ориентация экрана Диаграмма ядра Linux против производительности?

Создание привязки для прослушивания localhost в netns

У меня Debian Jessie работает Bind. Установлено соединение OpenVPN. И resolv.conf настроен на использование локального Bind:

 nameserver 127.0.0.1 nameserver 4.2.2.4 

Я хочу настроить систему таким образом, чтобы определенные программы получали доступ к Интернету только через это VPN-соединение (при отсутствии этого соединения он не должен иметь никакого доступа в любом месте), а остальное для доступа к Интернету напрямую. Я хочу, чтобы все программы использовали локальный Bind для разрешения имен доменов и удалили это 4.2.2.4 из resolv.conf .

Я думал, что пространство имен в сети – подходящий инструмент для задания: я перемещаю VPN-интерфейс в пространство имен в сети (так что это единственное соединение, доступное там, кроме loopback), а затем запускайте эти определенные программы в пространстве имен в сети. Я сделал следующий сценарий, который я настроил для запуска в качестве сценария route-up OpenVPN:

 NS=zzz if [ ! -f /var/run/netns/$NS ]; then /sbin/ip netns add $NS fi /sbin/ip link set $dev netns $NS /sbin/ip netns exec $NS /sbin/ifconfig lo up /sbin/ip netns exec $NS /sbin/ifconfig $dev $ifconfig_local pointopoint $ifconfig_remote up /sbin/ip netns exec $NS /sbin/route add default gw $ifconfig_remote metric 1024 

Работает отлично для меня, за исключением того, что Bind не прослушивает интерфейс loopback в моем пространстве имен в сети, поэтому все запросы разрешения имен переходят на внешний DNS. Как это исправить? Могу ли я как-то указать, что и loopback (обычный и netns один) одинаковы? Или мне нужно запустить другую копию Bind в моем пространстве имен? Что-то другое?