登录
  • 人们都希望被别人需要 却往往事与愿违
  • 每当有事情发生, 懦夫会问: '这么做安全吗?' 患得患失者会问: '这么做明智吗?' 虚荣者会问: '这么做受欢迎吗?' 但是良知只会问: '这么做正确吗[email protected]马丁·路德·金

使用docker开NAT小鸡

瞎搞 Benny小土豆 173次浏览 1035字 6个评论
文章目录[显示]

人们常说,「精神病人思路广,智障儿童欢乐多」。像我这种病得不轻的人,自然就在想有没有办法拿docker来开NAT小鸡呢?

Docker作为一种容器化技术,通过cgroup可以在一定程度上做到资源隔离,虽然不算虚拟化,但是也可以勉强开NAT小鸡玩玩。技术要点大概有如下:

  • 小鸡里需要ssh,而且需要一个守护进程
  • 需要映射端口
  • 需要限制CPU、内存等资源
  • 制作各种OS的image

容器sshd

N多年前,当我第一次接触到Docker时,我曾经在网络上搜索“如何ssh到容器内”。

(╯‵□′)╯︵┴─┴ 容器一般不是这么用的啦。

但既然开NAT小鸡,就必然要ssh进去了。通常来说就是在容器里安装配置sshd或者dropbear,然后把端口publish就可以了。直接&可不太好,更好的方案是我们需要一个守护进程。可以用Go port of supervisor,https://github.com/ochinchina/supervisord

映射端口

这个就简单了,跑容器的时候直接 -p就好了,由于是NAT小鸡,直接让docker随机分配端口岂不是更好!

docker run -p 22 image

限制资源

限制CPU和RAM比较容易,run的时候加上-cpus-m就可以了

限制磁盘比较麻烦,可以参考这篇 https://www.lizi.tw/web/21084.html

OS image

这个其实就是个手工活,写好Dockerfile,带好sshd,然后build就可以了。

然后到了真正要开小鸡的时候,一顿查之前的命令,不停地docker run xxx,有没有更好的、鼠标点点点的方案呢?答案当然是有的!

欢迎使用我fork之后魔改的Docker Web,真正实现了鼠标点点点即可开NAT小鸡的功能!

https://github.com/BennyThink/EasyDockerWeb

clone回来,yarn && yarn start,然后fab prepare(提前pip3 install fabric3)即可,默认用户名密码是admin/admin

在Image下面可以选择所有我构建好的image,用户名密码均为root/root

使用docker开NAT小鸡

比如这里我们选择Kali,然后给这个小鸡开80和443端口,并映射到宿主机的随机端口,512M内存,0.5个CPU

点击确认,你的NAT小鸡就开好了!

使用docker开NAT小鸡

点击确认

使用docker开NAT小鸡

你的小鸡好了,赶快ssh一下?

使用docker开NAT小鸡

选择Debian Sid,80-90端口

使用docker开NAT小鸡

使用docker开NAT小鸡

多么亦可赛艇!就是这么愉快!bug多也不修,能开小鸡就挺好

 


文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://dmesg.app/docker-nat-vps.html
喜欢 (1)
分享:-)
Benny小土豆
关于作者:
If you have any further questions, feel free to contact me in English or Chinese.
发表我的评论(代码和日志请使用Pastebin或Gist)
取消评论

                     

去你妹的实名制!

  • 昵称 (必填)
  • 邮箱 (必填,不要邮件提醒可以随便写)
  • 网址 (选填)
(6)个小伙伴在吐槽
  1. why not systemd-nspawn? 凑字数专用
    bbbba2021-12-26 00:27 回复
  2. 為嘛不直接跑 systemd ?然後跟 OpenVZ 的 VPS 用戶體驗差不了多少……
    去你妹的实名制!2021-12-24 19:48 回复
    • Benny小土豆
      systemd要 --privileged而且一顿配置,等于把你的host交给了用户。
      --本评论由Telegram Bot回复~❤️
      Benny小土豆2021-12-24 19:52 回复
      • CAP_SYS_ADMIN 不是必須的啊,有那麼多 systemd in unprivileged container 的方案……
        去你妹的实名制!2021-12-25 08:46 回复
        • Benny小土豆
          这也太麻烦了……麻烦要死,而且对于某些OS比如alpine 直接是OpenRC的。因此不如直接supervisor 简单通用
          --本评论由Telegram Bot回复~❤️
          Benny小土豆2021-12-25 09:53
        • 寫成 Dockerfile,一次折騰,終身白嫖。
          去你妹的实名制!2021-12-25 10:33