假設現有三颱計算機
a計算機有三塊網絡卡 eth0: 192.168.1.125 連線到internet。 eth1:192.168.2.1 。 eth2:192.168.3.1。
b計算機 ip:192.168.2.120 預設閘道器:192.168.2.1
c計算機 ip:192.168.3.114 預設閘道器:192.168.3.1
現在b、c計算機要以a計算機ip為閘道器上網,並實現b、c網段之間的訪問,a計算機相當於實現路由器功能。
a計算機配置:
$/sbin/ifconfig eth0 192168.1.125 netmask 255.255.255.0
$/sbin/ifconfig eth1 192168.2.1 netmask 255.255.255.0
$/sbin/ifconfig eth2 192168.3.1 netmask 255.255.255.0
不過開機重啟後這些配置資訊會丟失,所以新增到檔案儲存,如eth0的配置資訊新增到/etc/sysconfig/network-scripts/ifcfg-eth0
# networking inte***ce
device=eth0
hwaddr=00:0c:29:d3:7d:7c
onboot=yes
ipaddr=192.168.1.125
bootproto=none
netmask=255.255.255.0
dns2=202.96.128.68
type=ethernet
gateway=192.168.1.1
dns1=202.96.134.133
nm_controlled=yes
ipv6init=no
userctl=yes
prefix=24
name="my eth0"
uuid=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
eth1和eth2類似新增
新增完這些後新增路由表
#/sbin/route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
#/sbin/route add -net 192.168.2.0 netmask 255.255.255.0 dev eth1
#/sbin/route add -net 192.168.3.0 netmask 255.255.255.0 dev eth2
使用命令檢視路由表
#route
kernel ip routing table
destination gateway genmask flags metric ref use iface
192.168.3.0 * 255.255.255.0 u 0 0 0 eth1
192.168.2.0 * 255.255.255.0 u 1 0 0 eth2
192.168.1.0 * 255.255.255.0 u 1 0 0 eth0
這時候還需要新增預設閘道器,也就是計算機a連線到網路的路由器:192.168.1.1
#route add default gw 192.168.1.1
#route
kernel ip routing table
destination gateway genmask flags metric ref use iface
192.168.3.0 * 255.255.255.0 u 0 0 0 eth1
192.168.2.0 * 255.255.255.0 u 1 0 0 eth2
192.168.1.0 * 255.255.255.0 u 1 0 0 eth0
default 192.168.1.1 0.0.0.0 ug 0 0 0 eth0
開啟**ip**功能
echo 1 >/proc/sys/net/ipv4/ip_forward或者
sysctl -w net.ipv4.ip_forward = 1
可以在命令中使用,也可以為了自動化加入rc.local中
計算機bc配置
b:ip address:192.168.2.120 mask:255.255.255.0 default gateway:192.168.2.1
c:ip address:192.168.3.120 mask:255.255.255.0 default gateway:192.168.3.1
dns自己根據當地網路設定
b計算機:
ping 192.168.2.1
ping 192.168.3.1
ping 192.168.1.125
這三個應該沒什麼問題,繼續
ping 192.168.3.114
ping 192.168.1.1
發現還是不通
檢視a計算機的iptables
iptables -l
chain input (policy accept)
...chain forward (policy accept)
target prot opt source destination
reject all -- anywhere anywhere reject-with icmp-host-prohibited
ok, we find it! 看來iptable中**被阻止了,刪除這個組織規則就可以了
iptables -d forward 1
ok!現在bc應該可以聯網了
當然筆者在此還遇到了其他的問題,最後需求幫助得知輸入如下資訊
iptables -t nat -a postrouting -o eth0 -s 192.168.2.0/24 -j masquerade
iptables -t nat -a postrouting -o eth0 -s 192.168.3.0/24 -j masquerade
or
iptables -t nat -a postrouting -o eth0 -s 192.168.2.0/24 -j snat --to 192.168.1.125
iptables -t nat -a postrouting -o eth0 -s 192.168.3.0/24 -jsnat --to 192.168.1.125
自己分析下:
nat,這個表被查詢時表示遇到了產生新的連線的包
postrouting鍊錶存放修改準備出去的包
-o eth0 表示修改後的資料報由介面eth0送出
snat: 這個目標只適用於nat表的postrouting鏈。它規定修改包的源位址
到此目標linux路由器配置完成了!
歡迎各位留意討論
下面對為什麼要進行偽裝做分析:
利用之前網上看到的乙個例子:
兩個客戶機想通訊,要求閘道器都之指新做的這台路由上,可是在一些情況下做不到。這時可以用位址偽裝實現。
比如我做了一台新linux路由器,這時他可以與其它科室的一台機可以通訊(因為我的新linux路由器一塊網絡卡與其在乙個網段嘛),我的另一台客戶機通過我做的新linux路由在另乙個網段。這時如果我能把其它科室的機器與我的機器閘道器都設成我的新linux路由器就可以通訊了,可是沒有這種許可權啊!!!
我可以在新linux路由器上通過位址偽裝得以實現。
如果實現我可以訪問他,他不能訪問我可以這麼做:
iptables -t nat -a postrouting -o eth0 -s 你的ip位址段/子網掩碼表示 -j masquerade
如果實現他可以訪問我,可以加上:
iptables -t nat -a postrouting -o eth1 -s 他的ip位址段/子網掩碼表示 -j
masquerade
原理及分析:
如果我沒有做位址偽裝時,我的資料報通過了新的linux路由器,**到了他的機器,可是因為我的ip位址不與他在同一網段,他利於閘道器發到了其它的地方。所以只有你對的資料報沒有回來的,通過在新的linux路由器抓包可以看的很清楚。
在做了位址偽裝後,資料報源位址是新的linux路由器上的位址,因為發過去後是與他在同一網段內,所以不用閘道器**,直接發到新的linux路由器,然後就可以返回來。通過在新的linux路由器上抓包也可以看的很清楚。
路由器配置
以r2為例項 ip route 172.16.2.0 255.255.255.0 172.16.3.1 ip route 192.168.1.0 255.255.255.0 192.158.10.6 rip路由 network 介面網段 route rip version 2 no auto sum...
路由器的配置
路由器的基本配置 1.給路由器命名 2.關閉網域名稱解釋 3 設定輸入同步 4.設定路由器介面ip位址 具體如下 router en router conf t router config ho r1 命名 r1 config no ip domain loo 關閉網域名稱查詢 r1 config ...
路由器的配置
路由器1 en 使用者進入特權模式 config t 特權進全域性 int f0 1 進入 f0 1 介面ip add 192.168.1.1 255 255 255.0 配置 ip位址跟子網掩碼 no shut 開啟介面 int f0 0 進入 f0 0 介面ip add 192.168.2.1 ...