第4章 DHCP服務

来源:http://www.cnblogs.com/f-ck-need-u/archive/2017/08/09/7324199.html
-Advertisement-
Play Games

DHCP前身是BOOTP,在Linux的網卡配置中也能看到顯示的是BOOTP,DHCP引進一個bootp沒有的概念:租約。bootp分配的地址是永久的,而dhcp分配的地址是可以有期限的。 DHCP可以自動分配IP、子網掩碼、網關、DNS。 DHCP客戶端使用的埠68,服務端使用埠67,使用的U ...


 

DHCP前身是BOOTP,在Linux的網卡配置中也能看到顯示的是BOOTP,DHCP引進一個bootp沒有的概念:租約。bootp分配的地址是永久的,而dhcp分配的地址是可以有期限的。

[root@xuexi vsftpd]# grep -i bootproto /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=dhcp

DHCP可以自動分配IP、子網掩碼、網關、DNS。

DHCP客戶端使用的埠68,服務端使用埠67,使用的UDP應用層的協議。

DHCP一般不為伺服器分配IP,因為他們要使用固定IP,所以DHCP一般只為辦公環境的主機分配IP。

DHCP伺服器和客戶端需要在一個區域網內,在為客戶端分配IP的時候需要進行多次廣播。但DHCP也可以為其他網段內主機分配IP,只要連接兩個網段中間的路由器能轉發DHCP配置請求即可,但這要求路由器配置中繼功能。

    

 DHCP客戶端請求過程(4步請求過程)

    1)搜索階段:客戶端廣播方式發送報文,搜索DHCP伺服器。此時網段內所有機器都收到報文,只有DHCP伺服器返回消息。

    2)提供階段:眾多DHCP伺服器返回報文信息,並從地址池找一個IP提供給客戶端。因為此時客戶端還沒有IP,所以返回信息也是以廣播的方式返回的。

    3)選擇階段:選擇一個DHCP伺服器,使用它提供的IP。然後發送廣播包,告訴眾多DHCP伺服器,其已經選好DHCP伺服器以及IP地址。此後沒有入選的DHCP就可以將原本想分配的IP分配給其他主機。

客戶端選擇第一個接收到的IP。誰的IP先到客戶端的速度是不可控的。但是如果在配置文件里開啟了authoritative選項則表示該伺服器是權威伺服器,其他DHCP伺服器將失效,如果多台伺服器都配置了這個權威選項,則還是競爭機制;通過MAC地址給客戶端配置固定IP也會優先於普通的動態DHCP分配。另外Windows的DHCP服務端回應Windows客戶端比Linux更快。

    4)確認階段:DHCP伺服器收到回應,向客戶端發送一個包含IP的數據包,確認租約,並指定租約時長。

如果DHCP伺服器要跨網段提供服務,一樣是四步請求,只不過是每一步中間都多了一個路由器和DHCP伺服器之間的單播通信。

1) 客戶端廣播方式發送報文,搜索DHCP伺服器。所有機器包括路由器都收到報文,路由器配置了中繼,知道搜索消息後單播給DHCP伺服器;2)DHCP伺服器單播返回信息給路由器,路由器再廣播給客戶端;3)客戶端選擇DHCP伺服器提供的IP,並廣播信息告訴它我選好了,路由器單播給DHCP伺服器;4)DHCP伺服器收到信息將確認信息單播給路由器,路由器單播給客戶端。

所以DHCP的4步請求:

Client--> DHCPDISCOVER             # 廣播:客戶端發現DHCP伺服器
          DHCPOFFER <-- Server     # 廣播:服務端提供IP給客戶端
Client
--> DCHPREQUEST # 廣播:客戶端請求使用提供的IP DCHPACK <-- Server # 單播:服務端進行確認,訂立租約等信息

續租的過程:

Client--> DHCPREQUEST              # 單播:繼續請求使用提供的IP
          DHCPACK <-- Server       # 單播:確認續租

DHCP伺服器不跨網段提供服務時,它自己的IP地址必須要和地址池中全部IP在同一網路中。

DHCP伺服器跨網段提供服務時,它自己的IP地址必須要和地址池中的一部分IP在同一網路中,另一部分提供給其他網段。因為如果自己的IP完全不在自己的網路中而只提供其他網段的IP,更好的做法是將DHCP伺服器設在那個需要DHCP服務的網路中。

 當電腦從一個子網移到另一個子網,找的DHCP伺服器不同,因為舊的租約還存在,會先續租,新的DHCP伺服器肯定拒絕它的續租請求,這時將重新開始四步請求。

有些機器希望一直使用一個固定的IP,也就是靜態IP,除了手動進行配置,DHCP伺服器也可以實現這個功能。DHCP伺服器可以根據MAC地址來分配這台機器固定IP地址(保留地址),即使重啟或重裝了系統也不會改變根據MAC地址分配的地址。

假如在一個正常聯網有DHCP伺服器的網段內因為做實驗練習的緣故新建立了一臺DHCP伺服器,但是這台DHCP伺服器不能上網,會導致什麼後果?使用DHCP分配地址的客戶端至少會有續租的請求,如果沒有續租成功,或者有新的電腦加入這個網路,那麼進行四步請求,有可能會請求到這個不能連網的DHCP伺服器上,那麼他也就不能上網了。特別是Windows的DHCP服務端回應Windows客戶端速度比Linux回應快。

安裝和配置DHCP服務

[root@xuexi ~]# yum -y install dhcp

[root@xuexi ~]# rpm -ql dhcp
/etc/dhcp/dhcpd.conf    # DHCP配置文件
/etc/sysconfig/dhcpd
/usr/sbin/dhcpd         # DHCP服務程式
/usr/sbin/dhcrelay      # 中繼命令程式,用於跨網段提供DHCP服務
/var/lib/dhcpd/dhcpd.leases    # 存放租借信息(如IP)和租約信息(如租約時長)
/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample # 配置文件的範例文件

可以將dhcpd.conf.sample複製到/etc/。

[root@xuexi ~]# cp /usr/share/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcpd.conf 

以下是dhcpd.conf中部分配置項。

# 每行分號結束
ddns-update-style none;      # 動態dns相關,幾乎不開啟它。也就是不管它。
ignore client-updates;       # 和上面的相關,也不管它
authoritative                # 聲明為權威伺服器
next-server marvin.redhat.com; # PXE環境下指定的提供引導程式的文件伺服器
# DHCP配置文件里必須配置一個地址池,其和DHCP伺服器自身IP在同一網段
subnet 10.5.5.0 netmask 255.255.255.224 {
  range 10.5.5.26 10.5.5.30;             # 地址池
  option domain-name-servers ns1.internal.example.org;     # 為客戶端指明DNS伺服器地址,可以是多個,最多三個
  option domain-name "internal.example.org";               # 為客戶端指明DNS名字,定義了它會覆蓋客戶端/etc/resolv.conf里的配置
  option routers 10.5.5.1;               # 預設路由,其實就是網關
  option broadcast-address 10.5.5.31;    # 廣播地址,不設置時預設會根據A/B/C類地址自動計算
  default-lease-time 600;                # 預設租約時長
  max-lease-time 7200;                   # 最大租約時長
}
#下麵的是綁定MAC地址設置保留地址,保留地址不能是地址池中的地址 host fantasia { # 固定地址的配置,host後面的是標識符,沒意義
hardware ethernet 08:00:07:26:c0:a5; fixed-address 192.168.100.3; # 根據MAC地址分配的固定IP }

如果不讓dhcp修改/etc/resolv.conf里的內容,就在網卡配置文件/etc/sysconfig/network-scripts/ifcfg-ethX里添加一行選項:PEERDNS=no。

 

在客戶端如何獲取動態分配的地址呢?

方法一:service network restart

但是每次重啟網路很麻煩,可以使用客戶端命令dhclient。

方法二:直接執行dhclient命令

這種方法下會顯示4部請求中需要顯示的步驟信息,以及最終分配的地址,所以是一個很好的理解dhcp工作的工具。

但是這種方法只能使用一次,第二次執行命令會提示該進程已經在執行,因為dhclient是一個進程。可以kill掉該進程再執行dhclient,或者使用dhclient -d選項。

方法三:dhclient -d

 如何重新獲取IP地址

 

