过去一周左右,我一直在互联网上寻找解决方案,但到目前为止,我已空手而归。
我的主机有三个网络接口,我需要在wlan1接口上执行一个phantomjs脚本。
我的想法是利用Docker,但遇到了将容器锁定到特定接口的问题。
这是我尝试过的,都重定向到另一个界面,或者没有网络访问权限。允许显式访问我需要的接口的唯一方法是关闭所有其他接口。
/etc/systemd/system/docker.service.d/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -b=wlan1 --ip=10.0.0.151 -H fd://
docker-compose.yml
version: "2"
networks:
open_network_1:
driver: bridge
driver_opts:
com.docker.network.host_binding_ipv4: "10.0.0.151"
services:
open_wifi_phantomjs:
image: https://github.com/ollihoo/phantomjs-docker-rpi
networks:
- open_network_1
ports:
- 10.0.0.151:80:80
- 10.0.0.151:443:443
我也摆弄了ip routing和iptables
ip route del 172.19.0.0/16
ip route add 172.19.0.0/16 dev wlan1 proto kernel scope link src 172.19.0.1
iptables -t nat -A POSTROUTING -s 172.19.0.0/16 -j SNAT --to-source 10.0.0.151
172.19将是docker-compose网络创建的子网,10.0.0.151将是分配给wlan1接口的ip。
任何见解都会受到赞赏,我相信我会帮助那些有类似目标的人。