Невозможно `ssh` из контейнера с`openvpn`

Базовая настройка

С помощью:

  • Fedora 30, полностью обновлена ​​(ядро 5.1.19)
  • Подман 1.4.4

У меня есть этот Dockerfile:

FROM fedora:30

ENV LANG C.UTF-8

RUN dnf upgrade -y \
    && dnf install -y \
        openssh-clients \
        openvpn \
        slirp4netns \
    && dnf clean all

CMD ["openvpn", "--config", "/vpn/ovpn.config", "--auth-user-pass", "/vpn/ovpn.auth"]

Который я строю с:

podman build -t peque/vpn .

Теперь, чтобы успешно запустить его, я должен позаботиться о некоторых проблемах SELinux (см. Подключение к VPN с Podman).

Исправление проблем с разрешением SELinux

sudo dnf install udica

Я определяю это ovpn_container.cil Пользовательская политика для контейнера VPN:

(block ovpn_container
    (blockinherit container)
    (blockinherit restricted_net_container)
    (allow process process (capability (chown dac_override fsetid fowner mknod net_raw setgid setuid setfcap setpcap net_bind_service sys_chroot kill audit_write net_admin)))

    (allow process default_t (dir (open read getattr lock search ioctl add_name remove_name write)))
    (allow process default_t (file (getattr read write append ioctl lock map open create)))
    (allow process default_t (sock_file (getattr read write append open)))

    (allow process tun_tap_device_t (chr_file (ioctl open read write)))
    (allow process self (netlink_route_socket (nlmsg_write)))
    (allow process unreserved_port_t (tcp_socket (name_connect)))
)

Я применяю политику с:

sudo semodule -r ovpn_container
sudo semodule -i ovpn_container.cil /usr/share/udica/templates/{base_container.cil,net_container.cil}

Запуск контейнера

Теперь я могу успешно запустить контейнер с:

podman run -v $(pwd):/vpn:Z --cap-add=NET_ADMIN --device=/dev/net/tun --security-opt label=type:ovpn_container.process -it peque/vpn

вопросы

Как только контейнер запускается, я открываю терминал внутри контейнера, из которого я хочу ssh на удаленные серверы:

podman exec -it container_name bash

Из контейнера я могу ssh к удаленным серверам успешно, но только если они не находятся внутри VPN.

Когда я пытаюсь ssh к серверам в VPN, он застревает на некоторое время, а затем выдает эту ошибку:

$ ssh server.domain.com
ssh: connect to host server.domain.com port 22: Connection refused 
kex_exchange_identification: Connection closed by remote host

Чего мне не хватать?

0 ответов

Другие вопросы по тегам