CentOS網絡配置四個方式

Linux網絡屬性配置

    網絡屬性是Linux的重要管理對象,對網絡的管理配置項目較爲複雜。目前CentOS發行版中主要有命令配置,屬性文件配置和系統嚮導方式配置四種配置方式。

    在網絡配置命令在CentOS中有兩個陣營的命令組:ifcfg家族和正在發展的ip家族,目前ifcfg家族逐漸被淘汰,而ip命令家族逐漸深入人心。

ifcfg命令家族: ifconfig, route, netstat

ifconfig命令:接口及地址查看和管理

    ifconfig  [options] [INTERFACE]

    ifconfig -a:顯示所有接口,包括inactive狀態的接口;

    ifconfig  -s:顯示所有接口簡短信息列表,僅僅包括流量,不包括地址信息;

示例:

# ifconfig -s    
Iface    MTU  RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg  
eno16777  1500  629199  0   314   0  62426 0     0  0   BMRU    
eno33554  1500  134267  0   314   0  10   0     0  0   BMRU    
lo     65536  16    0   0    0  16   0     0  0   LRU

ifconfig interface options | address ...

    ifconfig  IFACE  IP/MASK  [up|down]:配置網卡地址

    ifconfig  IFACE  IP  netmask  NETMASK:配置網卡地址

        options:[-]promisc [取消]啓用混雜模式;

    注意:立即送往內核中的TCP/IP協議棧,並生效;

    管理IPv6地址:

    add addr/prefixlen

    del addr/prefixlen

示例:

# ifconfig eno33554960 192.168.10.100/24 up    
# ifconfig eno33554960    
eno33554960: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.100  netmask 255.255.255.0  broadcast 192.168.10.255     
inet6 fe80::20c:29ff:fe32:aee2  prefixlen 64  scopeid 0x20<link>  
ether 00:0c:29:32:ae:e2  txqueuelen 1000  (Ethernet)            
RX packets 131385  bytes 15129620 (14.4 MiB)            
RX errors 0  dropped 314  overruns 0  frame 0            
TX packets 9  bytes 698 (698.0 B)            
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

route命令:路由查看及管理

路由條目類型:

    主機路由:目標地址爲單個IP;

    網絡路由:目標地址爲IP網絡;

    默認路由:目標爲任意網絡,0.0.0.0/0.0.0.0

查看路由:

    route  -n

示例:

# route -n
Kernel IP routing table
Destination Gateway    Genmask    Flags Metric  Ref    Use Iface
172.18.0.0  0.0.0.0   255.255.0.0   U   1      0      0 eth0
0.0.0.0     172.18.0.1 0.0.0.0    UG   0      0      0 eth0

    說明:(第一個條目0.0.0.0指不需要路由本地網絡)

添加路由:

    route  add  [-net|-host]  target  [netmask  Nm]  [gw GW]  [[dev] If] #下一跳地址

示例:

# route add -net  10.0.0.0/8  gw  192.168.10.1  dev  eth1
# route add -net  0.0.0.0/0.0.0.0  gw 192.168.10.1  
# route add default  gw 192.168.10.1

     注意:這裏的 -net 必須要符合掩碼的條件: 10.10.0.0/8 是不對的,10.10.0.0/16是對的。

刪除路由:

    route  del  [-net|-host] target  [gw Gw]  [netmask Nm]  [[dev] If]

示例: 

# route  del  -net  10.0.0.0/8  gw 192.168.10.1
# route del  default #刪除默認網關

netstat命令:

        顯示網絡連接, 路由表, 網卡統計, 僞裝鏈接,多播關係;

顯示路由表:netstat  -rn

    -r:顯示內核路由表

    -n:數字格式

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         172.18.0.1      0.0.0.0         UG        0 0          0 eno16777736
0.0.0.0         172.18.0.1      0.0.0.0         UG        0 0          0 eno16777736


顯示網絡連接:

    netstat  [--tcp|-t]  [--udp|-u]  [--udplite|-U]輕量級udp  [--sctp|-S]高級流控鏈接  [--raw|-w]裸套接字鏈接  [--listening|-l]  [--all|-a]  [--numeric|-n]   [--extend|-e[--extend|-e]]  [--program|-p]

    -t:TCP協議的相關連接,連接均有其狀態;FSM(Finate State Machine);

    -u:UDP相關的連接

    -w:raw socket相關的連接

    -l:處於監聽狀態的連接

    -a:所有listening or 非listening的狀態,對於TCP 意味着顯示 established鏈接;

    -n:以數字格式顯示IP和Port;

    -e:擴展格式,會顯示用戶和socket的套接字文件的inode號碼

    -p:顯示相關的進程及PID;

    常用組合:

    -tan:顯示tcp所有狀態連接不解析網絡主機名

     -uan:顯示所有狀態udp連接不解析網絡主機名

    -tnl:顯示tcp監聽狀態連接,不解析網絡主機名

    -unl:顯示udp監聽狀態連接,且不解析網絡主機名

    -tunlp:顯示tcp、udp監聽狀態連接,且不解析網絡主機名,顯示對應程序

顯示接口的統計數據:

    netstat    {--interfaces|-I|-i}    [iface]   [--all|-a]   [--extend|-e]   [--verbose|-v]   [--program|-p]  [--numeric|-n]

    所有接口:netstat  -i #顯示所有端口

示例:

# netstat -i    
Kernel Interface table 
Iface  MTU  RX-OK RX-ERR RX-DRP RX-OVR  TX-OK TX-ERR TX-DRP TX-OVR Flg   
eno16777 1500  907131 0   653  0     64269  0   0   0    BMRU
eno33554 1500  149827 0   328  0     20    0   0   0    BMRU
lo    65536  24   0   0   0     24    0   0   0     LRU

    指定接口:netstat  -I<IFace> #netstat -Ieno16777736 #不加空格。

示例:

# netstat  -Ieno33554960    
Kernel Interface table  
Iface MTU  RX-OK RX-ERR RX-DRP RX-OVR  TX-OK TX-ERR TX-DRP TX-OVR Flg    
eno33554 1500 150411  0   328 0      20  0    0     0 BMRU

## ifup/ifdown命令:

注意:通過配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE來識別接口並完成配置;文件不存在就不能用該命令來啓動或關閉文件。

示例:

# ifup eno16777736

配置主機名:

hostname命令:

    查看:hostname

    配置:hostname  HOSTNAME

    說明:當前系統有效,重啓後無效;

hostnamectl命令(CentOS 7):

hostnamectl  status:顯示當前主機名信息;

hostnamectl  set-hostname:設定主機名,永久有效;

配置文件配置

    /etc/sysconfig/network

    HOSTNAME=<HOSTNAME>

    注意:此方法的設置不會立即生效; 但以後會一直有效;

# hostnamectl status       
Static hostname: centos7.1       
Pretty hostname: CentOS7.1             
Icon name: computer-vm               
Chassis: vm            
Machine ID: f64f1e109e764c4ba7f0e1142abb599d               
Boot ID: edbdacdc65b142c1b142fb45f58cc47f        
Virtualization: vmware      
Operating System: CentOS Linux 7 (Core)           
CPE OS Name: cpe:/o:centos:centos:7                
Kernel: Linux 3.10.0-327.el7.x86_64          
Architecture: x86-64

iproute家族

ip命令:show / manipulate routing, devices, policy routing and tunnels

    ip [ OPTIONS ] OBJECT { COMMAND | help }

    OBJECT := { link | addr | route | netns  }

    注意: OBJECT可簡寫,各OBJECT的子命令也可簡寫;

ip  OBJECT:

1.ip link: network device configuration

    ip link  help -  顯示簡要使用幫助;

    ip link [dev] NAME  set [options] -設置網卡硬件二層屬性,用途不是很廣泛

        [dev] NAME (default):指明要管理的設備,dev關鍵字可省略;

        options:

            up和down:開啓或關閉

            multicast on或multicast off:啓用或禁用多播功能;

            name NAME:重命名接口

            mtu NUMBER:設置MTU的大小,默認爲1500;

示例:

# ip link set eth1 up # 設置硬件屬性啓動、關閉。
3: eno33554960: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:32:ae:e2 brd ff:ff:ff:ff:ff:ff
# ip link show      # display device attributes 二層設備屬性,不顯示ip屬性

2.ip netns PID:

    ip netns:  - manage network namespaces.ns爲namespace,用於將接口移動到指定的網絡名稱空間,

    ip netns  list:列出所有的netns

    ip netns  add  NAME:創建指定的netns

    ip netns  del  NAME:刪除指定的netns

    ip netns   exec  NAME  COMMAND:在指定的netns中運行命令

示例:

# ip netns add myspace
# ip netns

3.ip address - protocol address management.

ip address help - 查詢命令幫助

ip address add - add new protocol address

     ip  addr  add  IFADDR  dev  IFACE [label NAME] [broadcast ADDRESS] [scope SCOPE_VALUE]

        [label NAME]:爲額外添加的地址指明接口別名;

        [broadcast ADDRESS]:廣播地址;會根據IP和NETMASK自動計算得到;

        [scope SCOPE_VALUE]:

            SCOPE_VALUE global:全局可用;

             link:接口可用;不用於通信,別人ping不通

              host:僅本機可用;僅主機可用

    對照: ifconfig 192.168.10.100/24 eno33554960 up

             ip addr add 192.168.10.100/24 dev eno33594960

示例:

# ip addr add 192.168.10.100/24 dev eth1
ip addr add 192.168.10.101/24 dev eth1 #可以在同網段設置第二地址
# ip addr add 10.0.0.100/24 dev eth1 #還可以添加其他地址,還有同網段地址那麼還可以有該網段的第二地址,沒有設置別名那麼不會在ip a中顯示出來,也不能再配置
# ip add add 10.1.1.10/24 dev eth1 label eth1:0 # 在ip addr  裏面可以顯示並配置

ip address delete - delete protocol address

        ip addr  delete  IFADDR  dev  IFACE #用法通add 

示例:

# ip addr delete 192.168.10.100/24 dev eth1
# ip addr delete 192.168.10.100/24 dev eth1 label eth1:0

ip address list  [IFACE]:顯示接口的地址;

# ip addr list
   1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
   2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

ip address flush - flush protocol addresses

    ip  addr  flush  dev  IFACE

示例:

# ip addr flush dev eth1

4.ip route - routing table management

ip  route   add   PREFIX  via GW  [dev  IFACE]  [src SOURCE_IP]

示例:

# ip route add 10.0.0.0/8 via 192.168.10.1
# ip route list
   default via 172.18.0.1 dev eno16777736
   default via 172.18.0.1 dev eno16777736  proto static  metric 100
   10.0.0.0/8 via 192.168.10.1 dev eno33554960
   172.18.0.0/16 dev eno16777736  proto kernel  scope link  src 172.18.29.100  metric 100
   192.168.10.0/24 dev eno33554960  proto kernel  scope link  src 192.168.10.100
# ip route add default  via  GW

ip route delete - delete route

# ip route delete 10.0.0.0/8     
# ip route show
default via 172.18.0.1 dev eno16777736  proto static  metric 100     
172.18.0.0/16 dev eno16777736  proto kernel  scope link  src 172.18.29.100  metric 100     
192.168.100.0/24 dev eno33554960  proto kernel  scope link  src 192.168.100.100

ip route show - list routes

# ip route show 
default via 172.18.0.1 dev eno16777736  proto static  metric 100     
172.18.0.0/16 dev eno16777736  proto kernel  scope link  src 172.18.29.100  metric 100     
192.168.100.0/24 dev eno33554960  proto kernel  scope link  src 192.168.100.100

ip route flush - flush routing tables

# ip route flush 10/8
# ip route flush

ip route get - get a single route

    ip  route  get  TYPE PRIFIX

示例:ip route  get  192.168.0.0/24

# ip route flush 10.10/16    
# ip route  show    
default via 172.18.0.1 dev eno16777736  proto static  metric 100     
172.18.0.0/16 dev eno16777736  proto kernel  scope link  src 172.18.29.100  metric 100     
192.168.100.0/24 dev eno33554960  proto kernel  scope link  src 192.168.100.100

ss命令:

    ss  [options]  [ FILTER ]

選項:

    -t:TCP協議的相關連接

    -u:UDP相關的連接

    -w:raw socket相關的連接

    -l:監聽狀態的連接

    -a:所有狀態的連接

    -n:數字格式

    -p:相關的程序及其PID

    -e:擴展格式信息

    -m:查看socket的內存用量

    -o:計時器信息

    FILTER := [ state TCP-STATE ]  [ EXPRESSION ]

TCP的常見狀態:

    TCP FSM:TCP有限狀態機

    LISTEN:監聽

    ESTABLISEHD:建立的連接

    FIN_WAIT_1:分手要照片階段

    FIN_WAIT_2:分手等待確認

    SYN_SENT:已發送同步

    SYN_RECV:

    CLOSED:

EXPRESSION:

    dport = 

    sport = 

示例:'( dport = :22 or sport = :22)'

# ss  -tan  '(  dport = :22 or sport = :22  )'
# ss  -tan  state  ESTABLISHED
# ss  -tan  state  ESTABLISHED
Recv-Q Send-Q                      Local Address:Port        Peer Address:Port          
   0      0                        172.18.29.100:22           172.18.29.1:51904              
# ss -tunp
Netid  State  Recv-Q Send-Q  Local Address:Port Peer Address:Port       tcp    ESTAB  0    52    172.18.29.100:22  172.18.29.1:55291


修改配置文件

IP與二層屬性配置文件

    IP/NETMASK/GW/DNS等屬性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE #IFACE:接口名稱;

    路由的相關配置文件:/etc/sysconfig/network-scripts/route-IFACE

    配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE通過大量參數來定義接口的屬性;其可通過vim等文本編輯器直接修改,也可以使用專用的命令的進行修改(CentOS 6:system-config-network (更簡單的可以直接使用setup),CentOS 7: nmtui)

    ifcfg-IFACE配置文件參數:

    DEVICE:此配置文件對應的設備的名稱;與文件IFACE相同

    ONBOOT:在系統引導過程中,是否激活此接口;

    UUID:此設備的惟一標識;

    IPV6INIT:是否初始化IPv6;

    BOOTPROTO:激活此接口時使用什麼協議來配置接口屬性,常用的有dhcp、bootp、static、none;

    TYPE:接口類型,常見的有Ethernet, Bridge;

    DNS1:第一DNS服務器指向;

    DNS2:備用DNS服務器指向;

    DOMAIN:DNS搜索域;

    IPADDR: IP地址;

    NETMASK:子網掩碼;CentOS 7支持使用PREFIX以長度方式指明子網掩碼;

    GATEWAY:默認網關;

    USERCTL:是否允許普通用戶控制此設備;

    PEERDNS:如果BOOTPROTO的值爲“dhcp”,是否允許dhcp server分配的dns服務器指向覆蓋本地手動指定的DNS服務器指向;默認爲允許;

    HWADDR:設備的MAC地址;複製的就刪除就可以了

    NM_CONTROLLED:是否使用NetworkManager服務來控制接口;centOS6因爲該軟件不完善會影響業務所以建議no。

網絡服務:

    network

    NetworkManager 

管理網絡服務:

    CentOS 6: service  SERVICE  {start|stop|restart|status}

    CentOS 7:systemctl  {start|stop|restart|status}  SERVICE[.service]

配置文件修改之後,如果要生效,需要重啓網絡服務;

    CentOS 6:# service  network  restart

    CentOS 7:# systemctl  restart  network.service

路由配置文件

    用到非默認網關路由:/etc/sysconfig/network-scripts/route-IFACE

支持兩種配置方式,但不可混用

1.每行一個路由條目:

TARGET  via  GW

# cat /etc/sysconfig/network-scripts/route-eno33554960    
10.0.0.0/8 via 192.168.100.1    
# service network restart    
Restarting network (via systemctl):                 [  確定  ] 
# route -n    
Kernel IP routing table
Destination   Gateway    Genmask    Flags Metric Ref  Use Iface    
0.0.0.0     172.18.0.1   0.0.0.0    UG    100  0   0 eno16777736 
0.0.0.0     192.168.100.1  0.0.0.0    UG    101  0   0 eno33554960  
10.0.0.0     192.168.100.1  255.0.0.0   UG    100  0   0 eno33554960 
172.18.0.0    0.0.0.0     255.255.0.0  U    100  0   0 eno16777736 
172.18.0.0    0.0.0.0     255.255.0.0  U    101  0   0 eno33554960  192.168.100.0  0.0.0.0     255.255.255.0 U    100  0   0 eno33554960

2.每三行一個路由條目:

    ADDRESS#=TARGET # “#”爲號碼

    NETMASK#=MASK

    GATEWAY#=NEXTHOP

# cat /etc/sysconfig/network-scripts/route-eno33554960 
ADDRESS0=10.0.0.0    
NETMASK0=255.0.0.0    
GATEWAY0=192.168.100.1    
ADDRESS1=20.0.0.0    
NETMASK1=255.0.0.0    
GATEWAY1=192.168.100.2

給接口配置多個地址:ip addr之外,ifconfig或配置文件都可以;

(1) ifconfig  IFACE_LABEL  IPADDR/NETMASK

     IFACE_LABEL: eth0:0, eth0:1, ...

(2) 爲別名添加配置文件;

    DEVICE=IFACE_LABEL

    BOOTPROTO:網上別名不支持DHCP/bootp協議;

static, none 

    # cat /etc/sysconfig/network-scripts/ifcfg-eno33554960:0    
    TYPE=Ethernet    
    BOOTPROTO=static    
    DEFROUTE=yes    
    PEERDNS=yes    
    PEERROUTES=yes    
    NAME=eno33554960    
    UUID=d14954ef-3b01-4118-92a2-e71d8dc796c6    
    DEVICE=eno33554960:0    
    ONBOOT=yes    
    IPADDR=192.168.20.100    
    NETMASK=255.255.255.0    
    GATEWAY=192.168.20.1    
    # ifconfig eno33554960:0    
eno33554960:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        
inet 192.168.20.100  netmask 255.255.255.0  broadcast 192.168.20.255        
ether 00:0c:29:32:ae:e2  txqueuelen 1000  (Ethernet)

其他網絡命令

nmcli命令

    nmcli  [ OPTIONS ] OBJECT { COMMAND | help } device - show and manage network interfaces

    OBJECT:device/connection

    device COMMAND := { status | show | connect | disconnect | delete | wifi | wimax}connection - start, stop, and manage network connections

    connection COMMAND := { show | up | down | add | edit | modify | delete | reload | load } modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>

如何修改IP地址等屬性:

nmcli  conn  modify  IFACE  [+|-]setting.property  value

    ipv4.address

    ipv4.gateway

    ipv4.dns1

    ipv4.method

# nmcli device status eno33554960
未知參數:eno33554960
設備         類型      狀態    CONNECTION  
eno16777736  ethernet  連接的  eno16777736 
eno33554960  ethernet  連接的  eno33554960 
lo           loopback  未管理  --
# nmcli connection show eno33554960
connection.id:                          eno33554960
connection.uuid:                        626a0ba4-ddf0-4ddf-a06d-2892a779aec9
connection.interface-name:              eno33554960
connection.type:                        802-3-ethernet
connection.autoconnect:                 no
connection.autoconnect-priority:        0
connection.timestamp:                   1459117894

 

# nmcli conn modify eno33554960 -ipv4.address 192.168.10.100/24
# ip addr list eno33554960
3: eno33554960: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:32:ae:e2 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.100/24 scope global eno33554960
valid_lft forever preferred_lft forever

最後還有CentOS6中配置命令setup 等文字圖形界面要重啓服務,配置與window近似,不做計較。

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