Могу ли я назначить приложению конкретный сетевой интерфейс в ubuntu?
Моя локальная сеть имеет выход в интернет, также у меня есть 4g модем, я хочу иметь возможность как подключаться к своей машине по ip из внешней сети, так и осуществлять запросы с этой машины используя другую сеть(модемную), как мне управлять машиной и совершать запросы через 4г модем, могу ли я выбрать сетевой интерфейс, через который запускать то или иное приложение
Вы не можете взаимодейстовать со своим компьютером через модем без дополнительных манипуляций, вам нужно или арендовать адрес у мобильного провайдера, и мучится с натом, или проще - подключится через модем к vpn туннелю с компьютера.
Точно знаю что cgroups это позволяют, но они заметно сложны для использования (я не видел красивой инструкции именно под такую задачу), с их помощью сделан lxc/lxd и соответственно docker.
Настоятельно рекомендую через lxc или docker все и завернуть. Доступ к GUI реализуй через проброс портов ssh либо используй xserver и открой доступ xhost/xauth
Если приложения умеют работать с socks/http прокси, то тогда достаточно настроить только прокси, а некоторые из коробки типа squid имеют настройки по тому, через какой интерфейс отправлять пакеты
Если приложение умеет работать через любой proxy сервер, установить любой proxy сервер, повесить его на нужный вам интерфейс и настроить приложение на работу через proxy.
Если приложение подключается к конкретным портам или ip адресам - можно настроить маршрутизацию, используя iproute2.
Необходимо настроить либо policy routing для каждого интерфейса (в особенности, для физического интерфейса сервера), либо настроить отдельные программы (демоны) на bind к конкретным сетевым интерфейсу (и убедиться, что у вас сохраняется маршрут по умолчанию через оба интерфейса, но при этом имеют разную метрику).
И самый простой вариант, который позволит подключаться только с заранее указанных IP-адресов — добавить маршрут через конкретный интерфейс до конкретного адреса или диапазона.
в загашнике валяется такая запись Ограничить доступ в интернет для приложений в Linux
ни разу не пользовал, но валяется :)
соответственно использовать, только исправить правила иптейблес вместо дропа на перенаправление на необходимый интерфейс.