操作系统: Ubuntu 15.10
LXD: 2.0.0.rc5
我想知道如何从同一本地网络上的另一台计算机访问容器。
我的PC ( LXD主机)地址:192.168.1.112 (enp3s0)
二项式容器:10.0.3.181 (eth0), 10.0.4.1 (lxcbr0)
其他个人电脑(Fedora 23):192.168.2.118 (wlp3s0)
我可以从另一台PC到LXD主机,或者其他的。
发布于 2016-03-26 13:44:44
有几种不同的方法来完成你想要的。
选项1和2要求在主机上启用ip转发:
# run time:
sudo sysctl -w net.ipv4.ip_forward=1
# permanent:
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/30-virt-network如果您想访问客户端上的特定服务,如http (端口80) (使用主机ip地址+端口访问客户端口80 ),则最简单的是1,但不能在同一端口上运行主机服务。
# on lxd host: (-i HOSTDEVICE to lan, usually enp3s0 or eth0)
sudo iptables -t nat -A PREROUTING -i enp3s0 -p tcp -m tcp --dport 80 -j DNAT --to 10.0.3.181:80
# making this permanent is left to the reader (because that depends on your choice of fw setup)选项2更棘手,取决于您可以修改多少网络。
检查(sudo iptables -L -n)是否允许链式转发(策略接受)或sudo iptables -I FORWARD -s 192.168.2.118 -j ACCEPT允许它。现在,要么在网络防火墙路由10.0.3.0/24上访问您的192.168.1.112主机,要么在192.168.2.118上测试路由。
sudo ip route add 10.0.3.181 via 192.168.1.112 dev wlp3s0第三种选择是将您的lxd客人带到您的局域网作为局域网的一部分。请看指令转换eth0 (在您的情况下是enp3s0)到桥接如何做到这一点。简言之:
eth0或enp3s0添加到该桥enp3s0)发布于 2016-03-25 14:15:25
您需要告诉另一台计算机如何到达容器,因为另一台计算机位于与容器不同的子网上。也就是说,你需要建立一条“路线”。下面是您可以在另一台计算机上创建的示例路径。它说:“要到达容器(.181),首先要使用与主机(eth0)位于同一网络上的设备通过主机(.112)。如果另一台计算机使用不同的设备,则相应地进行更改。请注意,该路由不是永久的;它不会在重新启动后存活。谷歌将找到如何设置永久路由。
sudo ip route add 10.0.3.181 via 192.168.1.112 dev eth0发布于 2022-03-16 13:05:18
另一种方法是安装rinetd,在/etc/rinetd.conf内部指定转发:
192.168.1.112 80 10.0.3.181 80并重新启动rinetd。
我认为这更方便,因为您可以随时检查正在转发的端口,并在需要的情况下向文件中添加注释。如果绑定到docker,也可以以同样的方式将其用于127.0.0.1 (例如:docker ... -p 127.0.0.1:80:80 ...和UFW将按预期工作。
https://askubuntu.com/questions/749063
复制相似问题