2015年10月13日 星期二

有關 CentOS-7 的問題

CentOS 7 對網路有一些修改,一開始我也找不太到我想要的設定...


以下文章摘自 https://wiki.centos.org/zh-tw/FAQ/CentOS7


有關 CentOS-7 的問題

1. 我過往利用 boot.iso 映像進行網絡安裝。它去了哪裡?

由 EL6 起,上游決定把 boot.iso 移出 images/ 這個目錄並利用另一個獨立的媒體來發行它。基於該映像頗大,我們亦決定同樣做。網絡安裝磁碟的映像名為 netinstall.iso,它只收藏在 isos/ 這個目錄,當中還有其它的安裝映像。

2. 為何我的乙太網絡不能運作,除非我登入並刻意啟用它?

……還有,為甚麼介面名稱完全「逆轉」以往慣例?這樣做違反了 Unix「不更改預期結果」的原則。
上游的預設組態已改用 NetworkManager,而且介面預設是不會被啟用的(針對乙太網來說是較難理解)。權宜之計就是在安裝過程中,等待安裝程式出現詢問語系/鍵盤/儲存裝置/軟件安裝的主頁,然後啟用你的網絡卡。這個晝面內有一粒「網絡及主機名稱」的按鈕。點擊這個按鈕,選取你要編輯的乙太網絡連線,然後點擊右上角的「停用」按鈕。假如你選用 DHCP,你便會看見該連線取得一個網絡位址。如果你需要以手動方式更改網絡設定,請按「設定」按鈕,輸入所需數值並儲存他們。你大概要停用然後再啟用剛設定的網絡卡才能套用這些改動。現在按「完成」便大功告成。你也可以在安裝完成後透過 NetworkManager(「系統;選項;網絡連線」或右按通知區域內的網絡小圖示,選取「編輯連線……」)來作出這些改動。
假如你不採用 NetworkManager,你可以透過編輯網絡介面的設置檔(正常為 /etc/sysconfig/network-scripts/ifcfg-eth0)並把 ONBOOT=no 改為 ONBOOT=yes 來達到相同効果。某些採用 DHCP 的安裝還需要額外一行:BOOTPROTO=dhcp;固定 IP 的安裝當然需要:BOOTPROTO=static
假設介面是 eth0,你可以(透過 root 的身份)這樣編輯 ONBOOT
# cd /etc/sysconfig/network-scripts/ 
# sed -i -e 's@^ONBOOT="no@ONBOOT="yes@' ifcfg-eth0
關於「更改預期結果」:上述例子採用「傳統」的網絡裝置,eth0。其它裝置名稱亦有可能出現,例如:em1p3p1 等。不論你喜歡與否,這個為介面命名的改動是 Linux 的未來趨勢。它已包含在上游的「測試發行版本」作為預覽。此外請參閱:Dell 的介紹及內部員工的網誌

3. 要是我想還原至舊的命名呢?

以下是所需的步驟:
  • 在 grub 加入 net.ifnames=0 and biosdevname=0 作為內核參數
  • 在 /etc/sysconfig/network-scripts/ 內把你的網絡卡設定檔改名為 ifcfg-ethX
  • 假若你擁有多個介面並希望控制每個裝置的名稱,不想由內核作主,你似乎有必要透過 /etc/udev/rules.d/60-net.rules 蓋過 /usr/lib/udev/rules.d/60-net.rules。

4. 但我只想令它運作及手動式編輯設定檔。

很多安裝用不著 NetworkManager 工具的複雜性,而採用人手編輯的設定檔。以下是一個 非 NetworkManager 的 DHCP 介面設定範例:
[root@example ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO=dhcp
NM_CONTROLLED="no"
PERSISTENT_DHCLIENT=1
ONBOOT="yes"
TYPE=Ethernet
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME="eth0"
[root@none ~]#
以及一個「靜態分配」設定檔的範例:
[username@hostname]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
HWADDR="00:21:70:10:7E:CD"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO=static
# BOOTPROTO=dhcp
IPADDR=10.16.1.106
NETMASK=255.255.255.0
#
# GATEWAY 有時會放在:/etc/sysconfig/network
GATEWAY=10.16.1.1
此外,通用項目如主機名稱及 DNS 伺服器可選擇性地放置在:
[username@hostname]$ cat /etc/sysconfig/network
HOSTNAME=acme.example.com
DNS1=10.16.1.112
DNS2=8.8.8.8
## DNS2=76.242.0.28
SEARCH=example.com
這些資訊是「選擇性」的,因為一台 DHCP 伺服器能派發這些數值。當一個良好部署的 DNS 環境存在時,initscripts 能夠從 PTR 等記錄找出主機名稱等資訊,但有些用戶需要以人手管理這些細節。要取得更多資訊,你可用以下方式列出整全的 initscripts 文檔:
rpm -qd initscripts 
不論該環境是否安裝了 man 閱讀說明手冊的套件及所依賴的套件。

5. 我如何停用 IPv6?

上游僱員 Daniel Walsh 建議不要停用 ipv6 模塊,因為這樣會導致 SELinux 及其它元件出現問題。你可改而在 /etc/sysctl.conf 加入:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
要在運作中的系統停用它:
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1
附加備註 #1:要是你在停用 IPv6 的系統上轉接 X 時遇到問題,請編輯 /etc/ssh/sshd_config 及作出以下一組改動:
(1) 更改這一行
#AddressFamily any
AddressFamily inet
(inet 指定 ipv4;inet6 指定 ipv6)
或者
(2) 移除這行行首的井號(#)
#ListenAddress 0.0.0.0
然後重新啟動 ssh。
附加備註 #2:要是你在停用 IPv6 的系統上啟動 postfix 時遇到問題,你可選擇
(1) 編輯 /etc/postfix/main.cf 並備註掉 localhost 部份的設定及採用 ipv4 迴路。
#inet_interfaces = localhost
inet_interfaces = 127.0.0.1
(2) 從 /etc/hosts 取掉 ipv6 的 localhost。
附加備註 #3 :如要停用 RPCBIND ipv6(rpcbind、rpc.mountd、prc.statd),請在 /etc/netconfig 備註掉 udp6 及 tcp6 行:
udp        tpi_clts      v     inet     udp     -       -
tcp        tpi_cots_ord  v     inet     tcp     -       -
#udp6       tpi_clts      v     inet6    udp     -       -
#tcp6       tpi_cots_ord  v     inet6    tcp     -       -
rawip      tpi_raw       -     inet      -      -       -
local      tpi_cots_ord  -     loopback  -      -       -
unix       tpi_cots_ord  -     loopback  -      -       -

6. 我可以從哪裡下載 32 位元版本?

我們計劃透過社群的參予建立完整的 32 位元 CentOS-7 發行版本作為第二個架構。我們會隨著事情的發展而發放更多資訊,但暫時未有估計的完成時間。

7. 你對 ifconfig/netstat 做了甚手腳?

ifconfig 及 netstat 工具程式在 CentOS 5 及 6 的應用手冊內被標示為降級已接近十年,而 Redhat 決定在 CentOS 7 不會預設安裝 net-utils 套件。取而代之的工具是 ss 和 ip。假如你真的、真的很需要 ifconfig 和 netstat,你可執行 yum install net-utils。
Translation of revision 17

沒有留言: