LINUX.ORG.RU
решено ФорумAdmin

systemd изменить мак адрес eth0 и eth1

 , ,


0

1

создал 2 файла

# cat /lib/systemd/network/10-eth0.link 
[Match]
PermanentMACAddress=50:2d:f4:14:14:6b
[Link]
Name=eth0
MACAddress=00:04:70:b3:d5:b6

и

# cat 11-eth1.link 
[Match]
PermanentMACAddress=50:2d:f4:14:14:6c
[Link]
Name=eth1
MACAddress=00:04:71:b3:d5:b6

с мак адресами не ошибся, без этих файлов вот такой вывод ifconfig

eth0      Link encap:Ethernet  HWaddr 50:2D:F4:14:14:6B  
          inet addr:10.162.1.2  Bcast:10.162.1.255  Mask:255.255.255.0
          inet6 addr: fe80::522d:f4ff:fe14:146b%lo/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:516 (516.0 B)  TX bytes:11517 (11.2 KiB)

eth1      Link encap:Ethernet  HWaddr 50:2D:F4:14:14:6C  
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

после перезагрузки

eth0      Link encap:Ethernet  HWaddr 00:04:70:B3:D5:B6  
          inet addr:10.162.1.2  Bcast:10.162.1.255  Mask:255.255.255.0
          inet6 addr: fe80::204:70ff:feb3:d5b6%lo/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:33 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:344 (344.0 B)  TX bytes:6434 (6.2 KiB)

eth1      Link encap:Ethernet  HWaddr 00:04:70:B3:D5:B6  
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

как видно, мак адреса одинаковые, подскажите, как поправить?

★★★

Ответ на: комментарий от anonymous

где одинаковые:

# cat /lib/systemd/network/10-eth0.link 
[Match]
PermanentMACAddress=50:2d:f4:14:14:6b
# cat 11-eth1.link 
[Match]
PermanentMACAddress=50:2d:f4:14:14:6c

последняя буква отличается

Name=eth1
MACAddress=00:04:71:b3:d5:b6
Name=eth0
MACAddress=00:04:70:b3:d5:b6

6-я цифра отличается

IvanR ★★★ ()

Ну то есть устройства переименовались правильно, а MAC-адреса назначились через жопу? Хз, звучит как глюк в драйвере или ещё что.

Попробуй поменять MAC руками и посмотреть что будет, или убрать один конфиг, оставить второй и опять же посмотреть.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

в dmesg только это

[    1.229613] 20b4000.ethernet supply phy not found, using dummy regulator
[    1.237816] pps pps0: new PPS source ptp0
[    1.274990] libphy: fec_enet_mii_bus: probed
[    1.281083] fec 20b4000.ethernet eth1: registered PHC device 0
[    1.289715] 2188000.ethernet supply phy not found, using dummy regulator
[    1.297973] pps pps1: new PPS source ptp1
[    1.303477] libphy: fec_enet_mii_bus: probed
[    1.311900] fec 2188000.ethernet eth0: registered PHC device 1

остальное, вроде, к ethernet не относится, могу полный dmesg показать

IvanR ★★★ ()
[Link]
Name=eth0
Name=eth1

это для чего?

[Match]
PermanentMACAddress=50:2d:f4:14:14:6b
[Link]
MACAddress=00:04:70:b3:d5:b6

я думал что примерно так нужно
или хотябы так

[Match]
Name=eth1
[Link]
MACAddress=00:04:70:b3:d5:b6
nanosecond ()
Последнее исправление: nanosecond (всего исправлений: 4)
Ответ на: комментарий от intelfx

eth0 и eth1

root@phyboard-segin-imx6ul-2:~# udevadm info /sys/class/net/eth0
P: /devices/platform/soc/2100000.aips-bus/2188000.ethernet/net/eth0
E: DEVPATH=/devices/platform/soc/2100000.aips-bus/2188000.ethernet/net/eth0
E: ID_NET_DRIVER=fec
E: ID_NET_LINK_FILE=/lib/systemd/network/10-eth0.link
E: ID_NET_NAME=eth0
E: ID_NET_NAME_MAC=enx502df414146b
E: ID_PATH=platform-2188000.ethernet
E: ID_PATH_TAG=platform-2188000_ethernet
E: IFINDEX=4
E: INTERFACE=eth0
E: SUBSYSTEM=net
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/eth0
E: TAGS=:systemd:
E: USEC_INITIALIZED=8917079

root@phyboard-segin-imx6ul-2:~# udevadm info /sys/class/net/eth1
P: /devices/platform/soc/2000000.aips-bus/20b4000.ethernet/net/eth1
E: DEVPATH=/devices/platform/soc/2000000.aips-bus/20b4000.ethernet/net/eth1
E: ID_NET_DRIVER=fec
E: ID_NET_LINK_FILE=/lib/systemd/network/10-eth0.link
E: ID_NET_NAME=eth0
E: ID_NET_NAME_MAC=enx502df414146c
E: ID_PATH=platform-20b4000.ethernet
E: ID_PATH_TAG=platform-20b4000_ethernet
E: IFINDEX=3
E: INTERFACE=eth1
E: SUBSYSTEM=net
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/eth0
E: TAGS=:systemd:
E: USEC_INITIALIZED=8503832

мак адреса разные, почему-то один и тот же файл применяется и ID_NET_NAME совпадает

IvanR ★★★ ()
Ответ на: комментарий от nanosecond

оба варианта попробовал

eth0      Link encap:Ethernet  HWaddr 00:04:70:B3:D5:B6  
          inet addr:10.162.1.2  Bcast:10.162.1.255  Mask:255.255.255.0
          inet6 addr: fe80::204:70ff:feb3:d5b6%lo/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:344 (344.0 B)  TX bytes:6483 (6.3 KiB)

eth1      Link encap:Ethernet  HWaddr 00:04:70:B3:D5:B6  
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
IvanR ★★★ ()
Ответ на: комментарий от intelfx

вот так меняет корректно:

# cat 81-mac-spoof.rules 82-mac-spoof.rules 
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="50:2d:f4:14:14:6b" , RUN+="/sbin/ip link set dev eth0 address 00:04:70:b3:d5:b6"
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="50:2d:f4:14:14:6c" , RUN+="/sbin/ip link set dev eth1 address 00:04:71:b3:d5:b6"

всем спасибо )))

IvanR ★★★ ()
Ответ на: комментарий от IvanR

Ну, ясное дело. Но мне было бы интересно понять в чём исходная проблема.

Это у тебя одноплатник? Я вангую, что у обоих интерфейсов исходно один и тот же аппаратный MAC-адрес (и именно он матчится, когда ты пишешь PermanentMACAddress=), а один из них инкрементируется на единичку уже самим линуксом или ещё каким-то скриптом у тебя в дистрибутиве.

Попробуй задать матч просто по MACAddress=, или вообще по-другому, например по Property=ID_PATH=<...> (подставь значение из udevadm info).

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Да, одноплатник

Попробуй задать матч просто по MACAddress=, или вообще по-другому, например по Property=ID_PATH=<…> (подставь значение из udevadm info).

Хорошо, попробую, спасибо

IvanR ★★★ ()
Последнее исправление: IvanR (всего исправлений: 1)
Ответ на: комментарий от IvanR

Потому что udev показывает актуальный MAC (используемый сетевым стеком Linux), а не железный. Он будет как раз повыше уровнем.

ethtool’ом посмотри, ethtool --show-permaddr eth0, ethtool --shor-permaddr eth1.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 3)