Tag: iptables

docker路由没有iptables

我有一个运行命令sudo docker run -p 8002:80 nginx的docker nginx镜像 我想知道的是,路由如何从hostmachine:8002转到端口80上监听的容器。通常有非常明确的iptables,但是如果禁用iptables,它仍然可以工作。 然后我注意到有一个docker-proxy进程侦听每个暴露的端口,我会假设代理/ NAT。 所以我用–userland-proxy=false禁用了userland代理。 这样做之后,我现在只能看到一个进程docker-current ,仍在监听所有暴露的端口。 我只能假设docker-current进程正在执行na​​t,但是这让我想知道为什么userland代理和/或iptables在那里? 有没有一种方法,我可以看到/certificate自己在哪里发生的事情(即打开/closures的东西,不能curl我的nginx容器,然后能够)?

NetfilterQueue不在泊坞窗容器中工作

当在一个容器中运行的python脚本导入时,NetfilterQueue显示一个奇怪的问题: File "main.py", line 1, in <module> from netfilterqueue import NetfilterQueue ImportError: /usr/local/lib/python2.7/dist-packages/netfilterqueue.so: undefined symbol: nfq_set_verdict2 在容器中,我已经安装了: FROM debian:wheezy RUN apt-get update && apt-get install -y \ bridge-utils \ net-tools \ iptables \ python \ scapy \ tcpdump \ python-nfqueue \ build-essential \ python-dev \ libnetfilter-queue-dev \ python-pip RUN pip install netfilterqueue COPY ./main.py /main.py […]

hyperkube代理,kubelet找不到iptables链,rkt运行–net = host

我的kubelet抱怨说: E1201 09:00:12.562610 28747 kubelet_network.go:365]无法确保规则丢弃过滤链中由KUBE-MARK-DROP标记的数据包KUBE-FIREWALL:错误附加规则:退出状态1:iptables:无链/目标/匹配通过这个名字。 当你忘记使用–net-host'rkt run'时,通常会发生这种情况,但是我没有。 export RKT_OPTS =“ – volume var-log,kind = host,source = / var / log \ –mount volume = var-log,target = / var / log \ –volume dns,kind = host,source = / etc / resolv.conf \ –mount volume = dns,target = / etc / resolv.conf – -net =主机” 以下确认我的kube-proxy(由kubelet启动)与拥有iptables链的主机在同一个命名空间中: root@i8:/etc# […]

Docker容器的多个静态IP

我有一个Docker主机,应该允许每个容器有多个静态IP地址。 容器中的应用程序应该能够select从哪个地址向远程主机发送stream量(例如ping -I <source-address> example.com )。 想象一下这样的设置:将IP地址10.0.0.10 – 10.0.0.19分配给ContainerA,将10.0.0.20 – 10.0.0.29分配给ContainerB,依此类推。 任何到ContainerA的地址范围的stream量都被转发到ContainerA,而stream出的stream量源自ContainerA可以select的范围内的地址。 这同样适用于ContainerB。 默认–net=bridge模式似乎不支持这一点。 我能得到的最接近的是到ContainerA的任何地址的传入stream量都正确地转发到容器,但传出stream量总是始于同一个地址。 当使用–net=host ,第一个容器将附加到所有可用的IP地址,因此第二个容器将无法打开其IP范围中的套接字。 –ip docker run命令的–ip选项似乎已经接近我所需要的了,正如本篇博文中所解释的那样。 不幸的是,它似乎并不支持每个容器的多个静态IP。 如果更方便,使用CIDR子网而不是IP范围是好的。 我如何configurationDocker来实现这个function?

如何使用dockerd时删除nf_conntrack模块

我的集群不使用docker0桥,但ovs桥。 docker0网桥以docker daemon开始,nf_conntrack模块以docker0网桥开始(iptables)加载。 现在我显然不希望在docker主机中加载nf_conntrack模块,所以我想也许我可以用docker network type = none来阻止它。 不幸的是,我–network=none在dockerd中find像“ –network=none ”这样的参数,而是在“docker docker run ”中。 那么有什么办法可以删除nf_conntrack模块? PS:rmmod在这种情况下是无用的,因为那些依赖于nf_conntrack的模块总是在使用中。

控制Docker中的传出stream量

