LINUX.ORG.RU

KVM как спрятать mac  адрес?

 ,


0

3

Добрый день Купил я выделенный сервер у hetzner с одним IP. Развернул там KVM. Сделал VLAN на него повесил bridge что бы организовать локальную сеть для виртуалок, а виртуалки через NAT выпустил в мир. И тут мне приходит письмо от hetzner

you can use virtualization, but you may only use MAC that we have authorized. The hardware MAC is always authorized, additional MAC can be request by buying single IP in robot. The cost neutral solution is to use a routed setup, so only 1 MAC is used for all VM when communicating with our network.

Мол нельзя светить mac адреса на их IP и предлагают как-то организовать маршрутизацию. Я не понимаю как и как это поможет убрать мак адрес с IP адреса?

~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether a8:a1:59:68:98:df brd ff:ff:ff:ff:ff:ff
    inet 147.252.47.91/27 brd 147.252.47.95 scope global enp8s0
       valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether a8:a1:59:68:98:df brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.250/24 brd 192.168.1.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::aaa1:59ff:fe68:98df/64 scope link
       valid_lft forever preferred_lft forever
4: enp8s0.100@enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default qlen 1000
    link/ether a8:a1:59:68:98:df brd ff:ff:ff:ff:ff:ff
8: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:f3:04:0d brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fef3:40d/64 scope link
       valid_lft forever preferred_lft forever
19: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:84:63:70 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe84:6370/64 scope link
       valid_lft forever preferred_lft forever
20: vnet2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
    link/ether fe:55:01:f3:04:1d brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc55:1ff:fef3:41d/64 scope link
       valid_lft forever preferred_lft forever
21: vnet3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:7f:90:5b brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe7f:905b/64 scope link
       valid_lft forever preferred_lft forever

Как сделать эту маршрутизацию о которой они говорят?

Используй ebtables и подменяй MAC на хостовой машине, делов-то

Это если тебе нужен мост. Или вообще не свети MAC-ом наружу и делай маршрутизацию, как уже сказали - один хрен судя по всему внешний IP-адрес у тебя один, значит придется делать SNAT и в iptables, иначе виртуалка интернета не увидит

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

Сделал VLAN на него повесил bridge что бы организовать локальную сеть для виртуалок, а виртуалки через NAT выпустил в мир

Удали VLAN из бриджа.
Если KVM требует физ.интерфейс в бридже (proxmox например) - то добавь туда dummy0 (modprobe dummy)

DiMoN ★★★ ()

На мой слух тебе предлагают NAT вместо того, что ты там сейчас называешь NAT.

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

Как удалить? Вот тут я плаваю. Если я удалю влан, то откуда у меня появится сетевая карта?

cat /etc/network/interfaces
### Hetzner Online GmbH installimage

source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback
iface lo inet6 loopback

auto enp8s0
iface enp8s0 inet static
  address xxx.xxx.xxx.xxx
  netmask 255.255.255.224
  gateway xxx.xxx.xxx.xxx
  # route xxx.xxx.xxx.64/27 via xxx.xxx.48.65
  up route add -net xxx.xxx.48.64 netmask 255.255.255.224 gw xxx.xxx.48.65 dev enp8s0

iface enp8s0 inet6 static
  address 2a01:4f8:202:343::2
  netmask 64
  gateway fe80::1


auto enp8s0.100
    iface enp8s0.500 inet manual

auto br0
    iface br0 inet static
    address 192.168.1.250
    netmask 255.255.255.0
    dns-nameservers 8.8.8.8 8.8.4.4
    vlan_raw_device enp8s0.100
    bridge_ports enp8s0.100
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0
    post-up iptables-restore < /etc/iptables.rules100
darksmoke ()
Ответ на: комментарий от darksmoke

Есть старый мануал - https://tldp.org/HOWTO/html_single/Masquerading-Simple-HOWTO/

В твоём случае внутренним интерфейсом является br0, а внешним - enp8s0.

enp8s0 в мост добавлять НЕ НУЖНО, просто делаешь как в руководстве, что я выше привел. В результате виртуальные машины получат доступ в Интернет, используя адрес, который назначен тебе на enp8s0

