lxc ping不通局域网和外网

裸奔的可比克 2016-03-04 04:38:26
主机是172.17.0.1网段能够连通外网。
lxc和网桥是192.168.1.1网段。
lxc可以ping通主机,但是ping不通主机外的局域网内的其他ip,也ping不通外网。
...全文
729 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
裸奔的可比克 2016-03-31
  • 打赏
  • 举报
回复
这个问题已经解决了,和nswcfd说的差不多只是要在host上添加一条路由! route add 192.168.1.0 netmask 255.255.255.0 dev br0 而且要将host的转发功能开启 http://os.51cto.com/art/200912/170116.htm(可以参考一下)
nswcfd 2016-03-16
  • 打赏
  • 举报
回复
建议先观察一下,在没有lxc参与的情况下,经过nat共享上网(比如两个虚拟机),网络配置和报文的走向是怎么样的。 (网上有很多教程) 拿正常的情况跟lxc做对比,有助于发现异常环节,加快问题定位。
nswcfd 2016-03-16
  • 打赏
  • 举报
回复
有没有更详细的诊断信息? 网络问题最基本的诊断方法是,利用抓包工具,比如tcp-dump,在lxc侧和host侧抓包,看报文在流程的那个阶段被丢弃。
裸奔的可比克 2016-03-15
  • 打赏
  • 举报
回复
引用 11 楼 nswcfd 的回复:
您好,由于手头没有lxc设备,所以没有办法告诉您准确的命令。 假设拓扑如下: * [lxc]-(lxc.eth0 @B.2) <-----> (host.veth0 @B.1)-[host: route/nat]-(host.eth0 @A.2) <-----> (@A.1)-[gateway] eth0连接物理网络,使用A网段,IP是A.2。 host.veth0和lxc.eth0互连,使用B网段,IP分别是B.1和B.2。 (注:如果只有一个lxc的话,不需要把host.veth0加入bridge) lxc上的配置: * eth0: B.2; * 路由: default via B.1; host上的配置: * veth0:B.1; * eth0: B.2; * 路由: default via A.1; * NAT: 利用iptables在nat表的POSTROUTING链增加如下规则:-o eth0 -j MASQUERADE(可能拼错了,请在网上搜藏iptables/nat/地址转换等关键词)
做了地址转换还是没能整通,不知道为什么
nswcfd 2016-03-14
  • 打赏
  • 举报
回复
参考 http://www.cnblogs.com/shineshqw/articles/2351028.html
nswcfd 2016-03-14
  • 打赏
  • 举报
回复
您好,由于手头没有lxc设备,所以没有办法告诉您准确的命令。 假设拓扑如下: * [lxc]-(lxc.eth0 @B.2) <-----> (host.veth0 @B.1)-[host: route/nat]-(host.eth0 @A.2) <-----> (@A.1)-[gateway] eth0连接物理网络,使用A网段,IP是A.2。 host.veth0和lxc.eth0互连,使用B网段,IP分别是B.1和B.2。 (注:如果只有一个lxc的话,不需要把host.veth0加入bridge) lxc上的配置: * eth0: B.2; * 路由: default via B.1; host上的配置: * veth0:B.1; * eth0: B.2; * 路由: default via A.1; * NAT: 利用iptables在nat表的POSTROUTING链增加如下规则:-o eth0 -j MASQUERADE(可能拼错了,请在网上搜藏iptables/nat/地址转换等关键词)
nswcfd 2016-03-07
  • 打赏
  • 举报
回复
如果是veth的话,那么veth的本质是个虚口对(在container是lxc.network.name,比如叫eth0,在host里是lxc.network.veth.pair,比如叫veth0), 它的逻辑很简单,就是eth0发送的报文由veth0来收,veth0发送的报文由eth0来收。 此外,lxc.network.link指明了Host里的一个bridge虚设备(比如叫br0),缺省会把veth0加入到br0桥里(非必须)。 bridge的逻辑就是标准交换机的逻辑(基于端口学习源mac、基于目的mac选择port转发等等)。 bridge+veth的综合效果就是,eth0的报文通过veth0,会被送到br0,基于目的mac选择是送到本地,还是送到br0的其它port(好吧,这里还没有其它port)。 这就是当host.br0和lxc.eth0配置相同网段的时候,host和lxc的通讯模式。(注:其实可以不需要br0) 那么问题来了,如何让lxc.eth0跟host之外的设备通讯呢?假设host通过eth1连接网络。 这跟PC2经过直连线如何利用(双网卡的)PC1上网是一样的问题。注意veth的作用就是直连线,而PC1的某个网卡是虚网卡。 最简单的方法,就是桥接PC1的两个网卡。 也就是把连接外网的eth1也加入到这个br0桥里,这样br0就有两个port,分别是eth1和veth0。 在这种配置下,eth1是不能配IP的,IP要配置br0上,同时lxc的eth0也要配同样的网段。 <inter-net> <---> eth1 [host: br0] veth0 <---> eth0 [lxc] eth1: ip=0; veth0: ip=0; br0: ip=局域网地址1 eth0: ip=局域网地址2 这个方法要求host跟lxc同样的网段,典型的虚拟机软件的bridge模式也是类似的工作原理。 另外一个方法,host跟lxc使用不同的网段,host做lxc的网关。 显然,需要在host上完成地址转换snat。 <inter-net> <---> eth1 [host] br0/veth0 <---> eth0 [lxc] eth1: ip=局域网地址 br0: ip=私有地址1 veth0: ip=0 eth0: ip=私有地址2 lxc.gateway: 私有地址1 host: -o eth1 -j SNAT/MASQUERADE
裸奔的可比克 2016-03-07
  • 打赏
  • 举报
回复
lxc.network.type = veth lxc.network.flags = up lxc.network.link = lxcbr0 lxc.network.hwaddr = 4a:49:43:49:79:fd lxc.network.ipv4 = 192.168.1.2/24 lxc.network.name = eth0 就这些了!这样写有问题吗?
nswcfd 2016-03-07
  • 打赏
  • 举报
回复
lxc.conf怎么写的?使用哪种network?veth?
裸奔的可比克 2016-03-07
  • 打赏
  • 举报
回复
设置route add defualt gw 172.17.0.1 会出现错误:没有那个进程
裸奔的可比克 2016-03-07
  • 打赏
  • 举报
回复
真的没有人会吗?
裸奔的可比克 2016-03-07
  • 打赏
  • 举报
回复
可以将第二种方法具体一点吗?我有点不明白,eth1在这里起什么作用
裸奔的可比克 2016-03-07
  • 打赏
  • 举报
回复
您能把第二种方法步骤再具体一点吗?谢谢
nswcfd 2016-03-04
  • 打赏
  • 举报
回复
lxc里面是不是得把gateway设置成host?
裸奔的可比克 2016-03-04
  • 打赏
  • 举报
回复
裸奔的可比克 2016-03-04
  • 打赏
  • 举报
回复
求大神照顾一下

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