我有4个容器运行Ubuntu 14.04一个作为主要和其他小孩容器。 我还创build了一个连接所有4个容器的内部networking 主容器连接到默认桥接networking以访问互联网。 问题是我必须通过从子容器到主容器的所有stream量。 所有入站和出站到子容器只能通过主容器 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c7899db54c0b ubuntu-14.04 "/bin/bash" 46 hours ago Up About an hour second-child 3032f73cc65e ubuntu-14.04 "/bin/bash" 46 hours ago Up About an hour first-child 9ba6b044b89d ubuntu-14.04 "/bin/bash" 46 hours ago Up About an hour third-child 10c2b04ab739 ubuntu-14.04 "/bin/bash" 46 hours […]

直接从同一networking中的机器访问kubernetes窗格

我在同一个networking上有4台服务器。 10.0.0.10:Kubernetes大师 10.0.0.11:Kubernetes节点1 10.0.0.12:Kubernetes节点2 10.0.0.20:正常的Ubuntu服务器(kubernetes没有安装) 我使用Calico作为networking提供者,按照https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/中的说明设置了一个kubernetes集群。 我可以通过以下命令成功运行一个窗口(我使用的是以ssh访问的Ubuntu docker镜像为例) kubectl run ubuntupod –image=rastasheep/ubuntu-sshd:16.04 并可以使用kubectl get和kubectl describe来看到这个pod的IP地址(在这种情况下,pod的IP是192.168.65.74)。 然后我确认以下连接已启用 kubernetes master / nodes(10.0.0.10〜10.0.0.12) – > pod(192.168.65.74) pod(192.168.65.74) – > kubernetes master / nodes(10.0.0.10〜10.0.0.12) pod(192.168.65.74) – >正常的ubuntu服务器(10.0.0.20) 但是,我没有做出如下的联系,我想问问人们该怎么做; 正常的ubuntu服务器(10.0.0.20) – > pod(192.168.65.74) 我试图添加一个路由表到Ubuntu服务器(10.0.0.20),希望kubernetes主节点可以作为一个路由器,但没有成功; sudo route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.0.0.10 我怀疑在Kubernetes的master里有一些iptables的事情,但我不知道该怎么做。 有人能帮助我吗? 顺便说一句,我明白,我想要做的可能会偏离kubernetes或docker的基本原则。 也许我应该使用kubernetes的服务机制,但是我需要这种透明的方式访问Pod和实际的服务器。

将docker0分配给不同的物理接口

我目前正在我的家用机器上运行docker服务器。 我想分配docker0桥到不同的物理nics。 据我了解docker0桥使用iptables连接到主机的networking。 所以 – 如果我想docker0连接到eth0和docker1到eth1我需要哪种iptables规则? 经过一些研究,我发现https://fralef.me/docker-and-iptables.html – 据我所知,我需要应用以下规则: -A FORWARD -i docker0 -o eth0 -j ACCEPT -A FORWARD -i eth0 -o docker0 -j ACCEPT -A FORWARD -i docker1 -o eth1 -j ACCEPT -A FORWARD -i eth1 -o docker1 -j ACCEPT 我是否需要一些规则以阻止(DENY)docker1从路由到eth0,反之亦然? 非常感谢你! 塞巴斯蒂安

如何configurationnginx链接到docker集装箱?

需要帮助,花费超过30小时…真的需要帮助…谢谢 系统:centos 7 我有nginx和docker的容器(ps:gitlab) ,我有问题与nginx连接 – docker容器(gitlab),我什么时候使用git.xxx.com:8800尝试连接,我认为是configuration问题,在这里是我的configuration: docker集装箱(gitlab): sudo docker run -d \ –hostname git.xxx.com \ –publish 127.0.0.1:8800:80 \ –publish 127.0.0.1:23:22 \ –name gitlab \ –memory 4gb \ –cpus 2 \ –restart always \ –volume /Volumes/docker_gitlab/config:/etc/gitlab \ –volume /Volumes/docker_gitlab/logs:/var/log/gitlab \ –volume /Volumes/docker_gitlab/data:/var/opt/gitlab \ –env GITLAB_OMNIBUS_CONFIG="external_url 'http://git.xxx.com:8800'; gitlab_rails['gitlab_shell_ssh_port']=23;" \ gitlab/gitlab-ce:latest nginx的: server { listen *:8800; server_name […]

docker:在容器之间丢弃包

我有一个在networking中定义的容器,我需要在一个容器上模拟networking中断(临时)。 我正在检查的iptable,但找不到一种方法,例如60%的包装去哪一个容器,等等