2012年10月31日 星期三

(3) SuSE Linux Network Setting

大部分的Linux distributions都會設計兩種設定網路方式:Network Manager的動態設定以及手動設定。傳統的network服務在SuSE系列的作業系統是預設,但是由於Yast的功能非常強大,使用者透過Yast無論使用的是Network Manager還是傳統的Network服務,經驗上都沒有太大的差別。本文所提供的網路設定則專為簡單紀錄TCP/IP網路設定。

了解Linux network devices的命名方式

使用ip指令來觀察我們的網路裝置:
maxsolar@SLES11:~> ip a
1: lo:  mtu 16436 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 brd 127.255.255.255 scope host lo
    inet 127.0.0.2/8 brd 127.255.255.255 scope host secondary lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:66:c5:b9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.23/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::5054:ff:fe66:c5b9/64 scope link 
       valid_lft forever preferred_lft forever
可能看到的裝置會有:
  • lo
  • 一個loopback device。這個裝置永遠存在,即使系統沒有安裝任何的NIC。他是一個虛擬裝置,可供其他應用程式再沒有實體裝置時仍能運作。例如沒有NIC的時候,loopback裝置會自動拿127的網段當作本機位置。同樣的道理在檔案系統也是如此;掛載一個image到某個目錄下使用,這個image本身只是檔案系統裡的一個檔案,並不是實體裝置;利用loopback來他模擬成一個裝置並加以使用,就是loopback device的功能。
  • eth0
  • 一個ethernet device,精確來說只是一個interface,由0起算;因此一個4ports的網卡會有eth{0,3}這幾個裝置。
  • sit0
  • 一個將ipv4封包封裝成ipv6的裝置,通常使用於ipv4/ipv6混合的網路環境。
  • ath0
  • 無線網路的裝置。
  • tr0
  • 一個IBM的token ring環境的device。
  • fddi0
  • 一個Fibre distributed data interface裝置,常用光纖骨幹的玩家一定不陌生。
  • ppp0
  • 一個Point-to-Point的連線裝置,例如家裡撥接上網或是使用vpn時會使用。
以eth0的訊息而言,link/ether顯示的是layer2(data-link layer)的資訊,也就是MAC address;inet/inet6分別表示ipv4/ipv6的位置。

SuSE重要的網路設定檔

  • /etc/sysconfig/network/ifcfg-ethX
  • 標準的ethernet設定檔。
  • /etc/sysconfig/network/route
  • routing table。
  • /etc/resolv.conf
  • 所有unix-like系統的DNS設定--沒有他雖然可以連上internet但就沒有名稱解析可用了。
  • /etc/HOSTNAME
  • 儲存local主機名稱的檔案。
  • /etc/sysconfig/network/config
  • SuSE Linux的global網路設定檔。
  • /etc/sysconfig/network/dhcp
  • SuSE Linux的DHCP client設定檔。

DHCP v.s static IP

  • /etc/sysconfig/network/ifcfg-ethX
  • 一個設定dhcp最精簡的eth0範例如下:
    BOOTPROTO="dhcp"
    STARTMODE="auto"
    
    夠簡單吧!
    設定檔有幾個潛規則:1.變數(左側)一定要大寫,設定值(右側)以小寫為主。2.沒有先後順序的關係。

    一個設定固定ip最精簡的設定檔如下:
    BOOTPROTO='static'
    STARTMODE='auto'
    IPADDR='192.168.1.23/24'
    GATEWAY='192.168.1.1'
    USERCONTROL='no'
    
    SuSE允許非常簡便的CIDR表示法,不需要像Redhat需要定義NETMASK。更複雜一點的範例如下:
    BOOTPROTO='static' #BOOTPROTO只有staticdhcp兩種。
    STARTMODE='onboot'
    IPADDR='192.168.1.23/24' 
    ETHTOOL_OPTIONS='autoneg off speed 1000 duplex full' 
    NAME='Ethernet_01'
    REMOTE_IPADDR=''
    USERCONTROL='no'
    其中有些重要的設定值需要了解:
    1. onboot
    2. onboot表示開機時會自動啟動,相當於Redhat的ONBOOT=yes。可用的args還有auto(onboot), manual(ifup/ifdown)以及ifplugd。
    3. /24
    4. 方便的CIDR表示法。
    5. ETHTOOL_OPTIONS
    6. 此時指停用自動速度協商,並設定速度為1000Mbp/s全雙工。
    7. NAME
    8. 在yast裡顯示的名稱。
    9. REMOTE_IPADDR
    10. 這個option只有在p2p的環境才需要設定。
    11. USERCONTROL
    12. 這個option只有在cineternet/qinternet才會用到。
    如果想參考更詳盡的設定,完全不必上網google或是查man pages;/etc/sysconfig/network/ifcfg.template就提供了非常詳盡的設定說明!
  • /etc/sysconfig/network/config
  • 這個檔案內容大概像:
    DEFAULT_BROADCAST="+"
    GLOBAL_POST_UP_EXEC="yes"
    GLOBAL_PRE_DOWN_EXEC="yes"
    CHECK_DUPLICATE_IP="no"
    SEND_GRATUITOUS_ARP="no"
    DEBUG="no"
    USE_SYSLOG="yes"
    CONNECTION_SHOW_WHEN_IFSTATUS="no"
    CONNECTION_CHECK_BEFORE_IFDOWN="no"
    CONNECTION_CLOSE_BEFORE_IFDOWN="no"
    CONNECTION_UMOUNT_NFS_BEFORE_IFDOWN="no"
    WAIT_FOR_INTERFACES="30"
    LINK_READY_WAIT="0"
    IPV6_DAD_WAIT=""
    FIREWALL="yes"
    LINKLOCAL_INTERFACES="eth*[0-9]|tr*[0-9]|wlan[0-9]|ath[0-9]"
    IFPLUGD_OPTIONS="-f -I -b"
    NETWORKMANAGER="no"
    NM_ONLINE_TIMEOUT="30"
    NETCONFIG_MODULES_ORDER="dns-resolver dns-bind dns-dnsmasq nis ntp-runtime"
    NETCONFIG_DNS_POLICY="auto"
    NETCONFIG_DNS_FORWARDER="resolver"
    NETCONFIG_DNS_FORWARDER_FALLBACK="yes"
    NETCONFIG_DNS_STATIC_SERVERS="192.168.1.254 168.95.192.1"
    NETCONFIG_DNS_RANKING="auto"
    NETCONFIG_NTP_POLICY="auto"
    WIRELESS_REGULATORY_DOMAIN=''
    
  • /etc/sysconfig/network/route
  • 這個檔案內容大概像:
    172.16.100.0/16 192.168.1.1 - eth0
    default 192.168.1.254 - -
    實際上這個檔案共有五個欄位:1.destination 2.gateway 3. netmask of dest. 4. name of interface 5. type of route(optional)
    舉例來說,要通往172.16.100.0/255.255.0.0這個網段要透過192.168.1.1這個窗口,其界面名稱是eth0,則應該表示為
    172.16.100.0 192.168.1.1 255.255.0.0 eth0
    不過這樣寫真的不容易馬上理解,應該使用CIDR的寫法:
    172.16.100.0/16 192.168.1.1 - eth0
    由於第四個欄位已經一起跟第一個欄位定了,因此使用-表示省略他。第二行的default表示如果上述的routing table都找不到路徑傳送的話,則所有封包都往default gateway送。需注意這個檔案內容具有順序性--default gateway必須擺在最後一行

重新啟動網路服務使設定生效

SLES預設都是使用Network服務,如果您不確定系統使用的是不是Network服務,可以這樣檢查:
SLES11:/home/maxsolar # rcnetwork status
Checking optional network interfaces:
    eth0      
    eth0      IP address: 192.168.1.23/24
    eth0      is up                                                  running
Checking mandatory network interfaces:
    lo        
    lo        IP address: 127.0.0.1/8
    secondary lo IP address: 127.0.0.2/8
    lo        is up                                                  running
Checking service network .  .  .  .  .  .  .  .  .  .  .             running
由於我們是使用手動方式設定ip,因此別忘了名稱解析也是很重要的!假設我們的DNS server是192.168.1.254,那麼在自家的/etc/resolv.conf應該要有紅色這行:
search wistron.com
nameserver 192.168.1.254
nameserver 168.95.192.1
nameserver最多定義兩行,再多的設定也只會讀前兩行而已。

IP Aliasing

IP aliasing是把多個IP關聯到同一張網卡的一種技術。一般的使用狀態下,一張網卡只需要一組IP位置,但是有許多時候我們為了安全性/管理方便,會希望一張網卡能有一個以上的IP,因此會使用IP aliasing。
假設主機原本的IP為192.168.1.23/24,想要再額外指定一個IP為192.168.1.125/24,只複製/etc/sysconfig/network/ifcfg-eth0為ifcfg-eth0:1並修改ifcfg-eth0:1為自己要alias的IP即可。
原本的ifcfg-eth0大致如下:
BOOTPROTO='static'
STARTMODE='static'
IPADDR='192.168.1.23/24'
USERCONTROL='no'
修改過的ifcfg-eth0:1如下
BOOTPROTO='static'
IPADDR='192.168.1.23/24'
STARTMODE='auto'
USERCONTROL='no'
IPADDR1='192.168.150.125/24'
需注意eth0:1必須跟eth0同網段,且無法使用DHCP來取得IP位置。

Share

沒有留言: