Tag: iptables

自定义端口转发到docker集装箱

我在主机H1上有一个Docker容器C1,它公开了一个我无法通过docker run -p选项映射的端口。 我必须通过iptables来做端口转发。 我想出了以下规则。 iptables -t nat -I DOCKER 1 -p tcp –dport $HOST_PORT -j DNAT –to-destination $CONTAINER_IP_ADDRESS:$CONTAINER_PORT 情况1:在H1上时,我可以用H1的IP telnet到C1。 情况2:在C1上时,我无法用H1的IP telnet到C1。 我很好奇docker run -p如何docker run -p做转发,因为情况2使用该选项。 我已经分析了使用它时创build的iptables规则,但无法获得相同的结果。 现在我甚至开始在容器中做tcpdump,发现在自己做转发的时候,数据包被发送到H1,但是什么都没有回来。 任何人都可以告诉我什么docker工人使用转发选项时有什么不同? 编辑1: 使用端口映射是不可能的,因为Elastic Beanstalk V1不支持,我不能使用V2。 我正在做以下事情: 情况1 root@H1: telnet $HOST_IP $HOST_PORT 案例2 root@C1: telnet $HOST_IP $HOST_PORT

所有docker集装箱的透明代理

我从防火墙后面运行docker集装箱,总是有问题,我必须在每个容器中设置代理参数。 当我从Dockerfile运行构build时,这是特别糟糕的。 我有redsocks设置,以便代理自动从我的主机出站stream量,但docker集装箱似乎不通过这个链。 user@user ~ $ sudo iptables -L -t nat -n Chain PREROUTING (policy ACCEPT) target prot opt source destination REDSOCKS_FILTER tcp — 0.0.0.0/0 0.0.0.0/0 DOCKER all — 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination REDSOCKS_FILTER tcp […]

从docker到主机的组播

目前我正试图通过我的主机的eth2主机接口从泊坞窗的应用程序发送一些多播数据。 我曾经在–net=host中使用过–net=host选项,而且这个工作完美,不幸的是,因为我需要打开多个使用相同端口的实例,所以我不可能再使用net = host。 我必须通过docker0的bridged模式 在我的docker的界面我有eth0链接到我的docker0 10.101.131.60。 因此我这样做: route add -net 225.1.1.0/28 dev eth0将我的应用发送到225.1.1.0/28的所有多播数据包传递给我的eth0,eth0连接到主机作为docker0 。 因此,我用wireshark听我的应用程序是否真的把信息包扔给我的eth0里面的容器,它确实发送多播时,我在容器内使用wireshark。 现在在我整个我也用wireshark听我的docker0和数据包在那里。 现在我如何将docker0中的所有多播数据包转发给我的eth2? 我使用了几个iptables的方法,但没有一个似乎是有用的,也许它被忽略? 任何帮助将不胜感激…谢谢!

iptables不能在容器中的macvlanstream量上工作

我有一个接口eth0 ,IP 10.0.10.10/24的主机。 我启动docker,添加一个容器,没有networking。 然后我在eth0上创build一个macvlan设备,给它IP 10.0.10.20/24 ,并把它放在容器中。 主机和容器现在都有完整的networking访问权限。 然后,我在主机上创build一个iptables规则,以删除容器的IP 10.0.10.20所有stream量。 规则不起作用,并且stream量通过。 当然,如果我从容器内( ip netns exec $PID iptables …或者通过提供容器NET_ADMINfunction)执行它,它就可以工作。 底层主机的iptables规则是否不过滤stream量?

docker互联网连接与iptables = false

我放弃。 我在ubuntu 16.04下使用Docker 1.12.0加强了UFW。 该机器有两个接口 – 一个公共(eth0)和一个专用networking(eth1) Server Version: 1.12.3 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 15 Dirperm1 Supported: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: null bridge host overlay Swarm: inactive Runtimes: runc Default Runtime: runc Security Options: apparmor seccomp Kernel Version: 4.4.0-47-generic Operating System: Ubuntu […]

Coreos安全性

