0x05实现“外网访问”历程
起初不知道 user模式可直接访问外网,而且 ping 执行过不能 ping 通,而且平常使用的是 tap
然后弯路开始了,其实一般都是使用 tap ,这种方法是好的,估计可以执行,在搭建 Qemu 框架就把tap设置好,然后可以访问外网,也能访问 Docker 网络,然后进行 Docker 内部的端口转发(使用 tap 不能用 hostfwd )
环境:基于(完成 Qemu 框架+定时任务修改网络+自启动服务)的 Docker 中
方式:使用的是通过 br 给 tap 设置外网访问
弯路1: Docker 禁用eth0,这网络就访问不了了, Docker 中好多没有安装,很不方便(dhclient br0,没有 dhclient 命令),想着br设置一下就行了,就仿照 eth0 的设置成了静态,不行
apt-get install isc-dhcp-client
apt-get install iputils-ping
解决:网上搜了一会儿,用了 `ip router`,仿照正常的eth0设置,通过 `ip router add` 添加 br
ip route
ip route add default via 172.17.0.1 dev br0
ifconfig br0 172.17.0.2/16
弯路2:
设置好了tap0,使用tap0启动 `Qemu` ,平常需要登录进 `Qemu` 修改下网络才可以使用,结果由于自启服务.`mic` ,在 `Qemu` 启动过程中直接卡顿了,ssh 也不知道 ip 不能登录
ifconfig eth0 down
brctl addbr br0
brctl addif br0 eth0
brctl stp br0 off
brctl setfd br0 1
brctl sethello br0 1
ifconfig br0 0.0.0.0 promisc up
ifconfig eth0 0.0.0.0 promisc up
解决:网上搜了:-net tap 与 -netdiv user,才了解到:user 网络模式 ,可以联网是类似 nat 不能通过 ping 命令访问外网。
也就是无形当中,网络 已经是好的,可以访问外网。
到目前为止, Docker 实现固件模拟漏洞环境成功。