У меня есть машина Linux с одним реальным интерфейсом, который подключен к Интернету; скажем, eth0 192.168.1.108
Мне нужно создать виртуальный интерфейс, который направляет трафик через [eth0], но показывает другой IP-адрес [10.10.0.1] на основе некоторых списков контроля доступа.
Мне нужно создать новое виртуальное устройство с IP-адресом 10.10.0.1 для целей контроля доступа.
Я создал фиктивное устройство
ip link add name acl0 type dummy
ip addr add 10.10.0.1
ip link set dev acl0 up
Это создает интерфейс, но фактически не маршрутизирует трафик.
Как создать виртуальное устройство с определенным IP-адресом, которое будет фактически маршрутизировать трафик?
решение1
Отредактируйте свой вопрос и подробно опишите, зачем вам нужен второй IP-адрес и как вы планируете его использовать для доступа.
Анинтерфейсне "маршрутизирует трафик". Ядро маршрутизирует трафик.
Единственное, для чего хорош фиктивный интерфейс, это как заглушка для IP без функциональности, чтобы приложения могли к нему привязываться. Многие совершили ошибку, предположив, что он как-то что-то делает, но это не так.
Вы можете назначить несколько IP-адресов одному и тому же интерфейсу, но тогда вам нужно убедиться, что все ваши приложениясвязыватьна определенный адрес, или вы получите удовольствие от отладки случайных эффектов.
В зависимости от того, какой тип «контроля доступа» вам нужен, простым способом разделения сети для различных приложений является использованиесетевое пространство имен. Поместите «специальное» приложение в сетевое пространство имен, тогда оно будет действовать так, будто запущено на другой машине с точки зрения сети, поэтому вы можете задать ему другие настройки.
Либо используйте его, macvlan
чтобы eth0
он использовал тот же интерфейс с другим IP-адресом (или, возможно, используйте DHCP, чтобы назначить ему IP), либо создайте пару veth между новым пространством имен и основным сетевым пространством имен, а затем выполните обычную маршрутизацию.