我正在玩coreos和digitalocean,我想开始允许我的容器之间的内部沟通。 我已经为所有的主机设置了私人networking,现在我想确保一些容器只打开本地主机和内部接口的端口。 我已经探索了很多这方面的select,但没有一个看起来令人满意: 使用'-p',我可以确保docker绑定到本地接口,但是这有两个缺点: 我不能轻易地通过SSH进行testing,因为stream量来自本地主机 我需要写一些hacky shell脚本来启动我的服务,以便注入容器运行的机器的地址 我尝试使用法兰绒,但它不会使交通私密(或我没有设置它的权利) 我考虑在容器上使用iptables来防止外部访问,但这似乎并不安全 我尝试在coreos主机上使用iptables,但是…这是棘手的,我无法得到它的工作。 当我尝试在主机上configurationiptables时,我使用这个方法: https : //docs.docker.com/articles/networking/#communication-between-containers-and-the-wider-world ,通过添加一个DROP规则到docker链,但是没有工作,包仍然通过 那么最好的办法是什么,我会投入时间让它工作。 总的来说,我想我需要find一些我可以做到的事情: 向所有主机可靠地转出 一些相当灵活的东西前进 一些允许从更广泛的互联网访问的“边缘机器”。 解 我会进入我最终解决这个问题。 感谢larsks的帮助。 最后,他们的做法是正确的。 这对于coreos来说是非常棘手的,因为没有真正稳定的地址,像larsks所假设的那样。 它可以忘记ip地址的整个coreos点。 我通过find一个不错的方法来解决这个问题,将ip地址注入服务文件中的命令。 棘手的事情是,它并不真正支持我期望的许多shellfunction。 我想要做的是将机器的IP地址分配给一个variables,然后将其注入到命令中: ip=$(ifconfig eth1 | grep -o 'inet [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' | grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*'); /usr/bin/docker run -p $ip:7000:7000 … 但是,如前所述,这是行不通的。 那么该怎么办? 得到壳! ExecStart=/usr/bin/sh -c "\ export ip=$(ifconfig eth1 | […]

运行docker容器:iptables:没有链/目标/匹配的名称

我试图运行一个容器,但我得到以下问题: Error response from daemon: Cannot start container b005715c40ea7d5821b15c44f5b7f902d4b39da7c83468f3e5d7c042e5fe3fbd: iptables failed: iptables –wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.43 –dport 80 -j ACCEPT: iptables: No chain/target/match by that name. (exit status 1) 这里是我使用的命令: docker run -d -p 10080:80 -v /srv/http/website/data:/srv/http/www/data -v /srv/http/website/logs:/srv/http/www/logs myimage 我的服务器上没有打开80端口吗? 有什么我错过了docker接口? 我用这样的脚本使用iptables: #!/bin/sh # […]

如何将源IP转发到Docker容器而不让Docker与iptables混淆

如果你在一个Docker容器中运行一些东西(例如nginx),并将其中一个暴露的端口发布到外部世界(比如docker run -p 80:80 nginx ),那么Doc​​ker将会 把这个港口暴露给公众 设置iptables,以便如果通过Docker网桥(NAT)连接到容器,则nginx将仍然知道正确的源IP ! 彻底打开防火墙到那个端口 我不想让任何人连接到已发布的端口,但是Docker混淆了这个问题。 所以我用–iptables=false重新启动了Docker守护进程,允许我自己pipe理防火墙。 但是,nginx现在只能看到网桥(172.18.0.1)作为源地址。 我如何控制防火墙,并将源IP地址转发到容器?

Docker – 从容器中为主机修改IPTABLES

我想运行一个中央日志和fail2ban服务的docker容器来防止dos / ddos​​攻击。 我有一个问题,运行一个容器,这样的能力,它也可以修改主机的iptables。 有一个项目ianblenke / docker-fail2ban,但它不工作… 给容器标志特权只允许我在这个容器上控制iptables 。 有没有办法通过容器控制主机iptables ? 问候。

禁止从docker集装箱访问局域网

我在Docker中使用Ubuntu容器运行Gentoo主机。 他们通过由Docker自动创build的桥进行通信。 我想丢弃所有可能来自容器的192.168.0.0/16stream量。 $sudo iptables -S -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -A FORWARD -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp –dport 443 -j ACCEPT -A FORWARD -o docker0 -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i docker0 ! -o docker0 -j ACCEPT -A FORWARD -i docker0 […]