我有两个独立的networking,一个是可信的,一个是不可信的。 可信networking包含一台服务器。
蓝色是现有的,可信赖的networking,大盒子是服务器,通过eth0连接到可信networking。
我现在要开始使用服务器上的可用资源来托pipeDocker容器中包含的服务到不可信networking(红色)。
我希望所有绑定到0.0.0.0的东西像往常一样工作,但不要绑定到eth1和docker1。 这意味着nginx应该能够与除eth1和docker1之外的所有接口进行通信。 它不应该能够与192.168.2.0/24子网(也包括docker1网桥)进行通信。 这也适用于sshd和桑巴,以及任何服务。 没有来自192.168.2.0/24的设备应该能够在服务器上build立ssh会话或通过samba连接。 服务器上不应该发送192.168.2.0/24到其他子网的路由。
因此,192.168.1.0/24networking上的服务器和任何设备应该能够访问容器1到3,但不能访问4和5.容器4和5不能访问192.168.1.0/24上的任何东西networking。
我相信这应该是可以通过使用iptables。 另外,我将如何configurationdocker桥?
我缺乏iptables的经验,更多的是使用dockernetworking,所以我们将不胜感激。
(这两个networking之间的所有通信应该只发生在一个路由器上,路由器正在使用NAT,因此子网192.168.1.0/24可以通过它访问192.168.2.0/24,但是只有路由器上的端口转发允许它,但是这是一个不同的(并解决了)问题。)
更新 :会添加这些规则这个工作吗?
iptables -A INPUT -i eth1 -j DROP iptables -A OUTPUT -i eth1 -j DROP iptables -A FORWARD -i eth1 -j DROP iptables -A INPUT -i docker1 -j DROP iptables -A OUTPUT -i docker1 -j DROP iptables -A FORWARD -i docker1 -j DROP iptables -A FORWARD -i eth1 -o docker1 -j ACCEPT iptables -A FORWARD -i docker1 -o eth1 -j ACCEPT
如果是这样,例如容器1如何连接到运行在container4上的HTTP服务器,如果它不知道要达到192.198.2.10,它必须首先通过eth0退出,因为试图直接联系192.168.2.10将导致数据包丢弃。