Задать вопрос
@HexUserHex

Почему возникают проблемы с маршрутизацией при настройке openvpn сервера в docker?

Приветствую,

пробую создать свою 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)
  • Вопрос задан
  • 363 просмотра
Подписаться 1 Сложный 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы