2021-05-12 14:32:11
Ubuntu/CentOS7解決可以ping ip卻ping不通主機名
最近裝了兩台Linux虛擬機器分別CentOS7和Ubuntu 14.04,都裝了samba服務,檔案共用都正常,虛擬機器上網際網路也正常,能以ping 通區域網的ip,卻都ping不通主機名,其他電腦(Windows/Linux)都能ping 通這兩台虛擬機器的主機名。
最終找到原因:沒有安裝winbind,也沒有設定/etc/nsswitch.conf
下面分別說明CentOS7和Ubuntu 14.04/16.04下的步驟。
CentOS 7
安裝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’
Ubuntu 14.04
安裝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虛擬機器上防火牆的設定
Ubuntu 16.04
Ubuntu 14.04安裝winbind時還會自動安裝libnss-winbind,libpam-winbind,libwbclient0,如下圖:
但是在Ubuntu 16.04下,安裝winbind好像不會自動安裝上面的元件,所以安裝winbind後如果還是不能ping 主機名,還要手工安裝libnss-winbind libpam-winbind
sudo apt-get install winbind ,
sudo apt-get install libnss-winbind libpam-winbind
其他操作與Ubuntu 14.04下相同。
相關文章