Я новичок в сетевых технологиях и мне нужна помощь.
Я пытаюсь настроить TAP-подключение с помощью OpenVPN для доступа к устройствам, которые находятся в VLAN на моем удаленном сервере. Прямо сейчас я могу подключиться и пинговать интерфейс (172.20.0.101), но я не могу пинговать ничего в VLAN (например, 172.20.0.2). Мне все равно, что VLAN проходит через мое VPN-подключение, я просто хочу видеть эти устройства.
«Публичный» IP-адрес сервера — 10.249.2.93 (на самом деле это локальная сеть, к которой я подключаюсь через другой VPN).
Подсеть, с которой я хочу общаться, — 172.20.0.0/24, которая находится на vlan.3072, согласно ifconifg. Связанный физический интерфейс — enp3s0.
У меня это работало на другом сервере, который не использует VLAN, т.е. я смог успешно подключиться к устройствам в обычной локальной сети за этим сервером, поэтому я думаю, что проблема в VLAN.
Может кто-нибудь указать мне правильное направление? Любая помощь будет очень кстати, так как я схожу с ума =P
Сервер работает под управлением Ubuntu 18.04 LTS, OpenVPN 2.4.4
Клиент работает под управлением Windows, OpenVPN GUI 11.14.0.0
сервер.conf:
port 1194
proto udp
dev tap0
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
ifconfig-pool-persist /var/log/openvpn/ipp.txt
server-bridge 172.20.0.101 255.255.255.0 172.20.0.200 172.20.0.240
keepalive 10 120
tls-auth ta.key 0 # This file is secret
key-direction 0
cipher AES-256-CBC
auth SHA256
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 4
explicit-exit-notify 1
tls-auth ta.key 0
key-direction 0
cipher AES-256-CBC
auth SHA256
dh dh.pem
user nobody
group nogroup
cert server.crt
key server.key
clinet.ovpn:
client
dev tap
proto udp
remote 10.249.2.93 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA256
key-direction 1
script-security 2
verb 4
# cert and keys omitted
правила ufw:
sudo nano /etc/ufw/before.rules
#change:
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.20.0.0/24 -o br0 -j MASQUERADE
COMMIT
пересылка:
sudo nano /etc/sysctl.conf
#change:
net.ipv4.ip_forward=1
sudo sysctl -p
Обновления правил:
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
sudo ufw disable
sudo ufw enable
sudo iptables -A INPUT -i tap0 -j ACCEPT
sudo iptables -A INPUT -i br0 -j ACCEPT
sudo iptables -A FORWARD -i br0 -j ACCEPT
Скрипт запуска моста:
# 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="enp3s0"
eth_ip="fe80::a5a:11ff:fe33:e6e3"
eth_netmask="255.255.255.0"
eth_broadcast="172.20.0.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
ifconfig $t 0.0.0.0 promisc up
done
ifconfig $eth 0.0.0.0 promisc up
ifconfig $br inet6 add fe80::a5a:11ff:fe33:e6e3/64 up
ifconfig br0:0 172.20.0.101 netmask 255.255.255.0 broadcast 172.20.0.255 up
ifconfig (не показаны br0 или tap0, потому что я не могу запустить их прямо сейчас, и есть еще масса других veth*, которые я пропустил):
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:60ff:fe8c:45de prefixlen 64 scopeid 0x20<link>
ether 02:42:60:8c:45:de txqueuelen 0 (Ethernet)
RX packets 74394 bytes 900967774 (900.9 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 63778 bytes 901066960 (901.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.249.2.93 netmask 255.255.240.0 broadcast 10.249.15.255
inet6 fe80::c600:adff:fe94:e303 prefixlen 64 scopeid 0x20<link>
ether c4:00:ad:94:e3:03 txqueuelen 1000 (Ethernet)
RX packets 960832 bytes 1168467699 (1.1 GB)
RX errors 0 dropped 166 overruns 0 frame 0
TX packets 535763 bytes 73093159 (73.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16 memory 0xb2500000-b2520000
enp1s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 08:5a:11:33:e8:00 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp3s0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet6 fe80::a5a:11ff:fe33:e6e3 prefixlen 64 scopeid 0x20<link>
ether 08:5a:11:33:e6:e3 txqueuelen 1000 (Ethernet)
RX packets 9900475 bytes 7053325760 (7.0 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10464489 bytes 8238594873 (8.2 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
kube-bridge: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1480
inet 10.244.0.1 netmask 255.255.255.0 broadcast 10.244.0.255
inet6 fe80::841:c2ff:fed1:3642 prefixlen 64 scopeid 0x20<link>
ether 0a:41:c2:d1:36:42 txqueuelen 1000 (Ethernet)
RX packets 2110720 bytes 234803960 (234.8 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2264621 bytes 419964189 (419.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 8383864 bytes 4038115926 (4.0 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8383864 bytes 4038115926 (4.0 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
veth83317517: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1480
inet6 fe80::d4c3:65ff:fe76:7592 prefixlen 64 scopeid 0x20<link>
ether d6:c3:65:76:75:92 txqueuelen 0 (Ethernet)
RX packets 28251 bytes 7794531 (7.7 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 29314 bytes 3608931 (3.6 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vlan.2560: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.19.0.1 netmask 255.255.128.0 broadcast 172.19.127.255
inet6 fe80::a5a:11ff:fe33:e6e3 prefixlen 64 scopeid 0x20<link>
ether 08:5a:11:33:e6:e3 txqueuelen 1000 (Ethernet)
RX packets 70170 bytes 25019840 (25.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 179 bytes 17252 (17.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vlan.2816: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.19.130.100 netmask 255.255.255.0 broadcast 172.19.130.255
inet6 fe80::a5a:11ff:fe33:e6e3 prefixlen 64 scopeid 0x20<link>
ether 08:5a:11:33:e6:e3 txqueuelen 1000 (Ethernet)
RX packets 1243206 bytes 65936318 (65.9 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1194999 bytes 99652577 (99.6 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vlan.3072: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet 172.20.0.100 netmask 255.255.255.0 broadcast 172.20.0.255
inet6 fe80::a5a:11ff:fe33:e6e3 prefixlen 64 scopeid 0x20<link>
ether 08:5a:11:33:e6:e3 txqueuelen 1000 (Ethernet)
RX packets 8544935 bytes 6820405811 (6.8 GB)
RX errors 0 dropped 511 overruns 0 frame 0
TX packets 9265376 bytes 8138226312 (8.1 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
за исключением ip a:
7: vlan.3072@enp3s0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 08:5a:11:33:e6:e3 brd ff:ff:ff:ff:ff:ff
inet 172.20.0.100/24 brd 172.20.0.255 scope global vlan.3072
valid_lft forever preferred_lft forever
inet6 fe80::a5a:11ff:fe33:e6e3/64 scope link
valid_lft forever preferred_lft forever
решение1
Ваша конфигурация моста в bridge-start
создает мост между tap
и enp3s0
, поэтому любые кадры, поступающие от клиента, попадают на enp3s0
без тегов vlan. Вот почему он работал без VLAN, и вот почему он не работает с ними. Вам нужно создать мост между tap
и vlan.3072
на стороне сервера, чтобы ваша настройка работала, поэтому просто измените enp3s0
на vlan.3072
в вашем bridge-start
скрипте.