Назад | Перейти на главную страницу

Пытаюсь соединить сетевой адаптер. Что означает эта ошибка?

Я хотел бы соединить br0 и tap0 для моего сервера OpenVPN, но я получаю сообщение об ошибке внизу этого сообщения.

Задний план

На сервере есть один физический eth0 с IP xxx.xxx.68.58.

Мост должен иметь xxx.xxx.85.5 и tap0 Сетевая карта, с которой клиенты OpenVPN получают IP-адрес, находится в диапазоне xxx.xxx.85.50 - xxx.xxx.85.100.

Чтобы сделать мост, я делаю:

#!/bin/bash

br="br0"
tap="tap0"
eth="eth0:0"

eth_ip="xxx.xxx.85.5"
eth_netmask="255.255.255.0"
eth_broadcast="255.255.71.255"

openvpn --mktun --dev $tap
brctl addbr $br
brctl addif $br $eth
brctl addif $br $tap
ifconfig $tap 0.0.0.0 promisc up

echo "debug"
ifconfig $eth 0.0.0.0 promisc up
echo "debug"

ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast

но получите эту ошибку;

Tue Sep 13 10:40:46 2011 TUN/TAP device tap0 opened
Tue Sep 13 10:40:46 2011 Persist state set to: ON
debug
SIOCSIFFLAGS: Cannot assign requested address
SIOCSIFFLAGS: Cannot assign requested address
SIOCSIFFLAGS: Cannot assign requested address
debug

Что я делаю не так?

Обновить

С участием set -vx добавлено в верхней части скрипта, я получаю:

br="br0"
+ br=br0
tap="tap0"
+ tap=tap0
eth="eth0:0"
+ eth=eth0:0

eth_ip="xxx.xxx.85.5"
+ eth_ip=xxx.xxx.85.5
eth_netmask="255.255.255.0"
+ eth_netmask=255.255.255.0
eth_broadcast="255.255.71.255"
+ eth_broadcast=255.255.71.255

openvpn --mktun --dev $tap
+ openvpn --mktun --dev tap0
Tue Sep 13 11:42:33 2011 TUN/TAP device tap0 opened
Tue Sep 13 11:42:33 2011 Persist state set to: ON
brctl addbr $br
+ brctl addbr br0
brctl addif $br $eth
+ brctl addif br0 eth0:0
brctl addif $br $tap
+ brctl addif br0 tap0

ifconfig $tap 0.0.0.0 promisc up
+ ifconfig tap0 0.0.0.0 promisc up
ifconfig $eth 0.0.0.0 promisc up
+ ifconfig eth0:0 0.0.0.0 promisc up
SIOCSIFFLAGS: Cannot assign requested address
SIOCSIFFLAGS: Cannot assign requested address
SIOCSIFFLAGS: Cannot assign requested address
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
+ ifconfig br0 xxx.xxx.85.5 netmask 255.255.255.0 broadcast 255.255.71.255

Было бы очень полезно увидеть вывод отдельных команд, а не только командный файл; или вы могли бы положить set -vx в верхней части командного файла, что даст гораздо более полезный результат.

Но на первый взгляд проблема может заключаться в том, что вы пытаетесь поработить подинтерфейс Ethernet (eth0: 0) мостом, а не физическим портом. Что будет, если заменить

eth="eth0:0"

с участием

eth="eth0"

вверху сценария?

Если вы не хотите этого делать, потому что используете eth0 для разных целей, не могли бы вы более подробно объяснить, чего вы пытаетесь достичь?