Tob*_*ler 5 linux networking chroot lxc namespace
虽然我可以简单地让例如sshd
在chroot
环境(“chrootenv”)中侦听与其父级(“parentenv”)不同的端口,但让该环境具有额外的 IP 和主机名并sshd
侦听该IP 的端口会更方便22. 所以基本上我想设置一个chroot
环境,使其表现得像网络中的一个单独的主机。如何做到这一点?或者这是LXC或用户模式 Linux(我缺乏经验)更适合的东西吗?
通常,chroot 是关于“限制权限”,而不是授予用户自己的 IF 来玩......
但无论如何:如果您想做一些工作,您可以在新的网络命名空间中启动您的 chroot 环境。您可以在此处找到介绍。然后是最后一个命令,该命令将您置于新的网络命名空间中,在上面的指南中是
ip netns exec NAME_OF_THE_NET_NS /bin/bash
Run Code Online (Sandbox Code Playgroud)
后面可以跟着一组常用的命令,
sudo mount -o bind /proc /pathtochroot/proc
sudo mount -o bind /dev /pathtochroot/dev
sudo mount -o bind /dev/pts /pathtochroot/dev/pts
sudo mount -o bind /sys /pathtochroot/sys
sudo chroot /pathtochroot /bin/bash
Run Code Online (Sandbox Code Playgroud)
现在你的 chroot 有一个 IF。
但接下来的问题是:你不认为使用 Linux 容器(LXC、OpenVZ、VServer)会更快更简单吗?带有接口的 chroot 与 Linux 容器不是一回事吗?通常,当不关心安全问题时,这就是我要走的路。
编辑:
好的,我看到了你的困境。不过,还有一种可能。在同一张卡上创建两个虚拟接口,并确保它们都从您的 DHCP 获得 IP 地址。现在配置 ssh 以绑定到其中之一。您可以为 ssh 客户端和 ssh 服务器执行此操作。对于客户端,指令是
ssh -b ip.address.tobin.to
Run Code Online (Sandbox Code Playgroud)
而对于服务器,您需要使用说明
ListenAddress ip.address.tobind.to
Run Code Online (Sandbox Code Playgroud)
在文件 /etc/ssh/sshd_config.conf 中。通过这种方式,您已强制主机仅使用一个接口。然后进入chroot jail,使用其他界面。我对busybox 的功能不太了解,所以我不能断言这会起作用。但它会起作用,如果这是普通电脑中的 chroot jail。