linux ip地址 與路由


靜態設置ip

vi /etc/network/interfaces  ubuntu

 

1. 以DHCP方式配置網卡

編輯配置文件/etc/network/interfaces,修改相應網卡的配置:

auto eth0
iface eth0 inet dhcp
2. 為網卡配置靜態IP地址

auto eth0
iface eth0 inet static
address 192.168.3.90
gateway 192.168.3.1
netmask 255.255.255.0
#network 192.168.3.0
#broadcast 192.168.3.255

 

 

 

 

有關於centos7獲取IP地址的方法主要有兩種,1:動態獲取ip;2:設置靜態IP地址

在配置網絡之前我們先要知道centos的網卡名稱是什么,centos7不再使用ifconfig命令,可通過命令 IP addr查看,如圖,網卡名為ens32,是沒有IP地址的

1、動態獲取ip(前提是你的路由器已經開啟了DHCP)

修改網卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens32    (最后一個為網卡名稱)

動態獲取IP地址需要修改兩處地方即可

(1)bootproto=dhcp

(2)onboot=yes

 

systemctl restart network

 

 

2、配置靜態IP地址

設置靜態IP地址與動態iIP差不多,也是要修改網卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens32    (最后一個為網卡名稱)

(1)bootproto=static

(2)onboot=yes

(3)在最后加上幾行,IP地址、子網掩碼、網關、dns服務器

 

IPADDR=192.168.1.160 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=119.29.29.29 DNS2=8.8.8.8








參考:

 

 

 

 獲取mac地址:

cat  /sys/class/net/enso/address 

 

 

 

net-tools  iproute2 比較

 

 

一、ip addr命令
我是使用的linux系統是redhat7.3,其它linux的相關操作大同小異(在這里不做贅述)

1.查看

(1). ip addr 的縮寫是ip a ,可以查看網卡的ip、mac等,

即使網卡處於down狀態,也能顯示出網卡狀態,但是ifconfig查看就看不到。

(2).ip addr show device 查看指定網卡的信息

比如查看網卡接口的信息,就是ip addr show eth0


2.增加ip

ip addr add ip/netmask dev 接口

比如給eth0增加一個172.25.21.1/24 地址

ip addr add 172.25.21.1/24 dev eth0

3.刪除ip

ip addr del ip/netmask dev 接口

4.清空指定網卡的所有ip

ip addr flush dev 接口

5. 給網卡起別名,起別名相當於給網卡多綁定了一個ip

用法: 比如給網卡eth0增加別名

ip addr add 172.25.21.1/32 dev eth0 label eth0:1

6.刪除別名

ip addr del ip/netmask dev eth0

注意:

使用命令的方式設置別名,重啟服務就沒了,若要永久生效

需要寫配置文件,步驟如下:

1、確保NetworkManager服務是停止的

systemctl stop NetworkManager 關閉該服務

systemctl disable NetworkManager 開機不自啟動

注意:

使用命令的方式增加或者刪除ip,都是臨時的,

如果重啟network服務,那么操作就失效了。

想要永久生效可以修改配置文件ifcfg-eth0

二、ip link 命令
1.查看

ip link只能看鏈路層的狀態,看不到ip地址

2.啟用、禁用接口

ip link set device down 禁用指定接口

ip link set device up 啟用指定接口

比如禁用eth0就是ip link set eth0 down

說明:

ip link不支持tab鍵補齊

 

 

 

如今很多系統管理員依然通過組合使用諸如ifconfig、route、arp和netstat等命令行工具(統稱為net-tools)來配置網絡功能,解決網絡故障。net-tools起源於BSD的TCP/IP工具箱,后來成為老版本Linux內核中配置網絡功能的工具。但自2001年起,Linux社區已經對其停止維護。同時,一些Linux發行版比如Arch Linux和CentOS/RHEL 7則已經完全拋棄了net-tools,只支持iproute2。

作為網絡配置工具的一份子,iproute2的出現旨在從功能上取代net-tools。net-tools通過procfs(/proc)和ioctl系統調用去訪問和改變內核網絡配置,而iproute2則通過netlink套接字接口與內核通訊。拋開性能而言,iproute2的用戶接口比net-tools顯得更加直觀。比如,各種網絡資源(如link、IP地址、路由和隧道等)均使用合適的對象抽象去定義,使得用戶可使用一致的語法去管理不同的對象。更重要的是,到目前為止,iproute2仍處在持續開發中。

如果你仍在使用net-tools,而且尤其需要跟上新版Linux內核中的最新最重要的網絡特性的話,那么是時候轉到iproute2的陣營了。原因就在於使用iproute2可以做很多net-tools無法做到的事情。

對於那些想要轉到使用iproute2的用戶,有必要了解下面有關net-tools和iproute2的眾多對比。

 

顯示所有已連接的網絡接口

下面的命令顯示出所有可用網絡接口的列表(無論接口是否激活)。

使用net-tools:

  1. $ ifconfig -a

使用iproute2:

  1. $ ip link show

激活或停用網絡接口

使用這些命令來激活或停用某個指定的網絡接口。

使用net-tools:

  1. $ sudo ifconfig eth1 up
  2. $ sudo ifconfig eth1 down

使用iproute2:

  1. $ sudo ip link set down eth1
  2. $ sudo ip link set up eth1

為網絡接口分配IPv4地址

使用這些命令配置網絡接口的IPv4地址。

使用net-tools:

  1. $ sudo ifconfig eth1 10.0.0.1/24

使用iproute2:

  1. $ sudo ip addr add 10.0.0.1/24 dev eth1

值得注意的是,可以使用iproute2給同一個接口分配多個IP地址,ifconfig則無法這么做。使用ifconfig的變通方案是使用IP別名

  1. $ sudo ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev eth1
  2. $ sudo ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev eth1
  3. $ sudo ip addr add 10.0.0.3/24 broadcast 10.0.0.255 dev eth1

移除網絡接口的IPv4地址

就IP地址的移除而言,除了給接口分配全0地址外,net-tools沒有提供任何合適的方法來移除網絡接口的IPv4地址。相反,iproute2則能很好地完全。

使用net-tools:

  1. $ sudo ifconfig eth1 0

使用iproute2:

  1. $ sudo ip addr del 10.0.0.1/24 dev eth1

顯示網絡接口的IPv4地址

按照如下操作可查看某個指定網絡接口的IPv4地址。

使用net-tools:

  1. $ ifconfig eth1

使用iproute2:

  1. $ ip addr show dev eth1

同樣,如果接口分配了多個IP地址,iproute2會顯示出所有地址,而net-tools只能顯示一個IP地址。

 

 

為網絡接口分配IPv6地址

使用這些命令為網絡接口添加IPv6地址。net-tools和iproute2都允許用戶為一個接口添加多個IPv6地址。

使用net-tools:

  1. $ sudo ifconfig eth1 inet6 add 2002:0db5:0:f102::1/64
  2. $ sudo ifconfig eth1 inet6 add 2003:0db5:0:f102::1/64

使用iproute2:

  1. $ sudo ip -6 addr add 2002:0db5:0:f102::1/64 dev eth1
  2. $ sudo ip -6 addr add 2003:0db5:0:f102::1/64 dev eth1

顯示網絡接口的IPv6地址

按照如下操作可顯示某個指定網絡接口的IPv6地址。net-tools和iproute2都可以顯示出所有已分配的IPv6地址。

使用net-tools:

  1. $ ifconfig eth1

使用iproute2:

  1. $ ip -6 addr show dev eth1

移除網絡設備的IPv6地址

使用這些命令可移除接口中不必要的IPv6地址。

使用net-tools:

  1. $ sudo ifconfig eth1 inet6 del 2002:0db5:0:f102::1/64

使用iproute2:

  1. $ sudo ip -6 addr del 2002:0db5:0:f102::1/64 dev eth1

改變網絡接口的MAC地址

使用下面的命令可篡改網絡接口的MAC地址,請注意在更改MAC地址前,需要停用接口。

使用net-tools:

  1. $ sudo ifconfig eth1 hw ether 08:00:27:75:2a:66

使用iproute2:

  1. $ sudo ip link set dev eth1 address 08:00:27:75:2a:67

查看IP路由表

net-tools中有兩個選擇來顯示內核的IP路由表:route和netstat。在iproute2中,使用命令ip route。

使用net-tools:

  1. $ route -n

  1. $ netstat -rn

