當前位置:首頁 » 編程語言 » linuxc語言獲取網關

linuxc語言獲取網關

發布時間: 2023-03-14 09:44:24

A. linux中使用nmcli配置網路

    以前都是使用ifconfig來配置網路,今天開始嘗試使用nmcli 。

1、網路介面名稱

    centos7或者紅帽7中,以en開頭標識乙太網,之前的版本是eth開頭。同時,wl標識waln介面,ww標識wwan介面。

  接下里就是網卡類型, p代表pci物理位置,o代錶板載,s代表熱插拔。最後數字表示索引、id或埠。 比如筆者的虛擬機上enp0s3,pci網卡slot3。

    如果無法確定固定名稱則採用傳統的ethn的方式。

2、查看網路配置

    使用ip addr顯示ip地址,ip addr show eth0顯示網卡eth0 , ip -s link show eth0 顯示連接狀態,可用查看到數據包。netstat -i也可以羅列網卡並查看數據流量。

3、查看路由與排查

    ip route檢查系統路由表,

    ping網關地址。ping -c4是ping 4次, timeout 4則是超時時間4秒。

    tracepath或者traceroute命令追蹤到目標主機的網路狀態。

4、埠與服務

    TCP服務使用套接字.socket作為通信的端點,其由IP地址、協議和埠組成。伺服器通常監聽標准埠,客戶端使用隨機可用埠。標准埠在/etc/services中列出。

    查看監聽埠:ss和netstat命令。

  5、使用nmcli查看網路

    networkmanager是監控和管理網路的守護進程,可用通過命令行與圖形界面來與networkmanager通信,並將配置文件保存在/etc/sysconfig/network-scripts目錄中。

    使用nmcli查看網路信息:

    nmcli con show  查看網路介面

    nmcli con show --active  查看活動網路介面

    nmcli con show  "enp0s3"  查看enp0s3網路的詳情信息

    nmcli device status 查看設備的信息

    nmcli device show enp0s3  查看 enp0s3設備的信息

  6、使用nmcli配置網路

    可以為網路設備配置多個網路連接(配置文件),但是一次只能由一個保持活動狀態。

    創建一個"default"新連接,並使用dhcp獲取網路。

    nmcli con add con-name "default" type ethernet ifname eth0

    創建一個靜態連接,配置靜態IP,並設置不自動連接。

    nmcli con add con-name "static" type ethernet ifname eth0 autoconnect no ip4 172.25.0.12/24 gw4 172.25.0.254

    更改為靜態鏈接。

    nmcli con up "static"

    更改為dhcp鏈接。

    nmcli con up "default"

    查看使用信息。

    nmcli con  add  help

    修改配置,過多就不闡述了。

    nmcli con mod

    nmcli 命令摘要:

7、編輯網路配置文件

    介面配置文件時控制單個網路設備的軟體介面,網路設備可以有多個配置文件,但是只有一個時激活狀態。

ifcfg配置文件選項(輔助IP地址將配置文件中的選項添加1)

    配置過程:

a、修改 ifcfg配置文件

b、使用nmcli命令使配置生效或者重啟進程

    nmcli con reload

    nmcli con down 「ID」  ,nmcli con up 「ID」

c、通過ping驗證網路配置

8、主機名和名稱解析

    hostname 查看主機名

    hostnamectl status 查看主機信息

    hostnamectl set-hostname 設置主機名

    靜態主機名儲存在/etc/hostname文件中。名稱解析用於將主機名轉為IP地址,反之亦可,在/etc/hosts中定義。

    可用使用getent hosts your_hostname,利用/etc/hosts來測試主機名解析。

    如果/etc/hosts中沒有,則會查找/etc/ resolv.conf文件。

B. Linux下的iptable實現nat網關。(DNS,DHCP,外網,內部區域網)