Когда всё отладишь - не забудь сохранить правила через iptables-save в файл /etc/iptables.rules100(из которого они сейчас у тебя подгружаются, судя по всему)

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

Во запутал ;) Я сразу не понял про что речь.

Тебе просто нужно бридж br0 выкинуть. Я хз как ты там вируталки делаешь, по умолчанию в KVM внутрення сетка default. На нее и вешаются гости.

Если делаешь через cli то как то так : virt-install –network default ….

Ну естественно на хозяине нормальный маскарад.

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

бридж br0 выкинуть

и какой тип виртуальной сети ему тогда указывать? macvtap? там есть некоторые особенности со связностью с хостом :-)

Пусть у него мост остается(пока не стоит задача изоляции трафика виртуалок друг от друга), но в этот мост никакие другие интерфейсы пихать не надо - это чисто интерфейс для связи хостовой машины с виртуалками и виртуалок - друг с другом. Во внешний мир оно всё выпускается через NAT.

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

Я писал чтобы br0 выкинул.

Я хз как там в бубунте, в Шапке когда libvirtd ставишь то сразу внутри default сетку пихают с внутренними устройстом типа : virbr0

Вот его и юзать …

default.xml

<network>
  <name>default</name>
  <uuid>7d84f985-d9fb-4d2a-8abd-96eb23aa7e7a</uuid>
  <bridge name="virbr0" />
  <mac address='52:54:00:5:74:83'/>
  <forward/>
  <ip address="192.168.122.1" netmask="255.255.255.0">
    <dhcp>
      <range start="192.168.122.2" end="192.168.122.254" />
    </dhcp>
  </ip>
</network>
mx__ ★★★★★ ()
Последнее исправление: mx__ (всего исправлений: 2)

У вас там схема сети bridge, когда виртуальная сетевуха пробрасывается через реальную сетевуху напрямую в сеть. На самом деле реальная сетевуха начинает кроме своего MAC-а, отлавливать пакеты для MAC-а виртуальной сетевухи и отдавать их в KVM (и обратно).

А вам надо сделать схему route, когда внутри KVM у вас внутренняя сеть на приватных IP, сидящая за системным NAT-ом. Пакетики из виртуалки попадают на NAT в хостовой системе, меняются IP и MAC адреса и отправляются от имени хостовой системы внаружу. В обратную сторону NAT определяет что пришел ответный пакет, меняет адреса на внутренние и отдает пакет KVM-у

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

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

Виртуалки через NAT наружу: sysctl net.ipv4.ip_forward=1 && iptables -t nat -A POSTROUTING -j MASQUERADE

### Hetzner Online GmbH installimage

source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback
iface lo inet6 loopback

auto enp8s0
iface enp8s0 inet static
  address xxx.xxx.xxx.xxx
  netmask 255.255.255.224
  gateway xxx.xxx.xxx.xxx
  # route xxx.xxx.xxx.64/27 via xxx.xxx.48.65
  up route add -net xxx.xxx.48.64 netmask 255.255.255.224 gw xxx.xxx.48.65 dev enp8s0

iface enp8s0 inet6 static
  address 2a01:4f8:202:343::2
  netmask 64
  gateway fe80::1

#удалить, не нужно, да и тут что-то не правильно
#auto enp8s0.100
#    iface enp8s0.500 inet manual

auto dummy0
iface dummy0 inet manual
        pre-up modprobe dummy
        post-down ip link del dev dummy0

auto br0
    iface br0 inet static
    address 192.168.1.250
    netmask 255.255.255.0
    dns-nameservers 8.8.8.8 8.8.4.4
#    vlan_raw_device enp8s0.100 <-- удалить
#    bridge_ports enp8s0.100 <-- вот это удалить, это и не нравится Hetzner
    bridge_ports dummy0 # <-- вот это добавить
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0
    post-up iptables-restore < /etc/iptables.rules100

Если наличие в бридже физического не требуется - можно dummy0 вообще не использовать.

DiMoN ★★★ ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей