Centos mac address не совпадает с eth1

Обновлено: 06.07.2024

Имеются две машины. Одна из них Под OS CentOS c 2 сетевыми картами, в одну втыкнут через PPPoE, в другую подключен второй комп с Windows

1) PPPOE поднята на CentOS - выходит в нет и компы друг друга видят. Помогите настроить так, чтобы с компа Windows тоже можно было видеть Интернет

2) Как изменить hwaddr чтобы при перезагрузке сети и компа он постоянно был тот, что я захочу. Если менять в cfg-eth0 то ругается "Устройство eth0 имеет MAC адрес 00:---xxx, вместо настроенного адреса 00:---yyy. Игнорируется." Если ifconfig eth0 hw etherner xx:xx. то тоже при попытке перезагрузить интерфейс такая же ошибка. Если менять и там и там то при перезагрузке машины карте возвращается настоящий адрес и ругается на несоответсвие с ifcfg-eth0. Если в rc.local менять, то при перезагрузки машины поднимается нормально, но стоит service network restart - опять эта ошибка. Если из cfg-eth0 убрать строку HWADDR - пишет что устройство не подключено

В общем как сделать так чтобы железно забить на карту другой HW адрес.

Спасибо

>1) А нельзя образец как именно nat настроить?

ну например как-то так:

iptables -t nat -A POSTROUTING -s 172.16.2.2 -j SNAT --to $ext_addr
iptables -t nat -A POSTROUTING -s 172.16.2.3 -j SNAT --to $ext_addr
iptables -t nat -A POSTROUTING -s 172.16.2.4 -j SNAT --to $ext_addr

или

iptables -t nat -A POSTROUTING -s $int_net -p tcp --dport 22 -j SNAT --to $ext_addr
iptables -t nat -A POSTROUTING -s $int_net -p tcp --dport 25 -j SNAT --to $ext_addr
iptables -t nat -A POSTROUTING -s $int_net -p tcp --dport 53 -j SNAT --to $ext_addr
iptables -t nat -A POSTROUTING -s $int_net -p udp --dport 53 -j SNAT --to $ext_addr

А вообще читай man iptables. В интернете литературы много по этому поводу.

>1) А нельзя образец как именно nat настроить?

iptables -t nat -A POSTROUTING -s 192.168.127.2 -o ppp0 -j MASQUERADE

192.168.127.2 - ip windows xp
ppp0 - имя pppoe интерфеса

Ну и не забыть включить форвардинг

echo 1 > /proc/sys/net/ipv4/ip_forward

>2) Так это ж то же самое что я описал.

убери привязку mac из описания интерфейса

а нахера ты их одинаковые указал

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

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


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

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

intelfx ★★★★★ ( 20.08.21 13:52:05 )
Последнее исправление: intelfx 20.08.21 13:52:29 (всего исправлений: 1)

убираю 10-eth0.link, ниодин мак не меняется, убираю 11-eth1.link меняются оба и на обоих новый мак адрес первого интерфейса

А что за оборудлвание?


убираю 11-eth1.link меняются оба и на обоих новый мак адрес первого интерфейса

А в логах udev что?

intelfx ★★★★★ ( 20.08.21 14:24:29 )
Последнее исправление: intelfx 20.08.21 14:24:42 (всего исправлений: 1)

в /var/log пусто, как смотреть логив systemd, не знаю


( journalctl -b за текущую загрузку)

intelfx ★★★★★ ( 20.08.21 14:41:07 )
Последнее исправление: intelfx 20.08.21 14:41:39 (всего исправлений: 2)


Ещё покажи udevadm info /sys/class/net/eth0 и udevadm info /sys/class/net/eth1 .

в dmesg только это

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

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

nanosecond ( 20.08.21 14:54:20 )
Последнее исправление: nanosecond 20.08.21 14:56:58 (всего исправлений: 4)

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

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

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


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

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

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

intelfx ★★★★★ ( 20.08.21 17:33:53 )
Последнее исправление: intelfx 20.08.21 17:36:19 (всего исправлений: 2)

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

VirtualBox не поддерживает изменение MAC-адреса внутри гостевой виртуальной машины.

«Официальный» метод работы — изменить адрес в настройках виртуальной машины, когда гостевой компьютер полностью выключен.


Информация о гостевых MAC-адресах генерируется физическим оборудованием, и в данном случае это сетевой адаптер VirtualBox.

VirtualBox использует оборудование на хосте и предоставляет MAC-адрес для гостя, как если бы он был в металле. Но возникает резонный вопрос, ведь на физическом компьютере MAC-адрес точно также жёстко прошит в сетевой карте и на ней невозможно его изменить, но при этом Linux поддерживает смену MAC-адреса на произвольные и сеть работает нормально, почему такая разница?