1.1 如何重新獲取ip

每次重啟網卡預設都獲取的同一個ip,有時候想換個ip都很麻煩。在/var/lib/dhclient/目錄下有".leases"文件,將它們清空或者刪除這些文件中對應網卡的部分,再重啟網路就可以獲取新的動態ip。

[root@xuexi ~]# cat /var/lib/dhclient/dhclient-eth0.leases 
lease {
  interface "eth0";
  fixed-address 192.168.100.16;
  option subnet-mask 255.255.255.0;
  option routers 192.168.100.2;
  option dhcp-lease-time 1800;
  option dhcp-message-type 5;
  option domain-name-servers 192.168.100.2;
  option dhcp-server-identifier 192.168.100.254;
  option broadcast-address 192.168.100.255;
  option domain-name "localdomain";
  renew 3 2017/02/15 12:28:27;
  rebind 3 2017/02/15 12:42:39;
  expire 3 2017/02/15 12:46:24;
}

或者,在/etc/sysconfig/network-scripts/ifcfg-eth0加入"DHCPRELEASE=yes"。

當運行ifdown eth0的時候就會發出dhcprelase報文,查看/etc/sysconfig/network-scripts/ifdown-eth腳本中實際上是調用dhclient命令,用下麵這個命令應該也可以。

/sbin/dhclient -r eth0

回到系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7048359.html

轉載請註明出處:http://www.cnblogs.com/f-ck-need-u/p/7324199.html

註:若您覺得這篇文章還不錯請點擊下右下角的推薦,有了您的支持才能激發作者更大的寫作熱情,非常感謝!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • IP地址:4段十進位,共32位二進位,如:192.168.1.1 二進位就是:11000000|10101000|00000001|00000001 子網掩碼可以看出有多少位是網路號,有多少位是主機號: 255.255.255.0 二進位是:11111111 11111111 11111111 00 ...
  • 一.系統管理與維護 1. pwd:print working directory 列印工作目錄 2. cd: change directory 改變或進入路徑 ● cd ~/ cd : 當前用戶目錄;回到主目錄(中間有空格!) ● cd /:根目錄; ● cd - :上一次訪問的目錄; ● cd .... ...
  • 原文發表於cu:2016-05-05 參考文檔: 一.環境 Server:CentOS-7-x86_64-1511 Client:Win7 x86_64, Chrome/Firefox瀏覽器 二.準備 1. iptables CentOS7預設自帶firewall,無iptables。 2. SEL ...
  • 如果你的伺服器的總是報告記憶體不足,並且時常因為記憶體不足而引發服務被強制kill的話,在不增加物理記憶體的情況下,啟用swap交換區作為虛擬記憶體是一個不錯的選擇,如果是SSD硬碟,正常讀寫速度都在300MB/s以上,啟用swap後性能提高了不少,特別是在處理消耗大記憶體的腳本方面。 ...
  • 0x00. Command Notation[Name] The name of the command.[Format] The code sequence. [ ]k indicates the contents of the [ ] s... ...
  • 聲明:本文為轉載的文章;並非由本人創作;發博文只是為了整理、記錄。 推薦的比較完全,比較清晰的文章(含圖):http://blog.csdn.net/sunny04/article/details/40627311 轉載時請註明出處和作者聯繫方式:http://blog.csdn.net/absur ...
  • 本文目錄: 1.8.1 匿名管道"|" 1.8.2 重定向 1.8.2.1 重定向基礎 1.8.2.2 cat和重定向配合 1.8.2.3 tee雙重定向 1.8.2.4 <<和<<< 1.8.1 匿名管道"|" 管道符號意如其名,類似管道一樣將管道入口的數據通過管道傳遞給管道出口。 管道是為瞭解決 ...
  • 由於業務的關係我們用的是阿裡雲的ECS主機,需要對業務進程需要監控,查看後發現阿裡雲提供自定義監控SDK,這有助於我們定製化的根據自身業務來做監控,下麵我就根據業務需求來介紹一個簡單的自定義監控配置 備註:我用的shell腳本用來部署的 業務需求:我們需要監控ECS伺服器中某個進程是否存在,如果小於 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...