本文主要介紹如何使用iptbales實現linux2.4下的強大的NAT功能。關於iptables的詳細語法請參考「用iptales實現包過慮型防火牆」一文。需要申明的是,本文絕對不是 NAT-HOWTO的簡單重復或是中文版,在整個的敘述過程中,作者都在試圖用自己的語言來表達自己的理解,自己的思想。
一、概述
1. 什麼是NAT
在傳統的標準的TCP/IP通信過程中,所有的路由器僅僅是充當一個中間人的角色,也就是通常所說的存儲轉發,路由器並不會對轉發的數據包進行修改,更為確切的說,除了將源MAC地址換成自己的MAC地址以外,路由器不會對轉發的數據包做任何修改。NAT(Network Address Translation網路地址翻譯)恰恰是出於某種特殊需要而對數據包的源ip地址、目的ip地址、源埠、目的埠進行改寫的操作。
2. 為什麼要進行NAT
我們來看看再什麼情況下我們需要做NAT。
假設有一家ISP提供園區Internet接入服務,為了方便管理,該ISP分配給園區用戶的IP地址都是偽IP,但是部分用戶要求建立自己的WWW伺服器對外發布信息,這時候我們就可以通過NAT來提供這種服務了。我們可以在防火牆的外部網卡上綁定多個合法IP地址,然後通過NAT技術使發給其中某一個IP地址的包轉發至內部某一用戶的WWW伺服器上,然後再將該內部WWW伺服器響應包偽裝成該合法IP發出的包。
再比如使用撥號上網的網吧,因為只有一個合法的IP地址,必須採用某種手段讓其他機器也可以上網,通常是採用代理伺服器的方式,但是代理伺服器,尤其是應用層代理伺服器,只能支持有限的協議,如果過了一段時間後又有新的服務出來,則只能等待代理伺服器支持該新應用的升級版本。如果採用NAT來解決這個問題,
因為是在應用層以下進行處理,NAT不但可以獲得很高的訪問速度,而且可以無縫的支持任何新的服務或應用。
還有一個方面的應用就是重定向,也就是當接收到一個包後,不是轉發這個包,而是將其重定向到系統上的某一個應用程序。最常見的應用就是和squid配合使用成為透明代理,在對http流量進行緩存的同時,可以提供對Internet的無縫訪問。
3. NAT的類型
在linux2.4的NAT-HOWTO中,作者從原理的角度將NAT分成了兩種類型,即源NAT(SNAT)和目的NAT(DNAT),顧名思義,所謂SNAT就是改變轉發數據包的源地址,所謂DNAT就是改變轉發數據包的目的地址。
二、原理
在「用iptales實現包過慮型防火牆」一文中我們說過,netfilter是Linux 核心中一個通用架構,它提供了一系列的"表"(tables),每個表由若干"鏈"(chains)組成,而每條鏈中可以有一條或數條規則(rule)組成。並且系統預設的表是"filter"。但是在使用NAT的時候,我們所使用的表不再是"filter",而是"nat"表,所以我們必須使用"-t nat"選項來顯式地指明這一點。因為系統預設的表是"filter",所以在使用filter功能時,我們沒有必要顯式的指明"-t filter"。
同filter表一樣,nat表也有三條預設的"鏈"(chains),這三條鏈也是規則的容器,它們分別是:
PREROUTING:可以在這里定義進行目的NAT的規則,因為路由器進行路由時只檢查數據包的目的ip地址,所以為了使數據包得以正確路由,我們必須在路由之前就進行目的NAT;
POSTROUTING:可以在這里定義進行源NAT的規則,系統在決定了數據包的路由以後在執行該鏈中的規則。
OUTPUT:定義對本地產生的數據包的目的NAT規則。

三、操作語法
如前所述,在使用iptables的NAT功能時,我們必須在每一條規則中使用"-t nat"顯示的指明使用nat表。然後使用以下的選項:
1. 對規則的操作
加入(append) 一個新規則到一個鏈 (-A)的最後。
在鏈內某個位置插入(insert) 一個新規則(-I),通常是插在最前面。
在鏈內某個位置替換(replace) 一條規則 (-R)。
在鏈內某個位置刪除(delete) 一條規則 (-D)。
刪除(delete) 鏈內第一條規則 (-D)。
2. 指定源地址和目的地址
通過——source/——src/-s來指定源地址(這里的/表示或者的意思,下同),通過——destination/——dst/-s來指定目的地址。可以使用以下四中方法來指定ip地址:
a. 使用完整的域名,如「www.linuxaid.com.cn」;
b. 使用ip地址,如「192.168.1.1」;
c. 用x.x.x.x/x.x.x.x指定一個網路地址,如「192.168.1.0/255.255.255.0」;
d. 用x.x.x.x/x指定一個網路地址,如「192.168.1.0/24」這里的24表明了子網掩碼的有效位數,這是 UNIX環境中通常使用的表示方法。
預設的子網掩碼數是32,也就是說指定192.168.1.1等效於192.168.1.1/32。
3. 指定網路介面
可以使用——in-interface/-i或——out-interface/-o來指定網路介面。從NAT的原理可以看出,對於PREROUTING鏈,我們只能用-i指定進來的網路介面;而對於POSTROUTING和OUTPUT我們只能用-o指定出去的網路介面。
4. 指定協議及埠
可以通過——protocol/-p選項來指定協議,如果是udp和tcp協議,還可——source-port/——sport和 ——destination-port/——dport來指明埠。
四、准備工作
1. 編譯內核,編譯時選中以下選項,具體可參看「用iptales實現包過慮型防火牆」一文:
Full NAT
MASQUERADE target support
REDIRECT target support
2. 要使用NAT表時,必須首先載入相關模塊:
modprobe ip_tables
modprobe ip_nat_ftp
iptable_nat 模塊會在運行時自動載入。
五、使用實例
1. 源NAT(SNAT)
比如,更改所有來自192.168.1.0/24的數據包的源ip地址為1.2.3.4:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT ——to 1.2.3.4
這里需要注意的是,系統在路由及過慮等處理直到數據包要被送出時才進行SNAT。
有一種SNAT的特殊情況是ip欺騙,也就是所謂的Masquerading,通常建議在使用撥號上網的時候使用,或者說在合法ip地址不固定的情況下使用。比如
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
可以看出,這時候我們沒有必要顯式的指定源ip地址等信息。
2. 目的SNAT(DNAT)
比如,更改所有來自192.168.1.0/24的數據包的目的ip地址為1.2.3.4:
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -j DNAT ——to 1.2.3.4
這里需要注意的是,系統是先進行DNAT,然後才進行路由及過慮等操作。
有一種DNAT的特殊情況是重定向,也就是所謂的Redirection,這時候就相當於將符合條件的數據包的目的ip地址改為數據包進入系統時的網路介面的ip地址。通常是在與squid配置形成透明代理時使用,假設squid的監聽埠是3128,我 們可以通過以下語句來將來自192.168.1.0/24,目的埠為80的數據包重定向到squid監聽
埠:
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.1.0/24 ——dport 80
-j REDIRECT ——to-port 3128

六、綜合例子
1. 使用撥號帶動區域網上網
小型企業、網吧等多使用撥號網路上網,通常可能使用代理,但是考慮到成本、對協議的支持等因素,建議使用ip欺騙方式帶動區域網上網。
成功升級內核後安裝iptables,然後執行以下腳本:
#載入相關模塊
modprobe ip_tables
modprobe ip_nat_ftp
#進行ip偽裝
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
2. ip映射
假設有一家ISP提供園區Internet接入服務,為了方便管理,該ISP分配給園區用戶的IP地址都是偽IP,但是部分用戶要求建立自己的WWW伺服器對外發布信息。我們可以再防火牆的外部網卡上綁定多個合法IP地址,然後通過ip映射使發給其中某一 個IP地址的包轉發至內部某一用戶的WWW伺服器上,然後再將該內部WWW伺服器響應包偽裝成該合法IP發出的包。
我們假設以下情景:
該ISP分配給A單位www伺服器的ip為:
偽ip:192.168.1.100
真實ip:202.110.123.100
該ISP分配給B單位www伺服器的ip為:
偽ip:192.168.1.200
真實ip:202.110.123.200
linux防火牆的ip地址分別為:
內網介面eth1:192.168.1.1
外網介面eth0:202.110.123.1
然後我們將分配給A、B單位的真實ip綁定到防火牆的外網介面,以root許可權執行以下命令:
ifconfig eth0 add 202.110.123.100 netmask 255.255.255.0
ifconfig eth0 add 202.110.123.200 netmask 255.255.255.0
成功升級內核後安裝iptables,然後執行以下腳本:
#載入相關模塊
modprobe ip_tables
modprobe ip_nat_ftp
首先,對防火牆接收到的目的ip為202.110.123.100和202.110.123.200的所有數據包進行目的NAT(DNAT):
iptables -A PREROUTING -i eth0 -d 202.110.123.100 -j DNAT ——to 192.168.1.100
iptables -A PREROUTING -i eth0 -d 202.110.123.200 -j DNAT ——to 192.168.1.200
其次,對防火牆接收到的源ip地址為192.168.1.100和192.168.1.200的數據包進行源NAT(SNAT):
iptables -A POSTROUTING -o eth0 -s 192.168.1.100 -j SNAT ——to 202.110.123.100
iptables -A POSTROUTING -o eth0 -s 192.168.1.200 -j SNAT ——to 202.110.123.200
這樣,所有目的ip為202.110.123.100和202.110.123.200的數據包都將分別被轉發給192.168.1.100和192.168.1.200;而所有來自192.168.1.100和192.168.1.200的數據包都將分 別被偽裝成由202.110.123.100和202.110.123.200,從而也就實現了ip映射。

C. Linux常用網路配置命令

一、查看網路配置

確保網路配置的正確性及網路連接的暢通是Linux系統作為伺服器應用的基礎,查看及測試網路配置是管理Linux網路服務的第一步。

1.ifconfig——查看網路配置

1) 查看所有活動網路介面的信息

執行 ifconfig 或ip addr或ip a命令,都可以顯示當前主機中已啟用(活動)的網路介面信息。、

2) 查看指定網路介面信息

格式:ifconfig 網路介面名

可以通過TX、RX等信息了解到通過該網路介面發送和接收的數據包個數,流量等跟多屬性。

2.hostname命令

在Linux系統中,相當一部分網路服務都會通過主機名來識別本機,如果主機名配置不當,可能會導致程序功能出現故障。

1) 查看主機名

使用hostname命令就可以查看當前主機的主機名,不添加任何選項參數。

2) 臨時更改主機名

hostname NewName

註:這種方法只是臨時的更改主機名,重啟後將失效。

3) 永久更改主機名

a. 修改配置文件

RHEL6和7的配置文件存放路徑不相同,修改配置文件中的主機名,重啟就可永久更改主機名。

RHEL6主機名配置文件路徑為:/etc/sysconfig/network

RHEL7主機名配置文件路徑為:/etc/hostname

示例

b. 使用命令修改(這種方法只適用於RHEL7或者CentOS7之後)

命令格式:

使用該命令更改後,更改後的主機名就自動寫入了配置文件中,所以可以永久更改主機名,其實就是修改了配置文件。

3.route命令

直接執行route命令可以查看當前主機中的路由表信息,若結合「-n」選項使用,可以將路由記錄中的地址顯示為數字形式,這可以跳過解析主機名的過程,在路由表條目較多的情況下能夠加快執行速度。

Destination列對應的是目標網段的地址,Gateway列對應的是嚇一跳路由器的地址,Iface列對應的是發送數據的網路介面。當目標網段為「default」是,表示此行是默認網關記錄,當嚇一跳為「*」是,表示目標網段是與本機直接相連的。

4.netstat命令——查看系統的網路連接狀態等

netstat命令是了解網路狀態及排除網路服務故障的有效工具。

常用選項:

-a:顯示所有活動連接(包括監聽、非監聽狀態的服務埠)

-n:以數字形式顯示

-p:顯示相關的進程信息

-t:查看 TCP 協議相關信息

-u:查看UDP協議相關信息

-r:顯示路由表信息

-l:顯示處於監聽(listening)狀態的網路連接及埠信息

通常使用「-anput」組合選項,結合管道使用「grep」命令,來查看一些服務的埠是否開啟。

示例:

Tcp21為ftp服務的埠

二、測試網路連接

1.ping命令——測試網路連通性

常用選項:

-c<完成次數>:設置完成要求回應的次數

-i<間隔秒數>:指定收發信息的間隔時間

-q:不顯示指令執行過程,開頭和結尾的相關信息除外

-s<數據包大小>:設置數據包的大小

-t<存活數值>:設置存活數值TTL的大小

-v:詳細顯示指令的執行過程

若返回「Destination Host Unreachable」的反饋信息,則表示目標主機不可達,可能目標地址不存在或主機已關閉;返回「Network is unreachable」的反饋信息,則表示沒有可用的路由記錄(如默認網關),無法到達目標主機所在的網路;返回「Request timeout」的反饋信息,表示與目標主機間的連接超時(數據包緩慢或丟失),若有嚴格的防火牆限制,也可能返回此信息。

2.traceroute命令——跟蹤數據包的路由途徑

使用traceroute命令可以測試從當前主機到目的主機之間經過的網路節點,並顯示各中間結點的連接狀態(響應時間)。對於無法響應的節點,連接狀態將顯示為「*」。

示例:traceroute IP_ADDR

在網路測試與排錯的過程中,通常會先使用ping命令測試與主機的網路連接,如果發現網路有故障,再使用traceroute命令跟蹤查看是在哪個中間結點存在故障。

3.nslookup命令——測試DNS域名解析

nslookup是用來測試(DNS)域名解析的專用工具。(DNS服務後面再詳細講解,通俗的說就是將域名解析為ip地址的一個服務)

示例:nslookup www..com

若成功反饋要查詢域名的IP地址,則表示域名解析沒有問題;若出現「...... no servers could be reached」的信息,表示不能連接到指定的DNS伺服器;若出現「...... cant』t find xxx.yyy.zzz:NXDOMAIN」的信息,表示要查詢的域名不存在。

三、設置網路地址參數

設置網路參數的方法:

• 臨時配置 —— 使用命令調整網路參數簡單、快速,可直接修改運行中的網路參數

一般只適合在調試網路的過程中使用

系統重啟以後,所做的修改將會失效

• 永久配置 —— 通過配置文件修改網路參數修改各項網路參數的配置文件

適合對伺服器設置固定參數時使用

需要重載網路服務或者重啟以後才會生效

1.臨時配置——使用網路配置命令(註:RHEL6中網路介面的名稱為eth,RHEL7中為ens)

1)使用ifconfig命令修改網卡的地址、狀態

ifconfig命令不僅可以用於查看網卡配置,還可以修改網卡的ip地址,子網掩碼,也可以綁定網路介面、激活或停用網路介面

a. 修改網卡的ip地址(臨時修改)

命令格式:

示例:

b. 禁用或者重新激活網卡

命令格式:

示例:

c. 設置虛擬網路介面(相當於一塊網卡配置多個IP地址)

命令格式:

示例:

可以根據需要添加更多的虛擬介面,如「eth0:1」「eth0:2」等

2)使用route命令添加、刪除靜態路由記錄

• 刪除路由表中的默認網關記錄命令格式:route del default gw IP地址

• 向路由表中添加默認網關記錄命令格式:route add default gw IP地址

• 添加到指定網段的路由記錄命令格式:route add -net 網段地址 gw IP地址

• 刪除到指定網段的路由記錄命令格式:router del -net 網段地址

