统计
  • 建站日期:2021-03-15
  • 文章总数:63 篇
  • 评论总数:51 条
  • 分类总数:14 个
  • 最后更新:2021年12月29日

在腾讯云服务器中使用pipework让Docker容器直接获得公网IP

本文阅读 3 分钟
首页 杂七杂八 正文
广告

pipework是由Docker的工程师Jérôme Petazzoni开发的一个Docker网络配置工具,由200多行shell实现,方便易用。

源码地址:Github

利用腾讯云弹性网卡可以绑定多个IP的特性,我们可以为需要暴露在公网环境下的容器配置公网IP地址。

腾讯云服务器弹性网卡环境配置参考文章-在腾讯云服务器中用ProxmoxVE建立基于LXC的Linux虚拟机 ,包括控制面板的配置和在宿主机内添加路由规则。

安装

apt-get install iputils-arping git -y   

git clone https://github.com/jpetazzo/pipework

cp pipework/pipework /usr/local/bin/

使用

先创建一个容器

docker run -itd --name test debian /bin/bash

查看该容器的IP地址信息

用pipework配置一个名为br0的Linux bridge,并指定容器公网IP地址所对应的内网IP地址信息。

pipework br0 test 10.10.20.110@10.10.20.1

再次查看容器IP地址信息

这个时候,容器已经获得公网的IP地址,利用curl ip.sb 可以确认。

如果主机环境中有DHCP服务,也可以通过DHCP的方式获取IP。

pipework br0 test dhcp

支持如下dhcp客户端

  • dhclient
  • udhcpc
  • dhcpcd
  • dhcp

清理

当容器被停止或者销毁时,pipework会自动销毁在宿主机和容器内添加的网卡及网桥。当再次需要获取公网IP地址时,需重新运行命令。

pipework的工作方式

1.首先 pipework 检查是否存在 br0 网桥,若不存在,就自己创建。若以"ovs"开头,就会创建 OpenVswitch 网桥,以"br"开头,创建 Linux bridge。

2.创建 veth pair 设备,用于为容器提供网卡并连接到 br0 网桥。

3.使用 docker inspect 找到容器在主机中的 PID,然后通过 PID 将容器的网络命名空间链接到 /var/run/netns/ 目录下。这么做的目的是,方便在主机上使用 ip netns 命令配置容器的网络。因为,在 Docker 容器中,我们没有权限配置网络环境。

4.将之前创建的 veth pair 设备分别加入容器和网桥中。在容器中的名称默认为 eth1,可以通过 pipework 的 -i 参数修改该名称。

5.然后就是配置新网卡的 IP。若在 IP 地址的后面加上网关地址,那么 pipework 会重新配置默认路由。这样容器通往外网的流量会经由新配置的 eth1 出去,而不是通过 eth0 和 docker0。(若想完全抛弃自带的网络设置,在启动容器的时候可以指定 --net=none)

pipework 通过封装 Linux 上的 ip、brctl 等命令,简化了在复杂场景下对容器连接的操作命令,为我们配置复杂的网络拓扑提供了一个强有力的工具。

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.cnhacker.cc/mixed_files/311.html
-- 展开阅读全文 --
一篇“不一样”的真实渗透测试案例分析文章
« 上一篇 04-19
TePass-Typecho强大的付费VIP阅读插件
下一篇 » 05-05
广告

发表评论

成为第一个评论的人

作者信息

广告

动态快讯

热门文章

广告

标签TAG

热评文章