И, между прочим, смена MAC-адреса в виртуальной машине обрывает Интернет-подключение только для проводного интерфейса. Для беспроводных сетевых интерфейсов Wi-Fi (подключённых по USB) смена MAC-адреса не ведёт ни к каким проблемам, они работают нормально, подключение к сети присутствует.

Возможных причин такого поведения две:

1. Какой бы MAC-адрес не был прошит в сетевой карте, конечное решение, принимать или не принимать пакет, делает ядро операционной системы. Это в случае физического компьютера. В случае виртуального компьютера, это решение за программой VirtualBox, которая может быть не в курсе, что именно происходит в виртуальной машине и что она поменяла MAC-адрес (например, при помощи программы macchanger). Поэтому VirtualBox не знает о новом MAC-адресе и не пересылает на него Ethernet кадры.

2. Отличия проводных и беспроводных сетей очевидны: в беспроводных сетях радиоволны распространяются свободно и каждое устройство в пределах досягаемости имеет доступ к абсолютно всем передаваемым кадрам. Что касается проводной сети, то отправитель пересылает Ethernet кадры на определённый порт (в смысле на сетевой порт устройства). То есть возможно, что данные просто не отсылаются отправителем на новый MAC-адрес, поскольку он ничего не знает о нём.

Тем не менее некоторые пользователи написали, что им удалось заставить работать проводной интерфейс в виртуальной машине после смены MAC-адреса — для этого они перевели его в неразборчивый режим. У меня этот способ не сработал (сеть по-прежнему недоступна), но вы можете попробовать самостоятельно (замените имя интерфейса eth0 на своё):

Что касается беспроводных интерфейсов в виртуальной машине, то там всё работает без необходимости перевода сетевого интерфейса в неразборчивый режим.

Команды для смены MAC-адреса Wi-Fi карты (замените имя интерфейса wlan0 на своё):

CentOS 6

На данный момент это последний CentOS, который используется классическое наименование сетевых интерфейсов в формате eth[x]. Все новые дистрибутивы по умолчанию используют другую схему наименований, но об этом позже.

В CentOS 6 нужно отредактировать два файла конфигурации системы и проблема исчезновения интерфейсов при клонировании пропадёт.

Редактируем, непосредственно файл конфигурации интерфейса:

CentOS 6 interface config

Итоговый результат для файла конфигурации интерфейса такой:

CentOS 6 interface config result

Теперь редактируем, файл конфигурации менеджера устройств.

В этом файле следует аккуратно удалить выделенный на скриншоте кусок строки.

CentOS 6 udev config

В результате получим рабочий файл, без привязки к mac адресу.

CentOS 6 udev config final

CentOS 7

В CentOS/RedHat 7 была введена новая схема наименования сетевых интерфейсов, призванная сделать наименование интерфейсов более предсказуемым. На самом деле схема не одна, а целых пять. В оригинале информация доступна на сайте RedHat, краткая суть:

  • Схема 1: Система преобразует информацию из BIOS и/или прошивки устройства для встроенных сетевых интерфейсов и преобразует в номер устройства. Например: eno1 (Ethernet network onboard 1). Если информация недоступна, система перейдёт на схему 2.
  • Схема 2: Система преобразует информацию из BIOS и/или прошивки устройства для сетевых интерфейсов PCI Express hotplug и преобразует в номер устройства. Например: ens1 (Ethernet network slot 1). Если информация недоступна, система перейдёт на схему 3.
  • Схема 3: Система преобразует информацию о физической точке подключения сетевого устройства и преобразует в номер устройства. Например: ensp2s0 (Ethernet network port 2 slot 1). Если информация недоступна, система сразу перейдёт на схему 5.
  • Схема 4: Система преобразует информацию из mac адреса в имя устройства. Например: enx78e7d1ea46da (Ethernet network with mac 78:e7:d1:ea:46:da). Данная схема отключена по умолчанию, но доступна для принудительного использования.
  • Схема 5: Классическая схема с назначением имени устройства ядром системы.

В CentOS 7 достаточно отредактировать исключительно файл конфигурации интерфейса. В моём случае интерфейс получил имя ens192, имя интерфейса в вашей системе можно узнать командой:

Итак, приступаем к редактированию

CentOS 7 interface config

Итоговый результат нашего редактирования:

CentOS 7 interface config final

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

Fedora 25

В последней версии операционной системы Fedora мак адрес не сохраняется в настройках демона udev, как это происходит в CentOS 6. Таким образом настройка полностью идентична настройке в CentOS 7 и описывать её отдельно не стоит.

Читайте также: