1. 程式人生 > >路由器兩邊介面是同一個 IP 網段: ARP Proxy

路由器兩邊介面是同一個 IP 網段: ARP Proxy

如果你一開始設計的網路環境就是同一個 Class C 的網域,例如 192.168.1.0/24 ,後來因為某些因素必須要將某些主機搬到比較內部的環境中,例如圖 8.2-1的 clientlinxu, winxp, win7。然後又因為某些因素,所以你不能變更這些計算機的 IP,此時你的同一網域就會橫跨在一個路由器的左右兩邊了!舉例來說,聯機圖示有點像底下這樣:

在路由器兩個介面兩邊的 IP 是在同一個網域的設定情況
圖 8.4-1、在路由器兩個介面兩邊的 IP 是在同一個網域的設定情況

初次見面~看到眼睛快要掉下來哩!怎麼路由器的兩邊的主機 IP 設定都在同一個網域內?而且還被規定不能夠更改原先的 IP 設定,...真是一個頭兩個大啊~如此一來,在 Linux Router 兩邊要如何製作路由啊?好問題!真是好問題~因為 OSI 第三層網路層的路由是一條一條去設定比對的,所以如果兩塊網絡卡上面都是同一個網域的 IP 時,就會發生錯誤

。那如何處理啊?

我們先從兩方面來說,第一個,當從正確的網段 (PC1) 要聯機到 PC2~PC4 時,他應該是要透過 Linux Router 那部主機的對外 IP (192.168.1.100) 才行!而且 Linux Router 還必須要讓該封包透過內部 IP (192.168.1.200) 聯機到 PC2~PC4 。此時,封包傳遞的圖示有點像這樣:

正常的網段想要傳送到內部計算機去的封包流向
圖 8.4-2、正常的網段想要傳送到內部計算機去的封包流向

在這個階段,我們可以設定PC2~PC4 的 IP 所對應的網絡卡卡號 (MAC) 都設定在 router 的對外網絡卡上,因此, router 的對外介面可以將給 PC2~PC4 的封包給『騙』過來

。接下來,就簡單的透過路由設定,讓封包轉個介面傳送出去即可。這樣 PC1 --> PC2 的問題解決了,但是 PC2 怎麼傳送到 PC1 呢?我們可以透過底下的圖示來想象一下:

內部計算機想要傳送到正常網域時的封包流向
圖 8.4-3、內部計算機想要傳送到正常網域時的封包流向

當 PC2 要傳送的封包是給 PC3, PC4 的,那麼這個封包得要能夠直接傳遞。但是如果需要傳送到正常網域的封包,就得要透過 router的對內網絡卡,再透過路由規則來將該封包導向外部介面來傳遞才行!這個時候就變成內部的介面欺騙 PC2 說, PC1 與 Router A 的 IP 是在內部這張介面上就是了,然後再透過路由判斷將該封包透過外部介面來對外傳遞出去即可。假設 Linux router 的對外介面為 eth0 而對內為 eth1 時,我們可以這樣說:

  1. 當 Linux Router 的 eth0 那個網域主機想要連線到 PC2~PC4 的主機時,由 Linux Router 負責接收;
  2. 當 Linux Router 要傳送資料到 PC2~PC4 時,務必要由 eth1 來傳送;
  3. 當內部計算機想要連線到 PC1 或 Router A 時,由 Linux router 的 eth1 負責接收;
  4. 當 Linux Router 要傳送的資料為 192.168.1.0/24 ,但並非 PC2~PC4 時,需由 eth0 傳送。

上列的步驟與圖示內的線條上的順序相符合呦!得要對照著看看。其中的 (1) 與 (3) 就是透過 ARP Proxy (代理) 的功能啦!那啥是 ARP Proxy 呢?簡單的說,就是讓我的某張適配卡的 MAC 代理其他主機的 IP 對應,讓想要連線到這個 IP 的 MAC 封包由我幫他接下來的意思。舉我們圖 8.4-1 的例子來說,就是在 Linux Router 的 eth0 介面上,規定 192.168.1.10, 192.168.1.20, 192.168.1.30 這三個 IP 都對應到 eth0 的 MAC 上,所以三個 IP 的封包就會由 eth0 代為收下,因此才叫做 ARP 代理人嘛!所以啦,每一部在 eth0 那端的主機都會『誤判』那三個 IP 是 Linux Router 所擁有,這樣就能夠讓封包傳給 Linux Router 啦!

再接下來,咱們的 Linux Router 必須要額外指定路由,設定情況為:

  • 若目標是 PC2 ~ PC4 時,該路由必須要由內部的 eth1 傳送出去才行,
  • 若目標不為 PC2 ~ PC4 ,且目標在 192.168.1.0/24 的網域時,需由 eth0 傳送出去才行。

也就是說,你必須要指定路由規則當中,那個 PC2~PC4 具有優先選擇權,然後其他的同網域封包才由 eth0 來傳送。這樣就能夠達成我們所想要的結局啦!^_^!看樣子似乎很難,其實設定方面還挺簡單的,你可以透過 arp 以及 route 這兩個指令來達成喔!

  • 外部介面 eth0:08:00:27:71:85:BD
  • 內部介面 eth1:08:00:27:2A:30:14
# 1. 先設定外部 eth0 的 ARP Proxy,讓三個 IP 對應到自己的 MAC
[[email protected] ~]# arp -i eth0 -s 192.168.1.10 08:00:27:71:85:BD pub
[[email protected] ~]# arp -i eth0 -s 192.168.1.20 08:00:27:71:85:BD pub
[[email protected] ~]# arp -i eth0 -s 192.168.1.30 08:00:27:71:85:BD pub
[[email protected] ~]# arp -n
Address             HWtype  HWaddress      Flags Mask       Iface
192.168.1.30        *       *              MP               eth0
192.168.1.10        *       *              MP               eth0
192.168.1.20        *       *              MP               eth0
# 首先需要讓外部介面擁有三個 IP 的操控權,透過這三個指令來建立 ARP 對應!

# 2. 開始處理路由,增加 PC2~PC4 的單機路由經過內部的 eth1 來傳遞
[[email protected] ~]# route add -host 192.168.1.10 eth1
[[email protected] ~]# route add -host 192.168.1.20 eth1
[[email protected] ~]# route add -host 192.168.1.30 eth1
[[email protected] ~]# route -n
Kernel IP routing table
Destination    Gateway        Genmask         Flags Metric Ref    Use Iface
192.168.1.20   0.0.0.0        255.255.255.255 UH    0      0        0 eth1
192.168.1.10   0.0.0.0        255.255.255.255 UH    0      0        0 eth1
192.168.1.30   0.0.0.0        255.255.255.255 UH    0      0        0 eth1
192.168.1.0    0.0.0.0        255.255.255.0   U     0      0        0 eth0
192.168.1.0    0.0.0.0        255.255.255.0   U     0      0        0 eth1
0.0.0.0        192.168.1.254  0.0.0.0         UG    0      0        0 eth0
# 這樣就處理好單向的單機路由囉!不過有個問題啊!那就是 192.168.1.0/24
# 的網域,兩個介面都可以傳送!因此,等一下第四個步驟得要將 eth1 刪除才行!

3. 設定一下內部的 ARP Proxy 工作 (綁在 eth1 上頭囉)!
[[email protected] ~]# arp -i eth1 -s 192.168.1.101 08:00:27:2A:30:14 pub
[[email protected] ~]# arp -i eth1 -s 192.168.1.254 08:00:27:2A:30:14 pub
# 這樣可以騙過 PC2 ~ PC4 ,讓這三部主機傳遞的封包可以透過 router 來傳遞!

4. 開始清除掉 eth1 的 192.168.1.0/24 路由
[[email protected] ~]# route del -net 192.168.1.0 netmask 255.255.255.0 eth1

所有的計算機都在同一個網域內,因此 default gatway 都是 192.168.1.254 ,而 netmask 都是 255.255.255.0,只有 IP 不一樣而已。最後,所有的計算機都可以直接跟對方聯機,也能夠順利的連上 Internet !這樣的設定就能夠滿足上述的功能需求囉!如果一切都沒有問題,那麼將上述的指令寫成一個指令碼檔,例如 /root/bin/network.sh ,然後將該檔案設定為可執行,並將它寫入 /etc/rc.d/rc.local ,同時每次重新啟動網路後,就得要重新執行一次該指令碼,即可達到你的需求囉!

透過這個案例你也可以清楚的知道,能不能聯機其實與路由的關係才大哩!而路由是雙向的,你必須要考慮到這個封包如何回來的問題喔!

相關推薦

路由器兩邊介面同一個 IP ARP Proxy

如果你一開始設計的網路環境就是同一個 Class C 的網域,例如 192.168.1.0/24 ,後來因為某些因素必須要將某些主機搬到比較內部的環境中,例如圖 8.2-1的 clientlinxu, winxp, win7。然後又因為某些因素,所以你不能變更這些計算機的 IP,此時你的同一網域就會橫跨

Erlang叢集未公開特性IP限制

Erlang叢集二個節點之間的通訊是通過一個tcp長連線進行的,而且是全聯通的,一旦cookie論證通過了,任何一個節點就獲得全叢集的訪問權,可以參考Erlang分佈的核心技術淺析 。erlang的這個授權模式特定搞的這麼簡單,但是在實際使用中還是有安全性的問題。我們退而求其次,來個IP網段限制,這個功

系統技術非業餘研究 » Erlang叢集未公開特性IP限制

Erlang叢集二個節點之間的通訊是通過一個tcp長連線進行的,而且是全聯通的,一旦cookie論證通過了,任何一個節點就獲得全叢集的訪問權,可以參考Erlang分佈的核心技術淺析 。erlang的這個授權模式特定搞的這麼簡單,但是在實際使用中還是有安全性的問題。我們退而求其次,來個IP網段限制,

DockerDocker實現同Ip聯通

https 虛擬機 conf 希望 修改 例如 this autoconf ifcfg 最近解決docker與宿主機同網段通信的問題,寫此文章記錄一下整個過程。例如宿主機A 和宿主機B是網絡聯通關系,在宿主機A上面創建了多個容器組成集群,但是我希望通過宿主機B也可以訪問到宿

Nginx禁止ip訪問或IP訪問方法

轉載:https://www.cnblogs.com/already/p/6244295.html Nginx禁止ip訪問可以防止指定IP訪問我們的網站,本例子可以實現是防止單IP訪問或IP網段訪問了,非常的有用我們一起來看看吧。 常用的linux做法 iptables參考規則

將VMware Workstation 12 Pro的虛擬絡卡修改為自己希望的IP

每天在做各種測試的時候,很多地方都會需要填寫ip,每次都192.168.237...,每次都必須輸入10幾位的ip地址,煩不勝煩。簡潔為美!我還是喜歡諸如10.1.1.1之類的ip填寫,是否可以實現呢?讓我們一起來試試看吧? 只需簡單的三步設定即可完成自定義IP設定。 第一

啟用apache目錄瀏覽功能 二(賬號驗證、IP限制)

使用apache限制使用者瀏覽分為兩種: 1、使用賬號和密碼 2、通過IP網段限制 一、使用賬號限制 1、在Apache配置檔案中httpd.conf中最後新增允許訪問的目錄 Alias /dist "E:/KuGou" <Directory "E:/KuGou"> Options Ind

IP工具類判斷兩個ip是否在同一個內,比較兩個ip的大小