使用iproute2:

  1. $ ip route show

 

 

添加和修改默認路由

這里的命令用來添加或修改內核IP路由表中的默認路由規則。請注意在net-tools中可通過添加新的默認路由、刪除舊的默認路由來實現修改默認路由。在iproute2使用ip route命令來代替。

使用net-tools:

  1. $ sudo route add default gw 192.168.1.2 eth0
  2. $ sudo route del default gw 192.168.1.1 eth0

使用iproute2:

  1. $ sudo ip route add default via 192.168.1.2 dev eth0
  2. $ sudo ip route replace default via 192.168.1.2 dev eth0

添加和移除靜態路由

使用下面命令添加或移除一個靜態路由。

使用net-tools:

  1. $ sudo route add -net 172.16.32.0/24 gw 192.168.1.1 dev eth0
  2. $ sudo route del -net 172.16.32.0/24

使用iproute2:

  1. $ sudo ip route add 172.16.32.0/24 via 192.168.1.1 dev eth0
  2. $ sudo ip route del 172.16.32.0/24

查看套接字統計信息

這里的命令用來查看套接字統計信息(比如活躍或監聽狀態的TCP/UDP套接字)。

使用net-tools:

  1. $ netstat
  2. $ netstat -l

使用iproute2:

  1. $ ss
  2. $ ss -l

 

 

查看ARP表

使用這些命令顯示內核的ARP表。

使用net-tools:

  1. $ arp -an

使用iproute2:

  1. $ ip neigh

 

 

添加或刪除靜態ARP項

按照如下操作在本地ARP表中添加或刪除一個靜態ARP項

使用net-tools:

  1. $ sudo arp -s 192.168.1.100 00:0c:29:c0:5a:ef
  2. $ sudo arp -d 192.168.1.100

使用iproute2:

  1. $ sudo ip neigh add 192.168.1.100 lladdr 00:0c:29:c0:5a:ef dev eth0
  2. $ sudo ip neigh del 192.168.1.100 dev eth0

添加、刪除或查看多播地址

使用下面的命令配置或查看網絡接口上的多播地址。

使用net-tools:

  1. $ sudo ipmaddr add 33:44:00:00:00:01 dev eth0
  2. $ sudo ipmaddr del 33:44:00:00:00:01 dev eth0
  3. $ ipmaddr show dev eth0
  4. $ netstat -g

使用iproute2:

  1. $ sudo ip maddr add 33:44:00:00:00:01 dev eth0
  2. $ sudo ip maddr del 33:44:00:00:00:01 dev eth0
  3. $ ip maddr list dev eth0

 

 

 

 

 ip route add default via 192.168.1.2 dev eth0

ip addr add 10.0.0.1/24 dev eth1

ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev eth1

 

 

 

 虛擬網卡與物理網卡:

 

查看全部網卡

目錄 /sys/class/net/

[root@localhost ~]# ls /sys/class/net/
br-df65b94a220f docker0 enp0s31f6 lo veth1706661 veth2566f96 veth7c083c7 vethd4a4beb vethfa8ecf9 vethfd44a20 wlp1s0


查看虛擬網卡

目錄 /sys/devices/virtual/net/

[root@localhost ~]# ls /sys/devices/virtual/net/
br-df65b94a220f docker0 lo veth1706661 veth2566f96 veth7c083c7 vethd4a4beb vethfa8ecf9 vethfd44a20


查看物理網卡

[root@localhost ~]# ls /sys/class/net/ | grep -v "`ls /sys/devices/virtual/net/`"
enp0s31f6
wlp1s0


 

路由:

來自:https://blog.csdn.net/weixin_38045214/article/details/120127711

1、查看路由
ip route
1
route -n
1

 

 

1、第一條為默認路由(一種特殊的靜態路由)Flags為UG,下一跳192.168.116.1
2、第二條為直連路由
3、第三條為主機路由
4、第四條為手動配置的靜態路由
5、Destination:目的ip
5、Gateway:下一跳網關
5、Genmask:掩碼
6、Flags:路由類型
7:Metric:管理距離,數值越小優先級越高

 

2、添加默認路由(一種特殊的靜態路由),下一跳192.168.116.1,metric 為1

 

