ubuntu14/ubuntu16/centos7:解决可以ping ip却ping不通主机名

最近装了两台linux虚拟机分别CentOS7和Ubuntu14,都装了samba服务,文件共享都正常,虚拟机上互联网也正常,能以ping 通局域网的ip,却都ping不通主机名,其他电脑(windows/linux)都能ping 通这两台虚拟机的主机名。
最终找到原因:没有安装winbind,也没有配置/etc/nsswitch.conf
下面分别说明CentOS7和Ubuntu14/16下的步骤。

CentOS7

安装windbind

sudo yum install samba-winbind-clients

修改/etc/nsswitch.conf

sudo vi /etc/nsswitch.conf

修改hosts,如下图加上wins
这里写图片描述

修改/etc/samba/smb.conf

sudo vi /etc/samba/smb.conf

这里写图片描述
CentOS7安装的是samba4,在samba4中 security的share 和 server 选项已被弃用,
必须使用user,并加上 map to guest = bad user,
否则会导致,其他主机无法通过主机名访问本机
并且在ping 其他主机时,ping会警告:

WARNING: Ignoring invalid value ‘share’ for parameter ‘security’

Ubuntu14

安装windbind

sudo apt-get install winbind

修改hosts,如下图加上wins

sudo vi /etc/nsswitch.conf

这里写图片描述

再次ping主机名,成功。
这里写图片描述

如果其他主机不能ping通本机主机名,请检查是否安装了防火墙,以及防火墙是否开启,以及防火墙规则中是开启了相关端口

sudo ufw status numbered // 检查防火墙状态(显示规则编号)
sudo ufw allow samba // 允许所有的外部IP访问本机的samba端口
sudo ufw allow ssh // 允许所有的外部IP访问本机的samba端口(22)

下面是我的ubuntu14虚拟机上防火墙的配置
这里写图片描述

Ubuntu16

ubuntu14安装winbind时还会自动安装libnss-winbind,libpam-winbind,libwbclient0,如下图:
这里写图片描述
但是在ubuntu16下,安装winbind好像不会自动安装上面的组件,所以安装winbind后如果还是不能ping 主机名,还要手工安装libnss-winbind libpam-winbind

sudo apt-get install winbind ,
sudo apt-get install libnss-winbind libpam-winbind

其他操作与ubuntu14下相同

参考

《WARNING: Ignoring invalid value ‘share’ for parameter ‘security’ 》
《匿名无须交互输入用户名和密码的samba配置方法(security = user)》
http://www.cnblogs.com/laipDIDI/articles/2213787.html
http://www.linuxidc.com/Linux/2011-03/32894.htm
http://blog.sina.com.cn/s/blog_51c7c7fa0100lig2.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

10km

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值