veth、macvlan 或者其他什么?

veth、macvlan 或者其他什么?

我不明白 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

更多详情请查看

相关内容