linux添加源地址ping,實戰經驗:Linux Source NAT在Ping場景下的應用

原標題:實戰經驗:Linux Source NAT在Ping場景下的應用

有時候,有這樣的一種需求:

需要修改IP數據包中的源地址,比如,從某一個主機發送Ping包到另一個主機,需要修改源地址為另一個源(通常,發出Ping請求的主機有多個網卡地址)。

為了解決這一需求,Linux下的netfilter組件中有個Source NAT的功能,可以修改IP數據包中的源地址。

此功能實際上是通過iptables在POSTROUTING鏈中添加一條規則,此規則在數據包被最終發送出去之前被應用。下面是一個實例:

主機A網絡配置:

eth0: 192.168.10.10

eth1: 172.18.10.10

主機B:

eth0: 192.168.10.1

1) 第一張場景

從A發送Ping請求到B:

# ping 192.168.10.1

通過WireShark抓包可以知道,Ping包中的源地址為192.168.10.10(默認Ping請求從eth0出來),目的地址是192.168.10.1。

2) 第二種場景

從A發送Ping請求到B,并使用-I選項:

# ping 192.168.10.1 -I 172.18.10.10

在此場景下,這里指定了-I選項,表明指定源地址為172.18.10.10。

所以,Ping請求包中的源地址變為172.18.10.10,目的地址不變,依然為192.168.10.1。

問題來了:怎樣在第二種場景中(在指定-I選項的情況下)將源地址修改為192.168.10.10?

解決方法:添加Source NAT規則。具體步驟如下:

添加規則:

# iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to 192.168.10.10

添加完上述規則后,再次執行ping 192.168.10.1 -I 172.18.10.10,可以通過抓包發現Ping請求中的源地址已經由172.18.10.10修改為192.168.10.10。

備注:

如果想刪除上面添加的Source NAT規則,可以執行如下指令刪除:

刪除規則:

# iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to 192.168.10.10

查看規則:

# iptables -nvL -t nat

參考資料:

以下內容來自netfilter官網幫助文檔,也記錄在這里留作參考:

1) Source NAT

You want to do Source NAT; change the source address of connections to something different. This is done in the POSTROUTING chain, just before it is finally sent out; this is an important detail, since it means that anything else on the Linux box itself (routing, packet filtering) will see the packet unchanged. It also means that the `-o’ (outgoing interface) option can be used.

Source NAT is specified using `-j SNAT’, and the `–to-source’ option specifies an IP address, a range of IP addresses, and an optional port or range of ports (for UDP and TCP protocols only).

16128228ec52befb199dade688b7a955.png

Masquerading

There is a specialized case of Source NAT called masquerading: it should only be used for dynamically-assigned IP addresses, such as standard dialups (for static IP addresses, use SNAT above).

You don’t need to put in the source address explicitly with masquerading: it will use the source address of the interface the packet is going out from. But more importantly, if the link goes down, the connections (which are now lost anyway) are forgotten, meaning fewer glitches when connection comes back up with a new IP address.

8facb4f40c290015f70574c0a097af4e.png

2) Destination NAT

This is done in the PREROUTING chain, just as the packet comes in; this means that anything else on the Linux box itself (routing, packet filtering) will see the packet going to its `real’ destination. It also means that the `-i’ (incoming interface) option can be used.

Destination NAT is specified using `-j DNAT’, and the `–to-destination’ option specifies an IP address, a range of IP addresses, and an optional port or range of ports (for UDP and TCP protocols only).

07755f55e2ece4cf483565b843d6099c.png

Redirection

There is a specialized case of Destination NAT called redirection: it is a simple convenience which is exactly equivalent to doing DNAT to the address of the incoming interface.

723a882b22422ae1aa52e2c6e2480ee5.png

Note that squid needs to be configured to know it’s a transparent proxy!返回搜狐,查看更多

責任編輯:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529653.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529653.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529653.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mac遠程linux的ide,Jupyter notebook在mac:linux上的配置和遠程訪問

IPython 和 JupyterIPython 通常指的是一個 Python REPL(交互式解釋器) shell。提供了遠比 Python shell 強大的 shell 環境。IPython 是 Iteractive Python shell的縮寫。 Notebook 是一個基于 IPython 的 web 應用。截止 IPython 3.0 ,IPython 變得越來越臃腫&…

Linux升級glibc版本漢字亂碼,Linux CentOS6升級glibc庫過程

CentOS6升級glibc庫過程hadoop無法加載native庫,可能原因是 glibc庫版本過低,需要升級。第一:安裝以下軟件yum -y install zlib zlib-devel gcc gcc-c libtool openssl openssl-devel automake autoconf libtool pcre*第二、查看系統glibc版本…

linux圖形界面 革命,Windows 95帶來的革命

CDECDE1993年6月-在“公用桌面環境“是與Sun,惠普,IBM和合資Unix系統實驗室。CDE,通用桌面環境(CommonDesktopEnvironment)的縮寫。CDE是一種運行于UNIX,基于Motif部件工具箱開發的商業桌面環境。惠普的OpenVMS采用CDE作為標準的桌…

real time linux pdf,【整理】ubuntu real time Linux

ubuntu real timeUbuntu不支持實時可參考看看如何才能支持想要自己編譯實時內核的話參考去:下載:The Real Time Preempt Patch然后自己編譯即可。對于實時系統所支持的功能和特性以及平臺,詳見這里提供了 已編譯好的實時的Debian相關內容或參…

arm64 linux 除零正常返回,arm64程序調用規則

前言這篇主要介紹arm64程序調用規則,詳細分析了程序調用過程中,參數是如何傳遞的。Android、iOS、Linux等基本遵循這些規則,但是各個操作系統平臺也有小部分自己特定的規則。下一篇,我將介紹iOS平臺的特定規則。術語介紹術語意義A…

蘋方字體 for linux,蘋果蘋方字體

蘋果蘋方字體是一款很實用的字體軟件,蘋果蘋方字體是為中國蘋果用戶打造的全新字體,共有六種字重,使用方便,能夠滿足用戶在閱讀時不同的字體需求,并且蘋果蘋方字體還可以在安卓、Linux 等其他平臺和設備上使用&#xf…

linux系統關機half,Linux 學習 (六) 關機與重啟命令

JavaScript基礎 DOM的操作1.DOM的基本概念 DOM是文檔對象模型,這種模型為樹模型:文檔是指標簽文檔:對象是指文檔中每個元素:模型是指抽象化的東西. 2.Windows對象操作 一.屬性和方法: window對象——瀏覽器 ...推薦《HeadFirst設計模式》相對于國內初版的,HeadFirst真的是更好的…

職坐標c語言,C/C++知識點之hexdump的C語言實現

本文主要向大家介紹了C/C知識點之hexdump的C語言實現,通過具體的內容向大家展示,希望對大家學習C/C知識點有所幫助。1 void hexdump(char *buf, int len)2 {3 int i 0;45 printf("\n----------------------hexdump-----------------------…

C語言編雜志程序,c語言程序錯誤修改

題目:雜志訂閱管理系統使用計算機對一種雜志的訂閱進行管理,該雜志最多訂戶不超過10人,每個訂戶的信息包括:姓名 性別 地址 電話號碼 雜志單價 訂閱數 訂閱期限(至**年**月)。現要求用菜單選擇并完成下述的功能:(1)增加新訂戶,既將訂戶的全部信息輸入到文…

c語言關鍵詞中英翻譯機編程,課程設計--C語言關鍵字中英翻譯機

《課程設計--C語言關鍵字中英翻譯機》由會員分享,可在線閱讀,更多相關《課程設計--C語言關鍵字中英翻譯機(21頁珍藏版)》請在人人文庫網上搜索。1、課課 程程 設設 計計 報報 告告 學院、系: 專業名稱: 課程設計科目 所在班級&…

c語言參數不能用 嗎,如何在C語言中禁止“未使用的參數”警告?

您可以使用gcc / clang的未使用屬性,但是我在標頭中使用這些宏,以避免在整個源代碼中__attribute__都有gcc特定的屬性,而且到處都有點冗長/難看。#ifdef __GNUC__# define UNUSED(x) UNUSED_ ## x __attribute__((__unused__))#else# defin…

c語言龍貝格積分法實驗報告,數值作業:龍貝格算法計算積分C語言實現

數值作業:龍貝格算法計算積分C語言實現數值作業:龍貝格算法計算積分C語言實現根據Romberg算法計算定積分,和變步長的Simpson算法的輸入都一樣.算法基本分析:輸入a,b(積分上下限),n為積分區間等分數,eps為計算精度,我這…

軟件設計師考c語言,軟件設計師教程考點精講之C語言三大定律

2016下半年軟考軟件設計師報名即將開始,同學們是否在學習過程中遇到了一些困難,下面由希賽軟考學院為打算參加下半年考試的你們準備了一些軟件設計師教程考點精講之Java編程性能措施,希望對大家有所幫助。自己總結的,覺得能幫助初…

用c語言程序算自己的年齡,新手編的小程序:計算年齡和出生后經歷的天數的小程序...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓#includeint main(){int i,j,k,t,m,a,b,c0;int x,y,z,n;printf ("請按下面格式輸年-月-日\n");printf("請輸入現在年月日:\n");scanf ("%d-%d-%d",&i,&j,&k);printf("請…

計算機二級c語言公共基礎題,計算機二級C語言筆試公共基礎知識課后習題及答案...

全國計算機等級考試二級公共基礎知識課后習題及答案1第一章數據結構與算法一.選擇題1.算法的時間復雜度是指( )A. 執行算法程序所需要的時間B. 算法程序的長度C. 算法執行過程中所需要的基本運算次數D. 算法程序中的指令條數2.算法的空間復雜度是指( )A. 算法程序的長度B. 算法…

w ndows7文檔加密取消,win7文件夾怎么加密?windows7文件加密方法

win7文件夾怎么加密?電腦文件隱私問題一直都是很多用戶的關注重點,尤其是自己電腦經常被他人使用的朋友。也許使用第三方軟件為文件夾加密比較方便,但如果能夠不借助“外力”完成這一任務就更加完美。下面,我們就一起來看看windows7文件加密…

dbscan算法c語言實現,用C++實現DBSCAN聚類算法

這幾天由于工作需要,對DBSCAN聚類算法進行了C的實現。時間復雜度O(n^2),主要花在算每個點領域內的點上。算法很簡單,現共享大家參考,也希望有更多交流。數據點類型描述如下:復制代碼 代碼如下:#include using namespac…

小世界網絡模型代碼 c 語言,新的小世界網絡模型實現文本特征的提取方法與流程...

本發明涉及語義網絡技術領域,具體涉及新的小世界網絡模型實現文本特征的提取方法。背景技術:目前常用的文本特征提取方法,包括詞頻-反文檔頻率方法—TF-IDF、信息增益方法、互信息等方法;TF-IDF的簡單結構并不能有效地反映詞匯或短…

米4用linux刷機救轉,小米4變磚之后如何刷機自救?大神教你小米4線刷救磚方法...

三:使用miflash工具刷機的步驟本工具適用于小米,華為,聯想等手機品牌高通版本,不只是小米專用,教程僅供參考,看完一遍后再刷機。第一步:刷機工具安裝1.下載小米手機刷機工具MiPhone2015731&…

android動態更新配置文件,Android如何動態修改Manifest文件

修改manifest文件Android Manifest.xml,添加相應的聲明。在這里,我們需要將新定義的活動PrefsActivity注冊到manifest文件。同前面一樣,在Eclipse中打開AndroidManifest.xml文件會默認進入Eclipse提供的圖形化編輯界面。單擊Application選項卡…