2.永久配置——修改網路配置文件

1)網路介面配置文件

網路介面的配置文件默認位於目錄「/etc/sysconfig/network-scripts/」中,文件名格式為:「ifcfg-XXX」,其中「XXX」是網路介面的名稱。例如:RHEL6中網卡eth0的配置文件是「ifcfg-eth0」,而RHEL7中網卡ens33的配置文件是「ifcfg-ens33」。

在網卡的配置文件中,可以看到靜態IP地址的部分內容如下圖所示:

上述個配置項的含義及作用:(圖示為RHEL6中的配置文件,7中也差不多,換湯不換葯,修改的都差不多)

• DEVICE:設置網路介面的名稱ONBOOT:設置網路介面是否在Linux系統啟動時激活BOOTPROTO:設置網路介面的配置方式,值為static時表示使用靜態ip地址,為dhcp時表示通過dhcp的方式動態獲取ip地址IPADDR:設置網路介面的ip地址NETMASK:設置網路介面的子網掩碼GATEWAY:設置網路介面的默認網關地址2)重啟 network 網路服務

當修改了網路介面的配置文件以後,若要使新的配置生效,可以重啟network服務或者重啟主機或者禁用、啟用網路介面。

示例:

• RHEL6中重啟network服務:service network restartRHEL7中重啟network服務:systemctl restart network註:這是我在做實驗時候的一個經驗:RHEL6修改完網卡配置重啟後,ip地址仍然沒有改過來,這時候我們經常會刪除「/etc/udev/rules.d/70-persistent-net.rules」這個文件。RHEL7不用管,RHEL7特別好改,RHEL6改的時候特別難受。(個人提示,不求認同)

3)域名解析配置文件

a.指定為本機提供DNS解析的伺服器地址

/etc/resolv.conf文件中記錄了本機默認使用的DNS伺服器的地址信息,對該文件所做的修改將會立刻生效。Linux系統中最多可以指定3個(第3個以後將被忽略)不同的DNS伺服器地址,優先使用第1個DNS伺服器。

示例:

其中「search localdomain」用來設置默認的搜索域(域名後綴)。例如,當訪問主機「localhost」時,就相當於訪問「localhost.localdomain」。

b.本地主機映射文件

/etc/hosts文件中記錄著一份主機名與ip地址的映射關系表,一般用來保存經常訪問的主機信息。當訪問一個未知的域名時,先查找該文件中是否有相應的映射記錄,如果找不到在去向DNS伺服器查詢。

hosts 文件和 DNS 伺服器的比較

• 默認情況下,系統首先從 hosts 文件查找解析記錄hosts 文件只對當前的主機有效hosts 文件可減少 DNS 查詢過程,從而加快訪問速度

D. DHCP如何在linux系統shell指令獲取網關,子網掩碼和IP

好像很Nb的樣子,有時問題找不到頭緒的時候,dota兩局可能就知道結果了!你試試!

netstat -r|grep default|cut -f 10 -d ' '

熱點內容
動態規劃01背包演算法 發布:2024-11-05 22:17:40 瀏覽:849
nasm編譯器如何安裝 發布:2024-11-05 22:01:13 瀏覽:180
登錄密碼在微信的哪裡 發布:2024-11-05 22:00:29 瀏覽:739
c防止反編譯工具 發布:2024-11-05 21:56:14 瀏覽:247
安卓虛擬機怎麼用 發布:2024-11-05 21:52:48 瀏覽:344
php時間搜索 發布:2024-11-05 20:58:36 瀏覽:479
燕山大學編譯原理期末考試題 發布:2024-11-05 20:13:54 瀏覽:528
華為電腦出現臨時伺服器 發布:2024-11-05 20:05:08 瀏覽:408
斗戰神免費挖礦腳本 發布:2024-11-05 19:53:25 瀏覽:665
網吧伺服器分別是什麼 發布:2024-11-05 19:45:32 瀏覽:392