Приветствую,
пробую создать свою docker образ в котором у меня:
- openvpn сервер
- nginx(в качестве реверс прокси за Flask web server)
- backend на flask + простенький frontend для удобного создания/удаления пользователей, в общем простой GUI для управления
- скрипты(tc) для шейпинга
Данный контейнер у меня запускается в VM с установленной внутри ubuntu а рулит этим всем обычный гипервизор VirtualBox который работает в основной ОС(win 11)
VM подключена к сети в режиме сетевого моста.
!Здесь могу ошибаться или понимать не совсем верно!
Докер контейнер тоже подключен к режиме сетевого моста к моей VM (внутри docker сети он имеет ip 172.18.... + как я понимаю там работает NAT docker-а)
Подключаться к openvpn серверу я пробую из VM где и работает данный docker контейнер(но так же пробовал и из основной ОС win 11).
Попробую объяснить суть проблемы, после успешного старта openvpn сервера и подключения к нему клиента я не вижу что бы весь трафик шел через мой VPN сервер(а если точнее то через его интерфейс),
- В выводе ifconfig внутри контейнера TX bytes и RX bytes практически не изменяются ни для одного из трех интерфейсов, меня это вводит в замешательство.. Через какой интерфейс тогда идет вообще трафик?
Ведь мой шейпер его должен 'резать' на виртуальном tun0 но согласно выводу ifconfig там практически ничего не ходит.....
- Также в логах сервера я вижу что он дропает пакеты клиента с исходным адресом 192.168.1.51(если я ничего не напутал).
Вывод любых команд постараюсь предоставить максимально оперативно, или выполнить любые де возможно кто то уже решал подобную задачу и сразу подскажет в чем дело.
Мой docker-compose.yml
version: '3.8'
services:
openvpn-webserver:
build:
context: .
dockerfile: ./openvpn-webserver/Dockerfile
image: openvpn-webserver
container_name: openvpn-webserver
cap_add:
- NET_ADMIN // даю права на управление сетевыми интерфейсами
devices:
- /dev/net/tun:/dev/net/tun
environment:
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=somepass
- USER_PASSWORD=somepass
- SECRET_KEY=somekey
- IP_ADDRESS_ASSIGNMENT_POOL=10.8.0.0
- SERVER_NETMASK=255.255.255.0
ports:
- "1194:1194/udp"
- "80:80"
volumes:
- openvpn-pki:/etc/openvpn/easy-rsa/pki
- openvpn-server-certs:/etc/openvpn/server_certs
- openvpn-user-configs:/var/www/web/user_configs
- openvpn-db:/var/www/web/db
- openvpn-logs:/var/log/openvpn
networks:
- vpn_net
restart: on-failure
networks:
vpn_net: // создаем свою сеть
driver: bridge // указываем что для этой сети будет использоваться драйвер bridge
volumes:
openvpn-pki:
openvpn-server-certs:
openvpn-user-configs:
openvpn-db:
openvpn-logs:
Моя таблица маршрутизации в VM при подключенном клиенте openvpn:
// router.lan это мой домашний роутер
root@tester-VirtualBox:/home/tester/Desktop/vpn# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.8.0.1 128.0.0.0 UG 0 0 0 tun0
default router.lan 0.0.0.0 UG 100 0 0 enp0s3
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
128.0.0.0 10.8.0.1 128.0.0.0 UG 0 0 0 tun0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-3e946f97b028
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
tester-VirtualB router.lan 255.255.255.255 UGH 0 0 0 enp0s3
Список интерфейсов внутри VM:
br-3e946f97b028: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.18.0.1 netmask 255.255.0.0 broadcast 172.18.255.255
inet6 fe80::42:ebff:fe43:82d5 prefixlen 64 scopeid 0x20<link>
ether 02:42:eb:43:82:d5 txqueuelen 0 (Ethernet)
RX packets 331 bytes 101036 (101.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 499 bytes 110396 (110.3 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:efff:fe1c:b2c1 prefixlen 64 scopeid 0x20<link>
ether 02:42:ef:1c:b2:c1 txqueuelen 0 (Ethernet)
RX packets 30446 bytes 1653640 (1.6 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 50509 bytes 130048944 (130.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.51 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 2001:861:5148:480:68d:1e8a:5f4d:ba96 prefixlen 64 scopeid 0x0<global>
inet6 2001:861:5148:480:a00:27ff:feec:970a prefixlen 64 scopeid 0x0<global>
inet6 fe80::a00:27ff:feec:970a prefixlen 64 scopeid 0x20<link>
ether 08:00:27:ec:97:0a txqueuelen 1000 (Ethernet)
RX packets 309341 bytes 404378246 (404.3 MB)
RX errors 0 dropped 11233 overruns 0 frame 0
TX packets 144674 bytes 56895275 (56.8 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 13040 bytes 3315371 (3.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 13040 bytes 3315371 (3.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.8.0.2 netmask 255.255.255.0 destination 10.8.0.2
inet6 fe80::c61a:6cff:f04f:7f69 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
RX packets 2 bytes 96 (96.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 258 bytes 18178 (18.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
veth6f0d5b3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::50a9:b0ff:feb9:fb6a prefixlen 64 scopeid 0x20<link>
ether 52:a9:b0:b9:fb:6a txqueuelen 0 (Ethernet)
RX packets 331 bytes 105670 (105.6 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 528 bytes 113797 (113.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Таблица маршрутизации внутри контейнера:
/etc/openvpn # route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default tester-VirtualB 0.0.0.0 UG 0 0 0 eth0
10.8.0.0 * 255.255.255.0 U 0 0 0 tun0
172.18.0.0 * 255.255.0.0 U 0 0 0 eth0
Список интерфейсов внутри контейнера:
/etc/openvpn # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:12:00:02
inet addr:172.18.0.2 Bcast:172.18.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:620 errors:0 dropped:0 overruns:0 frame:0
TX packets:397 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:135418 (132.2 KiB) TX bytes:130139 (127.0 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:1290 errors:0 dropped:0 overruns:0 frame:0
TX packets:1290 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:213995 (208.9 KiB) TX bytes:213995 (208.9 KiB)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.1 Mask:255.255.255.0
inet6 addr: fe80::8ae1:5bd4:d64d:daba/64 Scope:Link
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:234 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:14040 (13.7 KiB) TX bytes:336 (336.0 B)