У меня есть сервер OpenVPN, работающий на Ubuntu 16.04.1. Я настроил его как сервер TAP / Bridging и добавил конфигурацию моста в свой /etc/network/interfaces
файл. Мой клиент - ноутбук с Windows 10.
Мой клиент без проблем подключается к серверу и может получить доступ к веб-интерфейсу маршрутизатора в удаленной сети, используя свой локальный IP-адрес. Я также отслеживал интерфейс TAP на клиенте с помощью Wireshark и вижу, как широковещательные сообщения маршрутизируются с других хостов в удаленной сети. Однако я не могу пинговать или инициировать какое-либо сетевое взаимодействие с этими хостами, включая сам сервер. Кроме того, сервер не может проверить связь с клиентом, используя выделенный IP-адрес.
Я совершенно застрял и понятия не имею, почему мой клиент может разговаривать с маршрутизатором и использовать его интернет-соединение, но я невидим для всех других устройств в сети. Что я пропустил?
Любая помощь очень ценится.
subnet = 192.168.100.0/24
router ip = 192.168.100.1
router dhcp range = 192.168.100.100 - 192.168.100.199
OpenVPN server ip = 192.168.100.10
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.100.10
netmask 255.255.255.0
gateway 192.168.100.1
network 192.168.100.0
dns-nameservers 8.8.8.8 8.8.4.4
bridge_ports enp3s0
iface enp3s0 inet manual
up ip link set $IFACE up promisc on
down ifconfig $IFACE down
port 1194
proto tcp
dev tap0
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
topology subnet
server-bridge 192.168.100.1 255.255.255.0 192.168.100.200 192.168.100.210
push "route 192.168.100.0 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 8.8.8.8"
client-to-client
keepalive 10 120
tls-auth ta.key 0
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
;log openvpn.log
log-append openvpn.log
verb 6
up "/etc/openvpn/up.sh br0 enp3s0"
script-security 3
#!/bin/sh
BR=$1
ETHDEV=$2
TAPDEV=$3
/sbin/ip link set "$TAPDEV" up
/sbin/ip link set "$ETHDEV" promisc on
/sbin/brctl addif $BR $TAPDEV
net.ipv4.ip_forward=1
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-sshd tcp -- anywhere anywhere multiport dports ssh
ACCEPT all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-sshd (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
dev tap
proto tcp
remote my-public-ip-address 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
comp-lzo
verb 3
# Remote router
ping 192.168.100.1
Pinging 192.168.100.1 with 32 bytes of data:
Reply from 192.168.100.1: bytes=32 time=108ms TTL=64
Reply from 192.168.100.1: bytes=32 time=32ms TTL=64
# OpenVPN Server
ping 192.168.100.10
Pinging 192.168.100.10 with 32 bytes of data:
Reply from 192.168.100.200: Destination host unreachable.
Что ж, я чувствую себя довольно глупо. Оказывается в server.conf
линия
сервер-мост 192.168.100.1 255.255.255.0 192.168.100.200 192.168.100.210
должен прочесть
сервер-мост 192.168.100.10 255.255.255.0 192.168.100.200 192.168.100.210
т.е. первый аргумент - это IP-адрес сервера, а не адрес шлюза, который у меня был.