Как создать виртуальный интерфейс, аналогичный следующей ifconfig
команде?
$ sudo ifconfig eth1 hw ether 00:01:02:aa:bb:cc
SIOCSIFHWADDR: No such device
Это не работает. Я хочу задать MAC-адреса, чтобы проверить конфигурацию моего DHCP-сервера.
Как мне это сделать с помощью iproute2
пакета, используя команду ip link?
$ sudo ip link add type veth
Это работает, но случайным образом назначает MAC-адрес. Это все еще полезно, но я хотел бы протестировать свой dhcpd
сервер с некоторыми определенными MAC-адресами, чтобы увидеть, как он обрабатывает классы, которые я настроил.
Моя текущая установка 1 :
$ ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 60:eb:69:1b:a0:88 brd ff:ff:ff:ff:ff:ff
inet 172.16.0.93/24 brd 172.16.0.255 scope global eth0
inet6 fe80::62eb:69ff:fe1b:a088/64 scope link
valid_lft forever preferred_lft forever
7: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
8: veth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 3a:50:38:2e:24:c4 brd ff:ff:ff:ff:ff:ff
[1]: Обратите внимание, что эта настройка не является результатом выполнения вышеуказанных команд. В частности, это ip link add type veth
привело бы к созданию пары veth1@veth2
/, veth2@veth1
пронумерованной таким образом, поскольку veth0
существует.
решение1
Я хочу настроить MAC-адреса для проверки конфигурации моего DHCP-сервера.
Есть (по крайней мере?) два способа, которыми вы можете этого добитьсялинукс.
Самый простой и понятный,но очень рискованный способ, заключается в измененииMAC-адресфизического интерфейса. Однако, чтобы сделать этовам придется убрать интерфейстак что это не самый безопасный способ, и, конечно,очень рискованный способ при удаленной работе! Если у вас есть физический доступ к хосту или что-то подобное, это может быть вариантом.
Более безопасный способ — определитьмаквланlink на вашем физическом интерфейсе с правильным mac-адресом. Вы всегда можете изменить этот mac-адрес, используя команду, похожую на ту, которую вы использовали бы для изменения mac-адреса вашего физического интерфейса. Это удобно для тестирования нескольких пар IP/MAC без необходимости создания/удаления множества интерфейсов, например.
Я говорю «более безопасно», потому что в зависимости от мер безопасности в вашей сети вы рискуете потерять соединение также и с macvlan-линком, если, например, ваша сеть запрещает использование другого mac-адреса на вашем физическом соединении. В некоторых случаях сетевое устройство, к которому подключен ваш хост, может посчитать, что вы нарушаете правила безопасности, и отключить соединение.
Для следующих команд вам понадобитсяiproute2утилиты под linux.
ПОЖАЛУЙСТА, ПРОЧИТАЙТЕ ТЕКСТ ВЫШЕ, ПРЕЖДЕ ЧЕМ ИСПОЛЬЗОВАТЬ СЛЕДУЮЩИЕ КОМАНДЫ НА УДАЛЕННЫХ ХОСТАХ!
Чтобы добавить ссылку macvlan, вы можете использовать:
ip link add link eth0 type macvlan
Интерфейс будет назван так, macvlanX
где X
первая цифра — это то же самое, что и интерфейс с таким именем, поскольку его не существует.
Вы можете назвать интерфейс ( vif0
например, to) при создании, используя что-то вроде
ip link add name vif0 link eth0 type macvlan
иметь интерфейс с именем vif0
.
После того, как у вас есть интерфейс, вы можете изменить его mac-адрес ( 00:11:22:33:44:55
например, на ), используя:
ip link set address 00:11:22:33:44:55 dev macvlan0
Эту же команду можно использовать для изменения mac-адреса других интерфейсов. Это та, которую вы можете использовать для изменения mac-адреса вашего физического соединения.
Конечно, вы можете добавить ссылку macvlan и задать ее адрес одним движением:
ip link add name vif0 address 00:11:22:33:44:55 link eth0 type macvlan
Не забудьте поднять интерфейс после настройки mac-адреса. С именем интерфейса vif0
:
ip link set dev vif0 up
Обратите внимание, что некоторые части этих команд являются опциями и могут быть размещены в разных порядках, другие являются частью синтаксиса и должны быть размещены в правильном месте. Более того, некоторые части могут быть опущены при условии, что это не повлияет на значение 1 . В приведенной выше команде, например, dev
может быть опущен.
Тип macvlan по умолчанию — VEPA, который предотвращает прямую связь между физическим и виртуальным интерфейсом. Он должен подходить для этого варианта использования. Доступны и другие режимы, см.глава о macvlan в этой книге RedHat "Введение в интерфейсы Linux для виртуальных сетей".
Надеюсь, это поможет... ...кому-нибудь еще, кто будет здесь проходить.
1: его нельзя пропустить, если у вас возникла (очень) плохая идея дать имя интерфейсу, dev
например.
решение2
Попытался ли ты...
ip link add type veth addr 00:01:02:aa:bb:cc
или
ip link set dev veth0 addr 00:01:02:aa:bb:cc
решение3
Создайте интерфейс VLAN ip link add name ${имя интерфейса VLAN} link ${имя родительского интерфейса} type vlan id ${тег} Примеры: ip link add name eth0.110 link eth0 type vlan id 110
http://baturin.org/docs/iproute2/#Создать%20a%20VLAN%20interface