Linux作為路由器(一)

2021-09-07 09:35:49 字數 2770 閱讀 1686

前言:linux主機可以作為路由器使用,利用路由**功能實現不同網路內的主機能夠相互通訊,利用iptables的snat功能來實現企業內網主機訪問網際網路,下面做個小的實驗。

實驗環境:vm

(1)路由器linux主機router:

一般來說需要兩塊網絡卡:eth0 192.168.31.168  eth1 172.16.100.1  其中eth0使用橋接,eth1使用僅主機模式,這裡我想你有必要了解vm三種網路模式的區別。

(2)企業內網主機host1:

僅主機模式,eth0 172.16.100.6

(3)其他網段主機host2:

橋接模式:eth0 192.168.31.167

1、首先實現hosts1和host2能夠互相訪問

(1)host1新增預設路由:

# route add default gw 172.16.100.1
使其指向router eth1

(2)host2新增預設路由:

# route add default gw 192.168.31.168
使其指向router eth0,方法同上

(3)router開啟路由**功能:

檢視路由**功能是否開啟:# cat /proc/sys/net/ipv4/ip_forward  結果是0,則沒有開啟

臨時開啟方法:echo 1 > /proc/sys/net/ipv4/ip_forward

永久開啟方法:修改/etc/sysctl.conf檔案,net.ipv4.ip_forward = 1,然後執行sysctl -p

(4)檢驗是否能夠互相訪問:

這裡我們就實現了內部不同網路內主機的通訊。

2、實現host1訪問網際網路:

因為實驗環境router預設閘道器指向了mi_router 192.168.31.1,所以router可以訪問網際網路,host2本身是橋接模式,閘道器指向router,router開啟了路由**功能,所以host2也可以訪問網際網路。

雖然host1閘道器也指向router,可以訪問到mi_router閘道器,但是host1確無法訪問網際網路;

host1的請求能出去,但是不能接收到報文,mi_router無法將網際網路返回的報文送達host1,原因如下:

源位址172.16.100.6經過router**,到達mi_router,mi_router進行snat,使得請求報文能夠在網際網路傳送;

被請求主機返回資料,mi_router再自動進行dnat,發現源位址是172.16.100.6,mi_router就矇圈了,他找不到這台主機;

所以要解決的問題是怎麼讓mi_router返回資料給host1;

(1)mi_router我們無法修改其閘道器使其指向router,但mi_router能訪問router這台主機,那能不能讓mi_router認為源位址請求是從router發出的呢,答案是可以的;

這就涉及到我們真正看的見得snat,當然,mi_router本身就已經實現了snat,這裡我們自己手動實現,將host1的請求轉化為router的請求,傳送給mi_router

(2)在router上新增一條規則就可以搞定:

# iptables -t nat -a postrouting -s 172.16.0.0/16 -j snat --to 192.168.31.168
在nat表的postrouting鏈上新增規則,所有來自172.16.0.0/16網路的主機請求,位址都被轉換為192.168.31.168,192.168.31.168能訪問網際網路,資料報文返回到router時,它會自動進行dnat,最終將資料返回給host1主機。

在host2抓包會發現,是192.168.31.168在進行icmp請求:

那麼怎麼調整呢,修改我們的snat規則即可:

# iptables -t nat -r postrouting 1 -s 172.16.0.0/16 ! -d 192.168.31.0/24 -j snat --to 192.168.31.168
再次ping,抓包,ok,正常。

我們可以根據自己的需求更加精準的進行snat。

總結:linux主機實現路由器部分功能

(1)路由**:需開啟路由**功能/proc/sys/net/ipv4/ip_forward為1

路由器連線路由器

有兩種方法!無論哪種,和貓接的主路由總是不變!只要改從路由的設定!第一。從路由還是當路由用!設定 路由a為主路由,路由b為從路由!假設你現在有兩個路由 路由a 和 路由b 同時使用的是adsl撥號上網。首先,設定路由a的wan口狀態設定為pppoe撥號狀態,然後填入adsl撥號的賬號和密碼。然後,設...

將MacBook作為無線路由器

大家看標題已經知道我們要做什麼了,也不是什麼新鮮事了,只是在某些時候的確需要而已!目前使用的是乙個蘋果筆記本,想讓手機能夠通過wifi上網,暫時沒有使用無線路由器,因此準備把自己的macbook作為路由器來共手機連線網路。同時因為在網上看到很多人問這樣的問題,這裡就寫一下吧。操作步驟 1 開啟 系統...

將MacBook作為無線路由器

大家看標題已經知道我們要做什麼了,也不是什麼新鮮事了,只是在某些時候的確需要而已!目前使用的是乙個蘋果筆記本,想讓手機能夠通過wifi上網,暫時沒有使用無線路由器,因此準備把自己的macbook作為路由器來共手機連線網路。同時因為在網上看到很多人問這樣的問題,這裡就寫一下吧。操作步驟 1 開啟 系統...