2

Я пытаюсь настроить мост Ethernet с OpenVPN. Я создаю свой мост, используя этот скрипт, полученный из руководства по установке на openvpn.org, слегка модифицированный для работы в Arch Linux.

# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"

# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="eth0"
eth_ip="192.168.1.202"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.1.255"

for t in $tap; do
    openvpn --mktun --dev $t
done

brctl addbr $br
#brctl addif $br $eth

for t in $tap; do
    brctl addif $br $t
done

for t in $tap; do
    ip link set dev $t promisc on
done

ip link set dev $eth promisc on

#ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast

Это работает, за исключением того, что сервер теряет свое интернет-соединение сразу после запуска скрипта, пока я не перезагружусь. Я все еще могу подключиться к клиенту, и маршрутизация всех данных через vpn с помощью push "redirect-gateway def1" кажется, работает - если я пытаюсь пинговать google.com на клиенте, я получаю сообщение от сервера, что это не может быть достигнуто. Что я делаю неправильно?

РЕДАКТИРОВАТЬ:
Я удалил мост к eth0, как предложено в этом вопросе. Я также прокомментировал ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast . Кажется, теперь все работает, за исключением того, что я не могу пропинговать клиента с сервера.

Когда я делаю трассировку на google.com, она проходит через 192.168.1.109, прежде чем пройти через мой маршрутизатор. Этот адрес находится в моих таблицах маршрутизации vpn, значит ли это, что трафик проходит через VPN? Другая проблема может заключаться в том, что клиент, с которым я тестировал, находится в той же локальной сети, что и сервер. Может ли это быть причиной проблем? Могут ли компьютеры в локальной сети с помощью моста Ethernet получать доступ к клиентам, даже если они не подключены к сети? Я попробую протестировать его из другой сети и дополню его своими выводами.

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

Вот как выглядят таблицы маршрутизации на сервере:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
0.0.0.0         192.168.1.2     0.0.0.0         UG        0 0          0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.1.109   127.0.0.1       255.255.255.255 UGH       0 0          0 lo

1 ответ1

3

Когда вы будете использовать мост с OpenVPN, вы соедините свой существующий eth0 и tap0 в мост br0 . Это правильно, если вы хотите, чтобы клиенты OpenVPN были частью той же сети, в которой находится eth0 и позволяли проходить широковещательный трафик.

Когда eth0 и tap0 находятся в мосте, они теперь похожи на порты на коммутаторе, их индивидуальные IP больше не имеют значения. Вы теряете интернет-соединение, потому что у br0 сейчас нет IP.

br0 теперь ваш NIC, и теперь ему нужен IP, либо через DHCP, либо назначенный вручную. Попробуйте dhclient -v br0 .

Если у вас не работает DHCP-сервер, вам нужно его настроить, только для br0 (можно сказать, что isc-dhcp-server выдает только IP-адреса на интерфейсе br0 а не eth0).

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