我正在尝试构建一个安装了 xrdp 服务的 linux docker 容器,以便我不仅可以通过 localhost 接口,还可以通过主机网络 eth0 ip 接口远程访问 RDP 服务。我无法理解我在这里缺少 docker 网络并正确启动容器。Docker 在 Ubuntu Linux 20.04 上运行。作为测试,当我运行这个 docker 命令时:
docker run --rm -d --network host --name my_nginx nginx
我观察到 nginx 正在侦听端口 80 并暴露在 localhost 接口上,我可以使用浏览器访问它。验证:
sudo netstat -tulpn | grep 80
现在这是我正在尝试构建和启动的 linux 容器。我使用 Dockerfile 来启动 xrdp 服务。
FROM kalilinux/kali-rolling
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get -y update && apt-get -y dist-upgrade && apt-get -y autoremove && apt-get install -y wget && apt-get clean
RUN apt-get -y install vim net-tools whois netcat exploitdb man-db dirb nikto wpscan uniscan nodejs npm python3-pip tor proxychains
RUN apt-get install xrdp lxde-core lxde tigervnc-standalone-server -y
COPY ./xrdp.ini /etc/xrdp/xrdp.ini
COPY ./Xwrapper.config /etc/X11/Xwrapper.config
RUN service xrdp start
ENTRYPOINT ["/bin/bash"]
现在我构建容器并尝试像这样运行它:
docker run --rm -d --network host --name my_kali kali
容器看起来不像在运行,并且没有端口 3389 监听 lo 或 eth0 接口。现在,当我以另一种方式运行容器时,我可以通过 Docker0 IP 接口 (172.17.0.2) 使用 RDP 客户端访问主机:
docker run -ti kali
但这只会暴露 Docker0 专用网络上的 RDP 服务。目标或用例是构建一个可以通过主机的 eth0 接口访问的容器。用户可以 RDP 进入它并使用 GUI 运行工具。对我在这里缺少的任何帮助表示赞赏。