running 4 TCP/IP Network Configuration

 

網絡設備:

Ethernet網卡: ethX 如 eth0 eth1 。。。

即本地連接。物理設備 有IP netmask 等配置 用來連接其他主機或網絡

網卡標識爲ethX:Y的網卡 如 eth0:1 爲eth0網卡的別名 可以實現一張物理網卡配置多個ip地址 但它不支持動態地址即dhcp

Local Loopback網卡: lo

loopback迴環設備,屬於邏輯設備負責主機自身對自身訪問的網絡通信。

sit0網卡:

負責IPv6和IPv4地址協調工作。一般處於不活動狀態。

pppX:

串行設備 如貓

查看某個網卡當前狀況:#ifconfig ethX

#ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:F9:93:28 
          inet addr:192.168.91.130  Bcast:192.168.91.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fef9:9328/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6999 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5459 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:763902 (745.9 KiB)  TX bytes:666493 (650.8 KiB)
          Interrupt:169 Base address:0x2000

重要字段解釋:

網卡編號 eth0

由/etc/modprobe.conf定義了物理網卡的別名爲eth0

每當操作系統加載時 就讀取這個文件中的設置作爲默認設置

連接類型 以太網 硬件地址:00:0C:29:F9:93:28

當前生效的IP地址:192.168.91.130 廣播地址192.168.91.255  子網掩碼:

255.255.255.0

最大傳輸單元(Maximum Transmission Unit,MTU)1500

RX packets 接收的包:5999 錯誤 0丟棄0 超時0 數據幀0

TX packets 發送的包:5459 。。。。。。。。。。。。。

衝突:0   傳送列隊(TransferQueue)長度:1000

RX bytes :接收數據流量

TX bytes :發送數據流量

interrupt :中斷號

base address:基地址

 

關於網卡的一些命令:

#ifconfig

查看當前活動網卡信息

#ifconfig –a

查看所有網卡信息 包括隱藏以及不活動的

#ifup ethX

臨時啓用ethX網卡

#ifdown ethX

臨時關閉ethX網卡

 

 

 

Linux主機網絡設置主要包括以下幾項:

Hostname

IP and Netmask

Gateway

DNS server address

 

配置方法:

立即生效但重啓網絡服務後失效:

主機名:#hostname host.example.com

IP和mask :#ifconfig ethX 192.168.0.24/24

或者#ifconfig ethX 192.168.0.24 netmask 255.255.255.0

默認網關:#route add [-net|host] 0.0.0.0 gw gatewayaddress 默認路由

可以用 #route –n 查看路由信息

DNS地址:修改/etc/resolv.conf文件

search example.com

nameserver DNSaddress(改爲 如:192.168.0.254)

dns修改過之後永久有效

 

永久有效但不會立即生效:

主機名:

修改/etc/sysconfig/network文件

networking=yes

是否啓用TCP/IP網絡協議 是

networking_IPv6=no

是否啓用IPv6協議 否

HOSTNAME= station24.example.com

主機名:station24.example.com

IP、MASK、Gateway:

修改/etc/sysconfig/network-scripts/ifcfg-ethX

BOOTPROTO=static

IPADDR=192.168.0.24

NETMASK=255.255.255.0

GATEWAY=192.168.0.1

 

/etc/sysconfig/network-scripts/ifcfg-ethX其他選項解釋:

DEVICE=eth0

網卡設備號
BOOTPROTO=dhcp|static|bootp|none
網絡連接方式 DHCP 靜態 bootp 無

DHCPCLASS=

dhcp類別(依網絡供應商而定)
HWADDR=00:0C:29:F9:93:28

硬件地址
ONBOOT=yes

是否開機啓動 是

USERCTL=no

普通用戶是否有禁用啓用網卡的權限 無

TYPE=

網絡設備類型

PEERDNS=no

是否許系統自動修改dns指向 不

 

以上配置也可以直接在圖形界面設置 linux提供了幾種設置界面:

#system-config-network

#system-config-network-cmd

#system-config-network-gui 圖形界面

#system-config-network-tui 文本界面

 

 

爲了方便管理和配置 這些網絡設置過程可以寫成bash shell 當需要設置它們時運行即可

下面是幾個簡單的實現:

(1)修改主機名

sethostname.sh

#!/bin/bash

sethostt (){
        hostname $1
        echo -e " \033[36m`hostname`\033[0m  ;temporary set already"
}
sethostr (){
        sed -i 's/^HOSTNAME.*/HOSTNAME='$1'/g' /etc/sysconfig/network
        echo -e " \033[32m$1\033[0m   ;permanent set already"
}

while getopts "n:tr" SWITCH; do
        case $SWITCH in
        n);;
        t)sethostt $2 ;;
        r)sethostr $2 ;;
        *)echo "Usage:`basename $0` -n value –t -r"
        esac
