Согласно документам KVM, невозможно использовать мост с беспроводной сетевой картой. Я не знаю, почему, хотя я использовал гостевой мост на VirtualBox.
Я потратил несколько часов на то, чтобы выяснить, как подключить гостя к беспроводной сети хоста, и обнаружил, что проще всего это сделать с помощью TAP-устройства. Единственным недостатком этого метода является то, что вы не можете использовать DHCP на гостевой машине, и вам нужно вручную указать IP-адрес из подсети беспроводной сети (, что может вызвать конфликты IP-адресов или неудобства в случае развертывания большого количества виртуальных машин ).
Вот шаги для подключения гостя к беспроводной сети хоста с помощью TAP-устройства:
0/ Включить маршрутизацию IPv4 для ядра Linux
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
1/ Создайте кран-устройство с именем tap0, доступное для пользователя guest (Замените своим именем пользователя )без sudo:
sudo ip tuntap add mode tap tap0 user guest
2/ Назначьте IP-адрес устройству tap0 (Он не обязательно должен принадлежать подсети беспроводной сети):
sudo ip addr add 10.10.10.10/24 dev tap0
sudo ip link set tap0 up
3/ Используйте parprouted
(. Возможно, вам придется установить его )для реализации прокси-арп-моста, который позволяет соединить гостевой Ethernet за беспроводным сетевым адаптером хоста.
sudo parprouted wlan0 tap0
(Замените wlan0 на беспроводной интерфейс вашего хоста)
4/ Добавление некоторых записей в таблицы маршрутизации, чтобы позволить пакетам проходить через концы ответвительного устройства:
sudo iptables -A INPUT -i tap0 -j ACCEPT
sudo iptables -A FORWARD -i tap0 -j ACCEPT
sudo iptables -A FORWARD -o tap0 -j ACCEPT
На госте назначьте статический IP-адрес из подсети беспроводной сети хоста. Например, если ваш wlan0 находится на 192.168.1.0/24, то гость можно настроить с помощью
sudo ip addr add 192.168.1.30/24 dev eth0
(eth0 — сетевая карта вашего гостя)
или навсегда в /etc/network/interfaces с:
auto eth0
iface eth0 inet static
address 192.168.1.30
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.25
Запустите гостевую систему с помощью:
kvm -hda guest.img -m 512 -net nic -net tap,ifname=tap0,script=no
Теперь проверка связи между всеми машинами, подключенными к вашей беспроводной сети, и гостями.
awk '/string1/{c=7}; c<1; {c-=gsub(/string2/, "&")}' file
c
изначально равно 0 и устанавливается равным 7, если string1
найдено. Строка печатается всякий раз, когда c<1
.
Функция gsub
возвращает количество раз, когда string2
встречается в каждой строке. Счетчик c
уменьшается на это значение.
Перл
perl -ne '
if (my $e = /string1/... s/string2/$&/g >= 7) {
$_.= $e =~ /E0/ ? next : <>, redo;
}
print;
' file
Позикс-сед:
sed -ne '
/string1/!{p;d;}
:loop
n
/string2/H
g;s//&/7;t
b loop
' file
Выход:
whatever
anything else foo string2
xpto
string2
foo whatever