Когда мне нужно создать временный мост с интерфейсом на Linux, я бы использовал следующее:
brctl addbr br0
brctl addif br0 eth0
ifconfig eth0 0.0.0.0
ifconfig br0 192.168.10.100 netmask 255.255.255.0
ifconfig br0 up
Я обновил свой процесс, чтобы использоватьipкоманда, однако я не нашел эквивалента для удаления IP-стека (ifconfig eth0 0.0.0.0) с помощью ip
команды
Я попробовал следующее:
ip addr add 0.0.0.0 dev eth0
ip addr add 0.0.0.0/24 dev eth0
ip
но удалить существующее на этом устройстве не получится .
кто-нибудь случайно не знает, возможно ли это с помощью ip
команды
решение1
В Linux старая ifconfig
команда и ее старый API ядра Linux ограниченыодинАдрес IPv4 на интерфейс (и поэтому псевдонимы интерфейсов, которые на самом деле являются дополнительными адресами, а не интерфейсами, используются для обхода этого ограничения). Это объясняет, почему следует удалитьtheАдрес IPv4, метод заключался в том, чтобынаборэто (на самом деле не добавить) 0.0.0.0.
Сiproute2инструменты, если вы хотите удалитьлюбойадрес из интерфейса (всегда хорошая идея для порта моста), не заботясь о том, какие там адреса, вы можете использовать ip address flush
, которая является командой массового удаления:
ip address flush
- сброс адресов протоколаЭта команда очищает адреса протоколов, выбранные по некоторым критериям.
[...]
Предупреждение: Эта команда и другие команды очистки не прощают ошибок. Они безжалостно очистят все адреса.
[...]
Итак, в конце концов вы можете использовать:
ip address flush dev eth0
(можно добавить -4
, чтобы ограничить эффект IPv4).
Есть и другие применения. Например, эта команда:
ip address flush to 10.1.0.0/16
удалит из любого интерфейса любой адрес, соответствующий блоку 10.1.0.0/16какова бы ни была его сетевая маска.
# ip -s -s address flush to 10.1.0.0/16
2: lxcbr0 inet 10.1.3.1/24 brd 10.1.3.255 scope global lxcbr0
valid_lft forever preferred_lft forever
158: eth0 inet 10.1.1.1/8 scope global eth0
valid_lft forever preferred_lft forever
*** Round 1, deleting 2 addresses ***
*** Flush is complete after 1 round ***
решение2
Ты не можешьудалитьIP-адрес с помощью add
команды!
Если вы хотите удалить IP-адрес из интерфейса, вам del
нужно это сделать.
ip addr del 203.0.113.187 dev eth0