Подключение к VPN внутри Docker контейнера

Как то обратился ко мне товарищ с вопросом, а не создавал ли я vpn подключение внутри докер контейнера, на что я естественно сказал, что у меня и задачи то такой никогда не было. Тогда быстро нагуглил вариант со следующими параметрами "--net=host --privileged" и у него все заработало и я благополучно забыл про этот случай, но тут недавно вспомнил и решил разобраться, как обойтись без «privileged».


В общем я конечно снова полез в гугл и нашел вот эту ссылку.
Там рассказывается про параметр --cap-add(Add Linux capabilities) и значение которое ему нужно передать NET_ADMIN, ну и если у нас pptp соединение то неплохо бы еще прокинуть /dev/ppp устройство и загрузить модуль ядра ppp_generic иначе выдаст такую ошибку:
 /usr/sbin/pppd: Please load the ppp_generic kernel module.

В итоге мы получаем следующую команду запуска контейнера
docker run -it --rm --cap-add=NET_ADMIN --device=/dev/ppp --net=host ubuntu bash
Устанавливаем pptp-linux и net-tools в докере
apt update && apt install pptp-linux net-tools -y 
Создаем конфиг pptp подключения
cat > VPN <<EOL
pty "pptp <SERVER> --nolaunchpppd"
name <USERNAME>
password <PASSWORD>
remotename PPTP
require-mppe-128
lock
noauth
nobsdcomp
nodeflate
refuse-pap
refuse-eap
refuse-chap
refuse-mschap
ipparam vpn
EOL
Подключаемся
pon VPN

Вот и все, если у вас openvpn там маленько другой путь, но я думаю вы разберетесь!

Комментарии ()

  1. Александр 23 июня 2022, 15:29 # 0
    Не думаю что разберусь
    1. Сергей 13 декабря 2022, 16:24 # 0
      Ну да, фигня какая то, вообще ничего не понял. Кто знает, тому не надо, а кто не знает, хрен проссыт что тут сказано
      1. cloudsv 14 декабря 2022, 14:31(Комментарий был изменён) # 0
        эм
        modprobe tun
        docker run -it --rm --cap-add=NET_ADMIN --device=/dev/ppp --net=host ubuntu:22.04 bash
        apt update
        apt install openvpn
        
        Закидываешь конфиг openvpn и запускаешь
        cat <<EOF > config
        <PASTE>
        EOF
        openvpn config
        

      Авторизация

      GitHubGoogleVkontakteYandex
      Есть вопрос или предложение пиши в Telegram @cloudsv

      MTProto прokси для Telegram

      Прямой эфир

      Diego mont 25 мая 2023, 07:04
      Полезные боты в Telegram 2
      cloudsv 24 апреля 2023, 17:56
      Обновление Scala Rider G4 52
      cloudsv 12 ноября 2022, 19:16
      Установка и настройка minidlna 3
      cloudsv 03 ноября 2022, 03:42
      Настройка прокси mtproto для Telegram 52
      cloudsv 03 января 2022, 10:50
      Let's Encrypt это легко и просто 4
      cloudsv 10 сентября 2020, 13:17
      MySQL Workbench падает при подключении 2
      cloudsv 05 августа 2020, 11:57
      Мне вчера стукнуло 34 4
      cloudsv 07 августа 2023, 22:56
      Linux Asus ROG x13 flow 2022 GV301RE и Linux 0
      cloudsv 15 апреля 2023, 16:23
      Linux Уведомление о смены workspace в X11 Linux 0
      cloudsv 17 октября 2020, 09:55
      Linux Отключить DHCP IPv6 в systemd 0
      cloudsv 30 июля 2020, 21:54
      О жизни Мне вчера стукнуло 34 4
      cloudsv 15 апреля 2020, 15:45
      Linux Основные hotkeys редактора Vim 0
      cloudsv 01 октября 2019, 08:00
      Linux Локальный редирект порта в Linux 0
      cloudsv 25 августа 2019, 16:14
      О жизни Социальная сеть от Яндекса Aura 0
      cloudsv 30 июля 2019, 21:34
      О жизни 33 year old 0
      cloudsv 25 июня 2019, 18:29
      Telegram Полезные боты в Telegram 2