我不明白 lxc 网络的模式。
我想要有 4 个客户:apache1、apache2、数据库和 frontdoor
frontdoor 是一个 squid,它决定应该使用哪个 apache
当所有客户机都有一个虚拟接口(与网络隔离)并且前门有两个接口真实 eth0 和虚拟接口时,它在虚拟服务器上完美运行
现在我迁移到 lxc,并且不再使用 dummy,而是使用 bridge(在主机上)和 mode=veth(在客户机上)
我很不高兴在 ifconfig 中看到四个 vethLIJG3f,但让我们看看它是否可以。
问题是,我无法访问 squid。我尝试使用 iptables -t NAT -A PREROUTING -p tcp --dport 80 -j DNAT --to-dest 172.16.0.2,但根本不起作用。
我想知道我是否应该将 veth 换成别的东西?
答案1
这很有趣,我正在玩一个 vserver,但我真的不明白它是如何与 eth 和 dummy 一起工作的。
无论如何,就您而言,我认为您需要启用 IP 转发。
sysctl -w net.ipv4.conf.all.forwarding=1
检查 /etc/sysctl.conf 使其永久生效
如果你想知道谁是谁,命名进入桥的接口是一个好主意。在 lxc 配置文件中:
lxc.network.veth.pair=eth0-guest1
lxc 中的网络允许更复杂的网络。例如,你可以用 2 个虚拟接口模拟一个真正的“代理”,一个在桥上(例如 br0)连接到互联网(公共 IP、dmz 等),另一个(例如 br1)连接到“内部服务”
.-----------.
| host eth0 |<----.
'-----------' |
.-------------------. .-------------------.
| br0 (public IP) | | br1 (10.1.1.1/24) |
'-------------------' '-------------------'
^ .--------------------. ^
'------------| guest squid |----|
'--------------------' |
.---------------. |
| guest apache1 |----'
'---------------' |
.---------------. |
| guest apache2 |----'
'---------------' |
.----------------.
| guest database |
'----------------'
注意:对于第二个虚拟以太网接口,只需重复 lxc.network... 节
答案2
遇到了同样的问题。我尝试使用
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 7070 -j DNAT --to-destination 172.16.110.15:7070
但它不起作用。解决方案非常简单:
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
更多详情请查看这