import java.util.regex.Pattern; /** * IP地址範圍: 0.0.0.0~255.255.255.255,包括了mask地址。 IP地址劃分: * A類地址:1.0.0.1~126.255.255.254 B類地址:128.0.0.1~

計算機網路: IP地址,子掩碼,表示法,預設閘道器,DNS伺服器詳解 楔子   以Windows系統中IP地址設定介面為參考(如圖1), IP地址, 子掩碼, 預設閘道器 和 DNS伺服器,

楔子:   以Windows系統中IP地址設定介面為參考(如圖1), IP地址, 子網掩碼, 預設閘道器 和 DNS伺服器, 這些都是什麼意思呢?        學習IP地址的相關知識時還會遇到網路地址,廣播地址,子網等概念,這些又是什麼意思呢 ? 一 IP地址 概述 計算機要實現網路通訊,就必須要有

相連路由器IP地址為什麼必須在同一個?????

圖1.1 靜態路由協議實驗網路拓撲圖 我們在兩個網段(192.168.1.0/24和192.168.2.0/24)中分別有3個路由器,Router0,Router1和Router2,我們的目標是Router0的資料包能順利到達Router2,因為這是一個小型的具有簡單拓撲結構的網路,因此我們決定採用靜態

docker 指定ip開容器,並且和內同一個

docker 指定ip開機器 並且和內網在同一個網段 docker 指定ip開機器,並且和內網在同一個網段 第1步:創建自定義網絡 備註:這裏選取了100.0.0.0網段,也可以指定其他任意空閑的網段 docker network create --subnet=100.0.

DEVOPS 運維開發系列九VLAN與私IP資源的自動化運維管理

要解決的問題 傳統上,對於VLAN和私網IP地址這些資源與配置的使用管理上面我們多是事前規劃、事中實施、事後登記,對於一個持續運營中的系統與網路,各種資源數量的變更,總是讓我們會有很多機會反反覆覆做這些事。但時間長了就會出問題,會有不登記的情況、登記錯的情況,以及登記的資訊過時的情況。然

運維案例實現之間的主機通過指定外IP共享上網

運維需求: 172.16.1.0/24段所有主機通過124.32.54.26外網IP共享上網 解決方案: iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT –to-source 124.32.54.26 iptables -t nat -

所有的平臺及瀏覽器獲取客戶端IP(外 使用的搜狐介面

<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>   <script type="text/javascript"&

ip地址和子掩碼用來判斷在不在同一個

ip地址 and 子網掩碼可以確定一個網路號ip:172.21.6.117子網掩碼:255.255.255.0分別轉化成二進位制相與之後就是網路號。網路號相同的在同一個網段,只有同一個網段的才可以ping通

Docker1.12讓容器使用和宿主機同一個

docker1.12讓容器使用和宿主機同一個網段步驟一:創建網絡$ docker network create -d macvlan --subnet=172.16.0.0/24 --gateway=172.16.0.1 -o parent=eno16777736 mynet548d79fe04c613d3c

第5章 IP地址和子劃分(4)_超合並

8.0 str ges 分析 需求 由於 子類 log spa 7. 超網合並網段 7.1 合並網段 (1)子網劃分是將一個網絡的主機位當網絡位,來劃分出多個子網。而多個網段合並成一個大網段,合並後的網段稱為超網。 (2)需求分析   某企業有一個網段,該網段有200臺計算

lvs 一個卡單個管理ip,多個跨VIP解決辦法

lvs keepalived 說明:lvs的vip和realserver的rip是可以跨網段的ifconfig輸出如下:[[email protected]/* */ scripts]# ifconfig eth0 Link encap:Ethernet HWaddr 00:

python-掃描某一下的ip

lin break bsp tar thread main python per not 1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 ############################ 4 #File

三層交換機如何設置IP-MAC綁定?跨IP-MAC綁定方案。

ip mac 綁定 交換機上配置IP-mac綁定,主要需要考慮兩個因素:該交換機是否開啟DHCP服務?是采用端口綁定還是ARP綁定?端口綁定或者ARP綁定,只是強制了IP-MAC的對應關系。但是,對於自動獲取IP地址的客戶機而言,還需要在DHCP服務器上分配固定IP才可以;否則客戶機重新獲取IP後