ip route add default via 192.168.116.1 metric 1
1
等價於

ip route add 0.0.0.0/0 via 192.168.116.1 metric 1
1
3、添加靜態路由 192.168.208.0 網段的流量下一跳 192.168.116.1 metric 1
ip route add 192.168.208.0/24 proto static via 192.168.116.1 metric 1
1
4、添加直連路由,出接口ip為192.168.116.108
配置網口時會自動生成直連路由,一般情況不需要手動配置
1
ip route add 192.168.116.0/24 proto kernel src 192.168.116.108
1
5、添加主機路由,出接口ip為192.168.116.108,網卡名為eth0
linux一般不需要配置主機路由
1
ip route add 192.168.116.108/32 dev eth0
1
6、刪除默認路由
ip route del default
1
7、清空路由表
ip route flush all
1
8、修改路由 192.168.116.0/24 網段的下一跳為 192.168.117.97
ip route replace 192.168.116.0/24 via 192.168.117.97
1
9、多鏈路負載均衡 192.168.208.0/24 網段通過下一跳網關 192.168.116.1和192.168.117.1 形成負載均衡,metric 為 2
可以把負載均衡的看成一條路由,通過 weigh t指定下一跳的權重。
配置 weigh t需要根據出接口的速率來配置比例。
此時 route-n 命令是看不全的,通過 ip route 命令查看路由表。
1
2
3
ip route add 192.168.208.0/24 metric 2 nexthop via 192.168.116.1 weight 1 nexthop via 192.168.117.1 weight 2
1
10、通過具體 ip 192.168.208.88 查看路由包從哪來
ip route get 192.168.208.88
1
11、報錯:Network is unreachable
1、下一跳不可達,檢查是否能ping通下一跳網關
2、檢查是否有直連路由

 https://www.cnblogs.com/wanpengcoder/p/3595313.html

1.動態路由/靜態路由

動態路由

路由選擇器自動共享路由信息

自動構造路由表,需要一個路由協議,如RIP或OSPF

靜態路由

路由選擇器不共享路由信息(單方向路由)

手工構造路由表

2.直連路由/網關路由(間接路由)

其區別在於,發往直連路由的設備中不但具有指明目的端的I P地址,還具有其mac地址。

當報文被發往一個間接路由時,I P地址指明的是最終的目的地,但是mac地址指明的是網關(即下一跳路由器)。

 

3.主機路由/網絡路由

直連路由和網關路由是由下一跳區分的,而主機路由和網絡路由是由目的地址的完整度區分的;

主機路由的目的地址是一個完整的主機地址。網絡路由目的地址是一個網絡地址(主機號部分為0)。

當為某個目的I P地址搜索路由表時,主機地址項必須與目的地址完全匹配,

而網絡地址項只需要匹配目的地址的網絡號和子網號就可以了。

理解上述兩組路由概念間的區別是很重要。


4.默認路由(缺省路由)

這個路由將匹配所有的包. 能幫助減少路由條目

配置一條默認靜態路由和靜態路由相似,但IP地址和子網掩碼全部是零

例如:ip route 0.0.0.0 0.0.0.0 [網關ip或接口]

子網掩碼 0.0.0.0 代表匹配所有網絡

 

 

 對於一個給定的路由器,可以打印出五種不同的標志( f l a g):
U 該路由可以使用;
G 該路由是到一個網關(路由器)。如果沒有設置該標志,說明目的地是直接相連的;
H 該路由是到一個主機,也就是說,目的地址是一個完整的主機地址。如果沒有設置該
標志,說明該路由是到一個網絡,而目的地址是一個網絡地址:一個網絡號,或者網
絡號與子網號的組合;
D 該路由是由重定向報文創建的;
M 該路由已被重定向報文修改;

 

 

 

 

 

 網卡 down

ifup devname

ifconfig devname up

ifconfig devname down

 

 

不使用 ifup  ifdown 就用ip

ip link set devname up 

ip link set devname down 

ip route add default via 192.168.16.2

 

參考:

https://www.cnblogs.com/yhongji/p/9336247.html

https://linux.cn/article-4326-1.html

https://blog.csdn.net/whatday/article/details/106054064

 https://blog.csdn.net/weixin_38045214/article/details/120127711


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM