当前位置: 首页 > >

关于linux下的路由

发布时间:

原贴:http://linux.vbird.org/linux_server/0230router.php


我?在
?路基??面?到?
路由的相?概念, 他最大的功能就是在?我????路封包的??方式?方向。 至於路由的?察?可以使用
route 或者是
netstat ?查???定。 好了,那?路由的形式有哪些?您又?如何??路由是否正?呢?





路由表


如同前面?路基??到的,
每一部主?都有自己的路由表, 也就是?,您必?要透?你自己的路由表???你主?的封包到下一?路由器上?。 若?送出去後,?封包就得要透?下一?路由器的路由表??送了,此??你自己主?的路由表就?有??啦! 所以?,如果?路上面的某一部路由器?定??,那.....封包的流向就??生很大的??。 我?就得要透?
traceroute ????解一下每? router 的封包流向?。


[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 <== 1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo <== 2
0.0.0.0 192.168.1.2 0.0.0.0 UG 0 0 0 eth1 <== 3

首先,我?得知道在 Linux 系?下的路由表
是由小?域排列到大?域, 例如上面的路由表?中,路由是由『 192.168.1.0/24 --> 127.0.0.0/8 --> 0.0.0.0/0 (??路由) 』?排列的。 而?主?的?路封包需要?送?,就?查?上述的三?路由????解如何??封包?送出去。


依?介面而存在的路由

[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
.....以下省略.....


手?或??路由(default route)

[root@linux ~]# route add -net 192.168.100.0 /
> netmask 255.255.255.0 gw 192.168.100.254
SIOCADDRT: Network is unreachable

看吧!系?就?回??有?法?接到??域,因?我?的?路介面? 192.168.100.0/24 根本就?有??嘛! 那如果 192.168.100.254 真的是在我?的???路?接上,那其?你??是??做:

[root@linux ~]# route add -net 192.168.100.0 /
> netmask 255.255.255.0 dev eth0
[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.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 eth0
0.0.0.0 192.168.1.2 0.0.0.0 UG 0 0 0 eth1

??你的主?就?直接用 eth0 ???置去???接 192.168.100.254 了! 另外,上面路由?出的重?其?是那?『Flags 的 G 』了!因?那? G 代表使用外部的?置作? Gateway 的意思!而那? Gateway (192.168.1.2) 必?要在我?的已存在的路由?境中。 ?可是很重要的概念喔! ^_^
??路由
或 CentOS 上面的 Quagga (http://www.quagga.net/) ?????了!



IP Alias 的??用途


我?在
Linux 常用指令?面?? eth0:0 ???置吧? ???置可以在原本的 eth0 上面模?出一???介面出?,以?我?原本的?路卡具有多? IP , 具有多? IP 的功能就被?? IP Alias 了。而?? eth0:0 的?置可以透?
ifconfig
ip ???指令??成, ?於???指令的用途?翻回去之前的章???,??不再浪?篇幅啊!


??用

[root@linux ~]# ifconfig [device] [ IP ] netmask [netmask ip] [up|down]
[root@linux ~]# ifconfig eth0:0 192.168.0.100 netmask 255.255.255.0 up

?建立一???的?路介面,??就可以立刻?接上 IP 分享器了。
在一????域中含有多? IP ?域
既有???法提供更多???卡?
呢?有????的方法可以使用:


透? /etc/rc.d/rc.local
透? /etc/sysconfig/network-scripts/ifcfg-eth0:0

[root@linux ~]# cd /etc/sysconfig/network-scripts
[root@linux network-scripts]# vi ifcfg-eth0:0
DEVICE=eth0:0 <==相?重要!一定要??名相同的?置代?!
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.100
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255


[root@linux network-scripts]# ifup eth0:0
[root@linux network-scripts]# ifdown eth0:0

?於?置的?定?案?的更多???明,??考?上 Internet 一文的相??明,在此不再?述!使用??方法有?好?,就是?你使用『 /etc/init.d/network restart 』?, 系?依??使用你的 ifcfg-eth0:0 ?案?的?定值???你的???卡喔!另外, 不? ifcfg-eth0:0 ?的 ONBOOT ?定值?何,只要 ifcfg-eth0 ?????卡的?定?中, ONBOOT ? yes ?,??就??全部的 eth0:n 都??



重?路由的??


很多朋友可能都有一?可?的想法,那就是:『
我可不可以利用???卡, 利用??相同?域的 IP ?增加我?部主?的?路流量』?事?上?是一?可行的方案, 不?必?要透??多的?定??成,若您有需求的?,可以?考?中人大哥?的?一篇:


????*衡 (http://www.study-area.org/tips/multipath.htm)如果只是??的以??定好???卡的 IP 在同一??域而已,那您可就大?特?了~ ?什?呢???得我?在路由表???面提??路封包的??主要是依?主??的路由表??吧! 那如果你有???路卡?,假?:


eth0 : 192.168.0.100 eth1 : 192.168.0.200 那你的路由???是如何呢?理?上??成??:


[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

也就是?,
?要?送到 192.168.0.0/24 的?域?,都只?透?第一??? ,也就是透? eth1 ??出去,而不管是由 eth0 ?是由 eth1 ??的?路封包都?透? eth1 ?回?,?可能?造成一些??, 尤其是一些防火?的??方面,很可能??生一些?重的??, 如此一?,根本?有?法?成??*衡,也不?有增加?路流量的效果! 更?的是,?可能?生封包????的情??!所以?,同一部主?上面?定相同?域的 IP ?, 得要特?留意你的路由??,一般??,
不???定同一的?段的不同 IP 在同一部主?上面。 例如上面的案例就是一?不好的示?啊!



在同一的?域?路?面可以透??播 (broadcast) ?解到 MAC ? IP 的解析,然後透? MAC ? MAC ??送?料封包, 在不同的?域??就得要透?路由器的?忙。那?什?是路由器?他的主要功能是什?? 底下我?就?聊一聊!





什?是路由器


既然主?想要??料?送到不同的?域?得透?路由器的?忙,所以啦,路由器的主要功能就是: 『
???路封包』?! 也就是?,路由器?分析?源端封包的 IP 表?,找出目?的 IP 後,透?路由器本身的路由表 (routing table) ???封包向下一?目? (next hop) ?送。?就是路由器的功能。


硬?功能:例如 Cisco, IBM, 3Com 等公司都有生?硬?路由器,?些路由器?有嵌入式的作?系?, 可以??不同?域?的封包?????等功能;
??功能:例如 Linux ??作?系?的核心就有提供封包??的能力。
高?的路由器可以??不同的硬???,?且可以??很多不同的封包格式,通常....?格也不便宜啊! 在??章??面,我???有要探???高?的咚咚,???在乙太?路??最??的路由器功能: ?接??不同的?域。嘿嘿!??功能 Linux 就可以?成了! 就如同路由表是由 Linux 的核心功能所提供的,????封包的能力也是 Linux 核心所提供, 那如何????封包??呢?很??啊,只要??做即可:


[root@linux ~]# echo "1" > /proc/sys/net/ipv4/ip_forward

上面???作就在打? Linux 核心的封包??能力。你可以?上述的指令?入 /etc/rc.d/rc.local ?中, 以使 Linux 可以在??的?候就??封包??的功能, 也可以透?修改 /etc/sysctl.conf ??成????封包??:


[root@linux ~]# vi /etc/sysctl.conf
# ?底下???定值修改正?即可!
net.ipv4.ip_forward = 1

[root@linux ~]# sysctl -p <==立刻???定生效

sysctl ??指令是在核心工作?用?直接修改核心??的一?指令,更多的功能可以?考 man sysctl 查?。 不要?疑!只要???作,你的 Linux 就具有最??的路由器功能了。 而由於 Linux 路由器的路由表?定方法的不同,通常路由器??其路由的方式就有??:


??路由:直接以?似 route ??指令?直接?定路由表到核心功能?中,?定值只要??域?境相符即可。 不?,?你的?域有?化?,路由器就得要重新?定;
??路由:透??似 zebra ??的功能,?些??可以安?在 Linux 路由器上, 而?些??可以??的???域的?化,而直接修改 Linux 核心的路由表??, 你??手?以 route ?修改你的路由表??喔!?解了路由器之後,接下?你可能需要?解到什?是 NAT (Network Address Translation, ?路位址??) 主?, NAT 是啥?其? IP 分享器就是最??的 NAT 主?啦!嘿嘿,?解了????, NAT 可以?成 IP 分享的功能, 而 NAT 本身就是一?路由器,但 NAT 比路由器多了一?『 IP ??』的功能。怎??呢?


一般??,路由器?有???路介面,透?路由器本身的 IP ??功能????域可以互相?通?路封包。 那如果??介面一?是公共 IP (public IP) 但一?是私有 IP (private IP) 呢? 由於私有 IP 不能直接?公共 IP ?通其路由??,此?就得要?外的『 IP ??』功能了;
Linux 的 NAT 主?可以透?修改封包的 IP 表??料之?源或目? IP ,??自私有 IP 的封包可以?成 NAT 主?的公共 IP ,就可以?上 Internet !所以?, ?路由器?端的?域分?是 Public ? Private IP ?,才需要 NAT 的功能! NAT 功能我??在防火???及,??章????一下路由器而已啊! ^_^




何?需要路由器?


一般??,???量小於?十部的小型企?是??路由器的,只需要利用 hub/switch 串接各部??, 然後透??一?路?接到 Internet 上即可。不?,如果是超??百部??的大型企??境, 由於他?的?境通常需要考?如下的??,因此才需要路由器的架?:


???路之??及效能的考量
部??立?保??料的考量
的指令???封包?料, ?且予以?取
~所以,如果你的部?之?的?料可能需要?立, 或者是某些重要的?料必?要在公司?部也予以保??,可以?那些重要的??放到一??立的???域, ??外加?防火?、路由器等?接上公司?部的?域。



??路由之路由器


假?在?公司的?路?境?中,除了一般??的工作用??是直接?接到?外的路由器??? Internet, 在?部其??有一?部?需要?安全的?立?境,因此?部份的?路??可能是??的情?:



Linux Router


在?部主??需要有???卡,?哥在???他定??:


eth0: 192.168.10.254 eth1: 192.168.0.100那如何?定呢???做就?了:


1. 先?理 eth0
[root@linux ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.10.255
IPADDR=192.168.10.254
NETMASK=255.255.255.0
NETWORK=192.168.10.0
ONBOOT=yes


2. 再先?理 eth1
[root@linux ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.0.100
NETMASK=255.255.255.0
NETWORK=192.168.0.0
GATEWAY=192.168.0.254
<==???定值很重要喔!
ONBOOT=yes


3. ?? IP ??
[root@linux ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
# 上述指令如果?有??,?他加入 /etc/rc.d/rc.local ?中去!

4. 重新???路,?且?察路由
[root@linux ~]# /etc/init.d/network restart
[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 eth1

有???吧!??你的 Linux Router 就 OK 了?!接下??是 PC2 ?作??例。

受保?的?域,以 PC2 ?例:


不?你的 PC2 是哪一?作?系?,你的?境都??是??的:


IP: 192.168.10.20 netmask: 255.255.255.0 network: 192.168.10.0 broadcast: 192.168.10.255 gateway: 192.168.10.254以 Linux 作?系??例,?且 PC2 ?有 eth0 一??卡?,他的?定是??的:


[root@linux ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.10.255
IPADDR=192.168.10.20
NETMASK=255.255.255.0
NETWORK=192.168.10.0
GATEWAY=192.168.10.254
<==???定最重要啦!
ONBOOT=yes


[root@linux ~]# /etc/init.d/network restart
[root@linux ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.10.254 0.0.0.0 UG 0 0 0 eth0



Router A 的新增路由??:


在??的架?下,您的 PC2 已?可以?接上 Internet 了!只不?,?封包由 Internet ?回??,
由於 Router A ??有?接到 192.168.10.0/24 ?域的路由??,所以?封包『??失』喔!那就麻?了~ 所以,你的 Router A 必?要?外增加一???,????是『?目?? 192.168.10.0/24 的封包?送? 192.168.0.100 去?理』,假? Router A ? Linux 系??,那他??要??:


[root@linux ~]# route add -net 192.168.10.0 netmask 255.255.255.0 /
> gw 192.168.0.100

[root@linux ~]# route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.0 192.168.0.100 255.255.255.0 UG 0 0 0 eth0
# 你?????上??一???存在才行!

如此一?,你的 Router A 及 Linux Router 之?就可以?通,?且可以?? 192.168.10.0/24 的?域?!

PC1 直接? PC2 的?通方式:


在?一?中,你???那? PC1 必?要???路由?定? 192.168.0.254 , 所以? PC1 要? PC2 ?通?,封包?由:


[root@linux ~]# route add -net 192.168.10.0 netmask 255.255.255.0 /
> gw 192.168.0.100

最後只要 PC2 使用 ping 可以?到 PC1,同?的, PC1 也可以 ping 到 PC2 的?, 就表示你的?定是 OK 的啦!嘿嘿!搞定!而透???的?定方式,您也可以??到一件事, 那就是:『
路由是?向的,你必?要?解出去的路由?回??的??』。 ?例??,在??的情?下 (Router A ? PC1 都?有?外的路由?定?),其?封包是可以由 PC2 ??到 PC1 的,但是 PC1 ??有相?的路由可以回?到 PC2 ~所以上?才?要您在 Router A 或者是 PC1 上面?定?外的路由??啊!???,?了吧? ^_^




所以?,用 Linux 作一???路由的 Router 很??吧!以上面的案例??,你在 Linux Router 上面?乎?有作什??外的工作,只要??路 IP ??路介面??好??,然後加上 IP Forward 的功能, ?你的 Linux 核心支援封包??,然後其他的工作咱?的 Linux kernel 就主??你搞定了! 真是好??! ^_^

不???必?要提醒的是,如果你的 Linux Router 有?定防火?的?, 而且?有?定?似 NAT 主?的 IP ??技?,那可得特?留意,因??可能?造成路由?判的??~ 上述的 Linux Router ?中『??有使用到任何 NAT 的功能』喔!特??他留意到!



友情链接: