Articles of LXC

pipe理EC2中的LXC容器

我有一个VPC内运行的EC2实例。 我需要在该实例中启动的LXC容器中运行服务,并使该服务可用于外部世界。 因此,我创build了一个桥( br0 ),并使用以下/etc/network/interfaces文件来获取与桥相关联的EC2( 10.0.3.1 )提供的IP地址: auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto eth1 iface eth1 inet manual auto br0 iface br0 inet dhcp netmask 255.255.0.0 bridge_ports eth1 bridge_stp off bridge_maxwait 0 post-up brctl setfd br0 0 这是我从ifconfig得到的: br0 Link encap:Ethernet HWaddr 16:2b:ae:07:29:82 inet addr:10.0.3.1 Bcast:10.0.255.255 Mask:255.255.0.0 inet6 […]

LXC容器只能通过网桥访问主机

我有一个运行在x86_64 Ubuntu 12.04主机上的i686 Ubuntu 12.04的LXC容器。 我在这里设置了一个使用说明的桥梁。 但是,容器中的ping仅通过主机而不是本地networking上的其他计算机。 同样,只有主机而不是其他机器才能看到容器操作系统。 主机的/etc/network/interfaces文件如下所示: auto lo iface lo inet loopback iface eth0 inet manual auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_fd 0 bridge_maxwait 0 容器的/etc/network/interfaces文件如下所示: auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp 这里是容器configuration的相关部分: lxc.network.type=veth lxc.network.link=br0 lxc.network.flags=up 任何想法我做错了什么? 附加信息: iptables-save的输出iptables-save在主机上: $ sudo iptables-save # […]

LXD 2.0在Debian 8.4上

我正在运行Debian 8.4,并希望设置最近发布的LXD 2.0。 这是可行的,还是应该坚持与LXC? 看来所有的重点都是在Ubuntu上使用LXD。

SSHstream量redirectLXC容器

我使用LXC容器ssh托pipe,我想redirectSSH / SFTP通信(使用端口22)到容器的私人IP地址,但在用户/ IP的基础上。 这是一个源端口,许多目的地。 ssh [email protected] 我们有用户'ahes',这个用户容器的私有IP是10.10.66.66 将stream量redirect到10.10.66.66:22 我不可能为每个容器分配公共IP地址。 我想出了可能的解决scheme: 简单的一个 – 忘记全球端口22,并使用端口匹配特定用户。 例如,ahes将有6666端口。然后用简单的iptables规则redirectstream量:server.com:6666 => 10.10.66.66:22。 缺点是有些地方22/80/443以外的端口被阻塞。 在父服务器上的sshd中使用ForceCommand指令: 匹配组用户 ForceCommand /usr/local/bin/ssh.sh ssh.sh脚本: #!/斌/庆典 #…在这里find用户IP地址的一些逻辑 #运行ssh exec ssh $ USER @ $ IP $ SSH_ORIGINAL_COMMAND 这个解决scheme几乎是好的,但我没有find一种方法来使这个configurationsftp工作。 另一个考虑是我不能深入协议,因为encryption是在任何数据识别用户发送之前完成的。 另外我没有真正的技能来破解sshd源代码,并且保留父服务器与原始包是非常可取的安全的原因。 我也发现libpam-nufw软件包用于连接级别(iptables)的身份validation,但我认为这是用于其他目的。 我将不胜感激任何线索。 谢谢。

LXC – 容器内的配额

是否可以在LXC容器内使用磁盘配额? 我正在使用LVM( ext4 )作为容器的rootfs 。 我现在没有如何正确地将挂载选项添加到/etc/fstab 。 容器的/etc/fstab : rootfs / rootfs rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 0 这是什么quotacheck -cug /返回: quotacheck: Mountpoint (or device) / not found or has no quota enabled. quotacheck: Cannot find filesystem to check or filesystem not mounted with quota option. mount输出: http://pastebin.com/33AF62pu

如何使LAN访问lxd容器

如果我使用Virtualbox启动虚拟机,则可以select“桥接”作为networking适配器types,这将导致guest虚拟机/虚拟网卡连接到我的物理LAN,从而从我的路由器(通过DHCP)获取LAN IP。 我想实现相同的function,但不是使用Virtualbox,我想使用lxc / lxd容器。 我怎样才能做到这一点? 编辑1 我正在运行Ubuntu,我试着按照这个指南: https://insights.ubuntu.com/2015/11/10/converting-eth0-to-br0-and-getting-all-your-lxc-or-lxd-onto-your-lan/ …但它没有帮助。 原来的主机接口应该有一个IP后? 因为它不会当我尝试手动桥接。 编辑2 如果有帮助,我的lxd / lxc主机是运行Ubuntu的Virtualbox虚拟机,通过桥接networking连接到我的物理以太网网卡。 编辑3 如果我使用tcpdump来监视网桥接口,物理/主机接口和容器/虚拟接口上的icmpstream量,则只有容器/虚拟networking没有任何stream量。 另外两个呢。 编辑4 根据这个指南: http://www.microhowto.info/troubleshooting/troubleshooting_ethernet_bridging_on_linux.html 我的桥接设置没有问题。 但正如在“编辑3”中提到的,容器接口没有获得任何stream量。 需要解决的原因,但我不知道如何… 我有一种感觉,它与路线有关。 该容器没有路线,而主机呢。 编辑5 使用tcpdump监视arpstream量,显示arpstream量实际上正在进入容器/虚拟接口。 所以这只是icmpstream量不是。 编辑6 如果我在容器中设置一个静态IP(通过/ etc / network / intefaces *),允许我从主机(这是一个Virtualbox机器)ping容器。 如果我然后在Virtualbox中更改networkingconfiguration以允许混杂stream量,则可以从我的物理机器(Virtualbox机器的主机)ping容器。 然而,从这里起,我仍然无法从容器内超越我的物理局域网。 最后一步,如果我手动添加容器中的“默认”路由,如下所示: route add default gw 192.168.0.1 eth0 这使我能够从容器内部ping物理局域网之外。 所以除非别人可以提供解释(我会在发布答案之前等待),我猜测缺less容器DHCP支持(通过桥接)与lxc / lxd使用netmasq处理DHCP的事实有关(和DNS)。

与LXC容器的服务器上的fail2ban

问题是modprobe和iptables不能在LXC容器内工作。 LXC是Linux容器的用户空间控制包,这是一种轻量级的虚拟系统机制,有时被称为“chroot on steroids”。 容器内的iptables错误是: # iptables -I INPUT -s 122.129.126.194 -j DROP > iptables v1.4.8: can't initialize iptables table `filter': Table does not exist (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded. 我猜测它不能工作,因为LXC容器共享一个内核,主要的服务器内核。 在这种情况下,我如何做fail2ban。 modprobe和iptables在主服务器上工作,所以我可以在那里安装它,并以某种方式链接到日志文件,我的猜测? 有什么build议么?

将所有LXC节点APT高速caching连接到主机的APT高速caching

我有一些LXC容器(ubuntu模板),它们都有自己独立的APTcaching。 /var/lib/lxc/*/rootfs/var/cache/apt/archives/ 我想把这些链接到主机的APTcaching在: /var/cache/apt/archives 从我记忆中,chroot监狱的符号是一个巨大的禁忌,所以我想知道其他干净的替代品会是什么。 一个解决scheme,我想在主机上做一个cron工作来与客户容器同步,但我想知道是否有任何方法可以处理这个,而不必安排同步? 一个符号链接将会非常方便,但这将是一个巨大的安全漏洞,对吧? 多谢你们。

Ubuntu上的LXC和Saltstack minion_idconfiguration

我使用LXC作为testingSaltStack脚本的实验平台。 该实验室由+5 Ubuntu 12.04 LTS容器组成,我通过克隆模板容器来预先安装salt-minion 。 一旦我创build模板容器并安装salt-minion minion_id ,模板将根据hostname ( test-template )获取它的Salt minion_id 。 如果我lxc-clone这个模板,那么所有的克隆都会有这个模板的minion_id ,但是我希望克隆的minion_id与它们的hostname相匹配( test-machine-{1,2,3,4,5} minion_id test-machine-{1,2,3,4,5} )。 有没有办法让这个脚本与bash或者我应该采取另一条path相同的效果? 更新 : 我查看了一些lxc脚本,发现lxc脚本使用定义了get_default_lxcpath函数的/usr/share/lxc/lxc.functions文件,所以我当前的脚本如下所示: . /usr/share/lxc/lxc.functions # clone template lxc-clone -o $template -n "$container" # create saltstack minion config dir if does not exist minion_id_path="$(get_default_lxcpath)/$container/rootfs/etc/salt" mkdir -p "$minion_id_path" # set minion-id directly from container name […]

Iptables基于目的地的DNS名称预先路由?

我有一个关于iptable预发布的问题。 我不熟悉networking/路由/ iptables,所以我希望这不是一个愚蠢的问题。 所以我要求你的理解和放纵。 我所做的是:我使用LXC来分隔容器中的应用程序。 为了访问一个容器中的服务(也许是apache2),我必须这样做prerouting: iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 20080 -j DNAT –to <container-ip>:80 到目前为止,这样做很好,工作应该如此。 假设主机系统也运行一个apache2(端口80)。 它有1个网卡和2个DNS名称分配: DNS1 (HostRecord)和DNS2 (别名DNS1 )我想要做的是不要使用dport,但通过使用DNS名称,以便: http://DNS1:80 #ends up at the host apache2 http://DNS2:80 #ends up at lxc-container's apache2 (at the the same host) 是否有可能,如果是的话,如何configurationiptables?