路由器兩邊介面是同一個 IP 網段: ARP Proxy
如果你一開始設計的網路環境就是同一個 Class C 的網域,例如 192.168.1.0/24 ,後來因為某些因素必須要將某些主機搬到比較內部的環境中,例如圖 8.2-1的 clientlinxu, winxp, win7。然後又因為某些因素,所以你不能變更這些計算機的 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 的封包給『騙』過來
圖 8.4-3、內部計算機想要傳送到正常網域時的封包流向
當 PC2 要傳送的封包是給 PC3, PC4 的,那麼這個封包得要能夠直接傳遞。但是如果需要傳送到正常網域的封包,就得要透過 router的對內網絡卡,再透過路由規則來將該封包導向外部介面來傳遞才行!這個時候就變成內部的介面欺騙 PC2 說, PC1 與 Router A 的 IP 是在內部這張介面上就是了,然後再透過路由判斷將該封包透過外部介面來對外傳遞出去即可。假設 Linux router 的對外介面為 eth0 而對內為 eth1 時,我們可以這樣說:
- 當 Linux Router 的 eth0 那個網域主機想要連線到 PC2~PC4 的主機時,由 Linux Router 負責接收;
- 當 Linux Router 要傳送資料到 PC2~PC4 時,務必要由 eth1 來傳送;
- 當內部計算機想要連線到 PC1 或 Router A 時,由 Linux router 的 eth1 負責接收;
- 當 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網段限制,
Docker:Docker實現同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後