1

Я узнал, как добавить виртуальные сетевые карты в гостевую систему в VirtualBox, просто используя Shared Adapter , тогда все виртуальные сетевые карты и сетевые карты моего хоста будут отображаться как настоящие сетевые карты для интернет-провайдера.

Поэтому я думаю, что должен быть способ добавить эти виртуальные сетевые карты на мой компьютер без разрешения VBox. Я попытался с помощью ip link add link enp0s3 type macvlan .

ip netns add ns
ip link add link enp0s3 type macvlan
ip link set netns ns macvlan0
ip netns exec ns ip link set up macvlan0
ip netns exec ns ip addr add 192.168.222.101/24 dev macvlan0
ip addr add 192.168.222.1/24 dev enp0s3
ping 192.168.222.101
PING 192.168.222.101 (192.168.222.101) 56(84) bytes of data.
^C
--- 192.168.222.101 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms

Я также попробовал ip link add link enp0s3 type macvlan mode bridge и ip link add link enp0s3 type macvtap [mode bridge] , но это не помогло.

1 ответ1

1

Самым простым решением, вероятно, является использование macvlans . Сходными решениями являются macvtap и ipvlan, которые лишь минимально отличаются от приведенных выше; трудно выбрать один, а не другой, без множества дополнительных деталей. Но следующее обязательно сработает.

Для каждого сетевого пространства имен назначьте интерфейс macvlan следующим образом:

 NNS=TheNameOfYourNetworkNamespace
 ip netns add $NNS
 ip link add link eth0 mac$NNS address 56:61:4f:7c:77:db type macvlan mode bridge
 ip link set dev mac$NNS netns $NNS

Я использовал конкретный MAC-адрес, вы можете просто отбросить адрес детали address 56:61:4f:7c:77:db если вы не заинтересованы в его указании, оставляя это на волю случая.

Теперь войдите в пространство имен сети и настройте сеть:

 ip netns exec $NNS xterm

и из открытого xterm выполните:

 ip link set dev $NAME_OF_MAC_INTERFACE up
 ip link set dev lo up
 ip addr add 127.0.0.1 dev lo
 dhclient -v mac$NNS

и вы сделали.

Последний комментарий: mode bridge использованный выше, позволяет всем сетевым пространствам имен напрямую общаться друг с другом, то есть без прохождения через коммутатор. Однако, используете ли вы такую опцию или нет, ваш хост не сможет общаться с сетевыми пространствами имен, если вы не создадите macvlan для самого хоста, и в этом случае он сможет взаимодействовать с другими NNS, как если бы он сам были одним из них.

РЕДАКТИРОВАТЬ:

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

 # ip addr show dev eth0
   2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether e8:e0:b7:be:72:6a brd ff:ff:ff:ff:ff:ff
   inet 192.168.73.55/24 brd 192.168.73.255 scope global eth0
   valid_lft forever preferred_lft forever
   inet6 fe80::eae0:b7ff:febe:726a/64 scope link 
   valid_lft forever preferred_lft forever
  # NNS=ns1
  # ip netns add $NNS
  # ip link add link eth0 mac$NNS address 56:61:4f:7c:77:db type macvlan 
  # ip link set dev mac$NNS netns $NNS
  # ip netns exec $NNS /bin/bash
  # ip link set dev macns1 up
  #  ip link set dev lo up
  #  ip addr add 127.0.0.1 dev lo
  # dhclient -v macns1
    Internet Systems Consortium DHCP Client 4.2.4
    Copyright 2004-2012 Internet Systems Consortium.
    All rights reserved.
    For info, please visit https://www.isc.org/software/dhcp/

    Listening on LPF/macns1/56:61:4f:7c:77:db
    Sending on   LPF/macns1/56:61:4f:7c:77:db
    Sending on   Socket/fallback
    DHCPDISCOVER on macns1 to 255.255.255.255 port 67 interval 3 (xid=0x473d2846)
    DHCPREQUEST of 192.168.73.48 on macns1 to 255.255.255.255 port 67 (xid=0x46283d47)
    DHCPOFFER of 192.168.73.48 from 192.168.73.1
    DHCPACK of 192.168.73.48 from 192.168.73.1
    bound to 192.168.73.48 -- renewal in 21288 seconds.
  # ping -c1 superuser.com
    PING superuser.com (104.16.127.192) 56(84) bytes of data.
    64 bytes from 104.16.127.192: icmp_seq=1 ttl=53 time=12.9 ms

    --- superuser.com ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 12.927/12.927/12.927/0.000 ms

Как видите, он отлично работает на моей системе. Вы можете проверить, что IP-адрес, который я получаю в NNS (192.168.73.48), отличается от IP-адреса на хосте, 192.168.73.55.

Если это не работает в вашей системе, мне нужно что-то большее, чем просто не работает, потому что я не могу воспроизвести вашу ошибку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .