Linux網絡屬性管理

Linux網絡屬性管理

linux的網絡配置方法有多種,而且隨發行版及版本而略微不同。我目前的測試環境為CentOS6和CentOS7。

常用的網絡配置命令或方法有:ifconfig,route,netstat,ip,ss,nmcli,配置文件。

首先:命令方法介紹

一、命令簡介

ifconfig:是個比較傳統的命令,可以配置網絡接口的啟用及關閉,IP地址等等;

route:主要用于配置路由;

netstat:主要用于查看網絡狀態;

ip:是個功能更全面的命令,可以管理網絡接口以及路由,可以取代ifconfig和route命令;

ss:同netstat一樣主要用于查看網絡狀態,但能提供更多的信息;

nmcli:NetworkManager command line,功能不斷得到完善的命令,主要用于管理網絡接口,WIFI,藍牙等等。

二、詳細用法

1. ifconfig

直接輸入ifconfig或者ifconfig -a會查看所有網絡接口的信息:

開啟或關閉某個網絡接口:

[root@localhost ~]# ifconfig eno16777736 down

[root@localhost ~]# ifconfig eno16777736 up

設置IP地址:ifconfig INTERFACE IP/MASK

[root@localhost ~]# ifconfig eno16777736 192.168.1.108/24

注意:這個操作會覆蓋舊的IP;

啟用或關閉混雜模式,用于網絡監控:

ifconfig INTERFACE -promisc

ifconfig INTERFACE promisc

注意:使用ifconfig修改的內容會立即生效,但不會永久生效。

2. route 路由管理命令

直接在shell中輸入route -n 命令,會顯示所有路由信息:

[root@localhost ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0       192.168.1.1       0.0.0.0         UG    100    0    0 eno16777736

192.168.1.0     0.0.0.0         255.255.255.0     U     100    0    0 eno16777736

使用route添加主機路由:

[root@localhost ~]# route add -host 192.168.10.3 gw 192.168.1.1 dev eno16777736 

# -host:添加主機路由;gw:gatway;eno16777736:網絡接口名;

[root@localhost ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0       192.168.1.1      0.0.0.0         UG    100    0     0 eno16777736

192.168.1.0    0.0.0.0         255.255.255.0     U     100    0     0 eno16777736

192.168.10.3   192.168.1.1       255.255.255.255    UGH   0      0    0 eno16777736

# 最后一條為新加的路由;

使用route添加網絡路由:

[root@localhost ~]# route add -net 198.162.2.0/24 gw 192.168.1.33 dev eno16777736

# -net:網絡路由;198.162.2.0/24:IP/MASK;注意添加網絡路由需要附帶子網掩碼MASK;

[root@localhost ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0       192.168.1.1       0.0.0.0         UG    100  0     0 eno16777736

192.168.1.0     0.0.0.0         255.255.255.0     U     100  0     0 eno16777736

192.168.2.0     192.168.1.1      255.255.255.0     UG    0    0    0 eno16777736

# 最后一條為新加網絡路由;

添加默認路由:

[root@localhost ~]# route add default gw 192.168.1.1 dev eno16777736

# 注意使用default選項;最后應加上dev名;

刪除一條路由:

[root@localhost ~]# route del -host 192.168.1.3

刪除網絡路由,默認路由同理

注意: route命令修改的內容也是臨時有效,重啟失效。

3. netstat命令

netstat命令用于查看網絡狀態,常用選項有:

-t: 查看tcp連接

-u:查看udp連接

-n:以數字方式查看端口和IP

-a:顯示所有狀態

-l:查看處于監聽狀態的連接

常用選項組合:

[root@localhost ~]# netstat -tan  查看所有TCP連接狀態

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State      

tcp   0     0  0.0.0.0:22              0.0.0.0:*            LISTEN     

tcp   0     0  127.0.0.1:25             0.0.0.0:*            LISTEN     

tcp   0     52 192.168.1.200:22           192.168.1.108:5141      ESTABLISHED

tcp6  0     0 :::22                   :::*                LISTEN     

tcp   0     0 ::1:25                  :::*                LISTEN     

[root@localhost ~]# netstat -uan  查看所有UDP連接狀態

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State      

udp   0     0   127.0.0.1:323           0.0.0.0:*                          

udp6  0     0   ::1:323                 :::*                              

4. ip命令的使用方法:

ip [ OPTIONS ] OBJECT { COMMAND | help }

常用的OBJECT有:link,addr,route;

每個OBJECT對應不同的COMMAND;

可以對每個OBJECT查看其man手冊,也可以查看其幫助:

如:man ip link;

ip link help;

ip link常用于開啟或關閉某個網絡接口,及顯示其信息:

[root@localhost ~]# ip link set eno16777736 up

[root@localhost ~]# ip link show dev eno16777736 

2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT 

qlen 1000 link/ether 00:0c:29:df:39:4e brd ff:ff:ff:ff:ff:ff

ip addr常用于查看IP地址,增加IP地址,刪除IP地址

[root@localhost ~]# ip addr add 192.168.1.108/24 dev eno16777736

# 為eno16777736增加一個IP;

# 注意使用了ip addr下的次級命令add,add后面是IP/MASK,最后是dev+網絡接口號;

[root@localhost ~]# ip addr show dev eno16777736 

# ip addr show dev INTERFACE命令用于查看特定INTERFACE的信息;

2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:df:39:4e brd ff:ff:ff:ff:ff:ff

inet 192.168.1.105/24 brd 192.168.1.255 scope global dynamic eno16777736

valid_lft 4694sec preferred_lft 4694sec

inet 192.168.1.108/24 scope global secondary eno16777736

# 注意此條IP是新加的;

valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:fedf:394e/64 scope link 

valid_lft forever preferred_lft forever

[root@localhost ~]# ip addr del 192.168.1.108/24

# 刪除IP,后面不帶INTERFACE參數是不能刪除IP的,因為沒有操作對象;

Not enough information: "dev" argument is required.

[root@localhost ~]# ip addr del 192.168.1.108/24 dev eno16777736

# 此為刪除IP的正確操作;

[root@localhost ~]# ip addr show

# 這條命令最后不帶INTERFACE參數,默認顯示所有INTERFACE的信息;

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

link/ether 00:0c:29:df:39:4e brd ff:ff:ff:ff:ff:ff

inet 192.168.1.105/24 brd 192.168.1.255 scope global dynamic eno16777736

valid_lft 4599sec preferred_lft 4599sec

inet6 fe80::20c:29ff:fedf:394e/64 scope link 

valid_lft forever preferred_lft forever

ip route 是路由管理命令:

[root@localhost ~]# ip route add 192.168.1.109 via 192.168.1.33

# 使用格式1:ip route add 主機路由IP via 網關

[root@localhost ~]# ip route show

# 查看路由;

default via 192.168.1.33 dev eno16777736 proto static metric 100 

192.168.1.0/24 dev eno16777736 proto kernel scope link src 192.168.1.105 metric 100 

192.168.1.109 via 192.168.1.33 dev eno16777736 

# 添加網絡路由;

[root@localhost ~]# ip route add 192.168.2.0/24 via 192.168.1.33

# 刪除一條主機路由;

[root@localhost ~]# ip route delete 192.168.1.111

# 刪除一條網絡路由;

[root@localhost ~]# ip route delete 192.168.2.0/24

注意:IP命令的修改同樣也非永久有效。

5. ss 與netstat用法差不多。

   ss [OPTION]… [FILTER]

選項:

  -t: tcp協議相關

      -u: udp協議相關

  -w: 裸套接字相關

  -x:unix sock相關

  -l: listen狀態的連接

  -a: 所有

  -n: 數字格式

  -p: 相關的程序及PID

  -e: 擴展的信息

  -m:內存用量

  -o:計時器信息

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

   如:[root@localhost ~]# ss state established 'dport = :ssh or sport = :ssh'

      [root@localhost ~]# ss state established 'dport = :22 or sport = :22'

      [root@localhost ~]# ss state time-wait

6.nmcli命令:NetworkManager Command Line,此命令所做的修改會永久有效,不需要再修改配置文件。

nmcli [ OPTIONS ] OBJECT { COMMAND | help }

其中,OPTIONS不常用。

OBJECT是必須項,常用的有:

 1)、general 注意用于查看網絡狀態,主機名等

nmcli general help:查看nmcli general幫助;

[root@localhost network-scripts]# nmcli general

# 查看網絡接口狀態;

STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN 

connected full enabled enabled enabled enabled 

[root@localhost network-scripts]# nmcli g status

# general可以簡寫為g;

STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN 

connected full enabled enabled enabled enabled 

[root@localhost ~]# nmcli general hostname

# 查看主機名

localhost.localdomain

[root@localhost ~]# nmcli general hostname mylinux

# 修改主機名,注意將要修改的主機名作為參數傳遞進來;會永久生效

 2)、connection

nmcli conn help 查看幫助

nmcli conn show 顯示所有連接

[root@localhost ~]# nmcli conn modify eno16777736 ipv4.addresses 192.168.1.108/24 修改一個IP及MASK;

[root@localhost ~]# nmcli conn modify eno16777736 +ipv4.addresses 192.168.1.108/24 添加一個IP及MASK;

[root@localhost ~]# nmcli conn modify eno16777736 -ipv4.addresses 192.168.1.108/24 減去一個IP及MASK;

說明:ipv4.addresses為<setting>.<property>格式,可以man nm-settings查看所有可用組合格式。

注意:對connection所做的所有修改,均需重啟connection生效,重啟方法:

[root@localhost ~]# nmcli con down eno16777736; nmcli con up eno16777736

 3)、device 主要用于查看網絡信息

[root@mylinux ~]# nmcli device status

DEVICE TYPE STATE CONNECTION 

eno16777736 ethernet connected eno16777736 

lo loopback unmanaged — 

[root@mylinux ~]# nmcli device show

GENERAL.DEVICE: eno16777736

GENERAL.TYPE: ethernet

GENERAL.HWADDR: 00:0C:29:DF:39:4E

GENERAL.MTU: 1500

GENERAL.STATE: 100 (connected)

GENERAL.CONNECTION: eno16777736

GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/8

WIRED-PROPERTIES.CARRIER: on

IP4.ADDRESS[1]: 192.168.1.105/24

IP4.ADDRESS[2]: 192.168.1.108/24

IP4.GATEWAY: 192.168.1.33

IP4.DNS[1]: 10.64.101.209

IP4.DNS[2]: 10.64.102.209

IP6.ADDRESS[1]: fe80::20c:29ff:fedf:394e/64

IP6.GATEWAY: 

GENERAL.DEVICE: lo

GENERAL.TYPE: loopback

GENERAL.HWADDR: 00:00:00:00:00:00

GENERAL.MTU: 65536

GENERAL.STATE: 10 (unmanaged)

GENERAL.CONNECTION: —

GENERAL.CON-PATH: —

IP4.ADDRESS[1]: 127.0.0.1/8

IP4.GATEWAY: 

IP6.ADDRESS[1]: ::1/128

# 注意status和show命令顯示的信息不一樣。

 4)、networking 網絡總開關

nmcli networking on 或者 off。

Linux除了提供命令行來管理網絡接口之外,還提供了圖形界面管理網絡接口:

你可以直接在命令行中輸入命令名稱打開其操作界面。

常用的有:

nmtui

system-config-network-tui

這兩個工具就不詳細介紹了~~~

    

其次:使用配置文件方法介紹

linux下配置網絡的方法還可以通過修改配置文件和使用nmcli命令來完成:

1. 修改配置文件:

 1)、網絡接口的配置文件為:/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME

配置文件中可以修改的項有:

DEVICE: 此配置文件應用到的設備, 應于IFACE名一致

HWADDR: MAC地址

BOOTPROTO: 激活設備地址配置協議, dhcp, static, none, bootp

NM_CONTROLLED: NM是networkmanager的縮寫; 此網卡是否接受NM控制; CentOS 6上建議為no

ONBOOT: 系統引導時是否激活此設備; yes|no

TYPE: 接口類型; Ethernet, Bridge;

UUID: 設備唯一標識

IPADDR: 指明IP地址(主地址)

NETMASK: 子網掩碼

GATWAY: 默認網關

DNS1: 第一個DNS服務器地址

DNS2:

DNS3:

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

PEERDNS: 如果BOOPPROTO的值為dhcp, 是否運行dhcp服務器分配的DNS直接覆蓋配置文件的設置

2)、路由配置文件:/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME

 兩種定義方式:

1. TARGET via GW

TARGET:目標IP

GW:網關

2. 每三行定義一條路由

ADDRESS#=TARGET

NETMASK#=mask

GATEWAY#=GW

注:#為數字,表示第#組配置。

修改完成配置文件需要重啟網絡服務才能生效:service network restart。

原創文章,作者:chrony,如若轉載,請注明出處:http://www.www58058.com/16819

(0)
chronychrony
上一篇 2016-05-29
下一篇 2016-05-29

相關推薦

  • 設計模式(三)建造者模式Builder(創建型)

    1. 概述        在軟件開發的過程中,當遇到一個“復雜的對象”的創建工作,該對象由一定各個部分的子對象用一定的算法構成,由于需求的變化,復雜對象的各個部分經常面臨劇烈的變化,但將它們組合在一起的算法相對穩定。        例子1:買肯德基     &…

    Linux干貨 2015-06-25
  • 一個“蠅量級” C 語言協程庫

    協程(coroutine)顧名思義就是“協作的例程”(co-operative routines)。跟具有操作系統概念的線程不一樣,協程是在用戶空間利用程序語言的語法語義就能實現邏輯上類似多任務的編程技巧。實際上協程的概念比線程還要早,按照 Knuth 的說法“子例程是協程的特例”,一個子例程就是一次子函數調用,那么實際上協程就是類函數一樣的程序組件,你可以…

    Linux干貨 2016-08-15
  • rsyslog基于mysql的日志集中存儲,及loganalyzer日志分析工具的web配置

    Rsyslog是Linux系統自帶的一款強大的日志系統,在業務量不是很大的情況下,能夠滿足大部分客戶的日志分類搜集功能,是廣大運維同事進行系統監控、分析不可或缺的利器。而在運維自動化高速發展的今天,如果我們還要“人工”智能的去每一個服務器上查看系統日志就顯得太LOW了,并且,對我們來說也是一個不小的負擔。 基于此,我們就簡單的來介紹一下,rsyslog結合m…

    系統運維 2017-02-05
  • 推薦-LINUX磁盤管理

    Evernote Export LINUX磁盤管理 linux學習筆記 磁盤分區 文件系統 掛載 在操作系統中,磁盤管理屬于設備管理的范疇。一塊硬盤安裝到主機之后稱為裸設備,若要能夠在Linux系統中使用必須對其進行如下步驟:分區=>格式化(創建文件系統)=>掛載 LINUX系統的設備類型 Linux沿襲Unix的風格,將所有設備認成是一個文件 …

    Linux干貨 2016-04-05
  • 硬盤的讀寫原理

     硬盤的種類主要是SCSI 、IDE 、以及現在流行的SATA等;任何一種硬盤的生產都要一定的標準;隨著相應的標準的升級,硬盤生產技術也在升級;比如 SCSI標準已經經歷了SCSI-1 、SCSI-2、SCSI-3;其中目前咱們經常在服務器網站看到的 Ultral-160就是基于SCSI-3標準的;IDE 遵循的是ATA標準,而目前流行的SATA,…

    Linux干貨 2015-04-10
  • Mysql 多表聯合查詢效率分析及優化

    1. 多表連接類型 1. 笛卡爾積(交叉連接) 在MySQL中可以為CROSS JOIN或者省略CROSS即JOIN,或者使用','  如:  SELECT * FROM table1 CROSS JOIN table2  &nb…

    Linux干貨 2015-04-13
欧美性久久久久