done

 

-n value 指定hostname –t 臨時 –r 永久

#./sethostname.sh –n hostname –t –r

 

(2) 修改IP mask dns Gateway 臨時|永久 查看IP,dns,Gateway

setip.sh

#!/bin/bash

FILEDNS="/etc/resolv.conf"
FILEIP="/etc/sysconfig/network-scripts/ifcfg-eth0"
ETH='eth0'
STAT=0

ethset() {
ETH=$1
FILEIP="/etc/sysconfig/network-scripts/ifcfg-$1"
}
setip() {
if [ $STAT -eq 0 ];then
        ifconfig $ETH $1
        echo -e "IP address set $1 \033[36malready\033[0m"
else
        if grep "^IPADDR" $FILEIP &>/dev/null ;then
                sed -i 's/^IPADDR.*/IPADDR='$1'/g' $FILEIP
                echo -e  "IP address set $1  \033[32malready\033[0m"
        else
                sed -i '/^BOOTPROTO.*/a \IPADDR='$1'' $FILEIP
                echo -e  "IP address set $1  \033[32malready\033[0m"
        fi
fi
}
setmask() {
if [ $STAT -eq 0 ];then
        ifconfig $ETH netmask $1
        echo -e " NATEMASK set $1 \033[36malready\033[0m"
else
        if grep "^NETMASK" $FILEIP &>/dev/null ;then
                sed -i 's/^NETMASK.*/NETMASK='$1'/g' $FILEIP
                echo -e  "NETMASK set $1  \033[32malready\033[0m"
        else
                sed -i '/^IPADDR.*/a \NETMASK='$1'' $FILEIP
                echo -e  "NETMASK set $1  \033[32malready\033[0m"
        fi
fi
}
setgate() {
if [ $STAT -eq 0 ];then
        route add -net 0.0.0.0 gw $1
        echo -e "GATEWAY set $1 \033[36malready\033[0m"
else
        if grep "^GATEWAY" $FILEIP &>/dev/null ;then
                sed -i 's/^GATEWAY.*/GATEWAY='$1'/g' $FILEIP
                echo -e  "GATEWAY set $1  \033[32malready\033[0m"
        else
                sed -i '/^IPADDR.*/a \GATEWAY='$1'' $FILEIP
                echo -e  "GATEWAY set $1  \033[32malready\033[0m"
        fi
fi
}
setdns() {
if grep "^nameserver" $FILEDNS >/dev/null;then
        sed -i 's/^nameserver.*/nameserver '$1'/g' $FILEDNS
        echo -e  "DNS set $1  \033[32malready\033[0m"
else
        echo -e  "nameserver $1" > $FILEDNS
        echo -e  "DNS set $1  \033[32malready\033[0m"
fi
}
view() {
if [ $1 = ip ];then
viewip
elif [ $1 = gateway ];then
viewgate
elif [ $1 = dns ];then
viewdns
elif [ $1 = all ];then
viewip
viewgate
viewdns
fi
}
viewip() {
ifconfig $ETH|grep "inet addr";echo ""
}
viewgate() {
route -n|head -2|tail -1
route -n|tail -1
echo ""
}
viewdns() {
grep "^nameserver" /etc/resolv.conf;echo ""
}
help() {
HELPFILE=`mktemp /tmp/helpfile.XXXXXX`
cat &gt;&gt;$HELPFILE<&lt;EOF
------------------------------------HELP-------------------------------------

usage:  setip.sh  -r|t [-iamgns] [-i Ethernet_Adapter_num] [-a IPv4_address]
[-m netmask] [-g gateway] [-n dns_server_address] [-s ip|gateway|dns|all]

EOF
cat $HELPFILE
echo -e "-r  permanent set mode  -->  \033[32mgreen\033[0m"
echo -e "-t  temporary set mode  --&gt;  \033[36mlight blue\033[0m"
echo "-----------------------------------------------------------------------------"
rm -rf $HELPFILE
}
while getopts "i:a:m:g:n:s:rth" SWITCH;do
while getopts "i:a:m:g:n:s:rth" SWITCH;do
        case $SWITCH in
        i)
                ethset $OPTARG;;
        a)
                setip $OPTARG;;
        m)
                setmask $OPTARG;;
        g)
                setgate $OPTARG;;
        n)
                setdns $OPTARG;;
        s)
                view $OPTARG;;
        r)
                STAT=1;;
        t)
                STAT=0;;
        h)
                help;;
        *)
                echo "input error!!!!!!!!"
                help;;
        esac
done

如:

#./setip.sh -r|t –i eth0 –a 192.168.0.24 –m 255.255.255.0 –n 192.168.0.254 –s all

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章