【问题标题】:No DNS inside lxc container [closed]lxc容器内没有DNS[关闭]
【发布时间】:2013-09-25 23:50:11
【问题描述】:

我有一个运行在我的 archlinux 主机上的 LXC debian 容器。我尝试使用 wlan0 设置网桥 (lxc-bridge-nat),但 我无法从我的容器 ping 外部世界,除非我使用 ip 而不是域名来 ping。

我可以从主机 ping 容器,也可以从容器 ping 主机。

这里有一些信息:

主机:ip 地址

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether d4:be:d9:70:bd:e5 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether c4:85:08:b4:5c:e9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.42.121/24 brd 192.168.42.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::c685:8ff:feb4:5ce9/64 scope link 
       valid_lft forever preferred_lft forever
       valid_lft forever preferred_lft forever
4: lxc-bridge-nat: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether fe:b3:b7:a2:e1:31 brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.1/24 brd 192.168.50.255 scope global lxc-bridge-nat
       valid_lft forever preferred_lft forever
    inet6 fe80::b0c8:d2ff:fe73:aa50/64 scope link 
       valid_lft forever preferred_lft forever

主机:ip路由

default via 192.168.42.1 dev wlan0  proto static 
192.168.42.0/24 dev wlan0  proto kernel  scope link  src 192.168.42.121  metric 9 
192.168.50.0/24 dev lxc-bridge-nat  proto kernel  scope link  src 192.168.50.1

容器:ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
10: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:ff:aa:00:00:01 brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.2/24 brd 192.168.50.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::2ff:aaff:fe00:1/64 scope link 
       valid_lft forever preferred_lft forever

容器:ip route

default via 192.168.50.1 dev eth0 
192.168.50.0/24 dev eth0  proto kernel  scope link  src 192.168.50.2

容器:/etc/resolv.conf

nameserver 212.27.40.240
nameserver 212.27.40.241

【问题讨论】:

  • 您可以使用 nslookup 连接到这些名称服务器中的任何一个吗?如果它们不可用,您将没有任何 DNS 功能 - 尝试使用替代方案,例如谷歌的。
  • 好的,它是名称服务器。我确实对它们进行了 ping 操作,但没有使用 nslookup 进行测试。您可能希望将您的评论作为答案。

标签: networking dns lxc


【解决方案1】:

主机名没有立即解析到 DNS 服务器,发布resolv.conf 的内容在这里很有用;它们是此设置中唯一不受您直接控制的部分。

正如您所发现的,简单地 ping 远程服务器并不总是有帮助 - 对他们运行 nslookup 表明他们是问题所在。 (作为对立面,由于ping 本身的工作方式,缺乏来自 ping 的响应并不意味着服务器已关闭 - 在防火墙级别阻止 ping 是微不足道的。)

要解决您的 DNS 问题,您可以使用其他 DNS 服务器,例如 hosted by Google。只需将您的 resolv.conf 更改为:

nameserver 8.8.8.8
nameserver 8.8.4.4

【讨论】:

  • 这不是为我做的。我在容器的/etc/network/interfaces 和它的/etc/resolv.conf 中添加了8.8.8.8,我当然可以从容器内部ping8.8.8.8,但仍然没有DNS。因为没有 DNS 我不能apt-get,所以我什至不能测试nslookup
  • @JonathanY。您是否重新启动网络和/或运行ifconfig,只是为了确认现在正在使用新的 DNS 服务器?
  • 我确实重新启动了网络,并重新启动了良好的措施。但是,尽管我一直试图从ifconfig 的输出中收集有关 DNS 的一些信息,但我不知道该怎么做。 Other options 不可行(例如,我无法在没有 DNS 的情况下安装 nmcli)。
  • @JonathanY。我的错误,我认为它确实如此(Windows 上的ipconfig 确实如此)。好的...如何将apt-get 使用的服务器的 IP 地址硬编码到/etc/hosts 中,并完全使用快捷方式 DNS?
  • 没问题。您可能想将其作为一个新问题发布(askubuntu 可能比这里更合适),因为您更有可能获得更快的解决方案。
【解决方案2】:

在 /etc/network/interfaces 中添加 8.8.8.8 不是一个好主意。您应该保持接口文件不变(恢复旧设置)并仅修改 /etc/resolv.conf 文件。

您已将容器 IP 设置为与 Google 的 DNS 服务器之一相同的 IP。

当然,ping 会起作用,但是当您尝试解析 DNS 主机名时,您的容器将自行联系并生成错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 2012-11-09
    相关资源
    最近更新 更多