路由永久生效的5种方法及生效的优先级_第1页
路由永久生效的5种方法及生效的优先级_第2页
路由永久生效的5种方法及生效的优先级_第3页
路由永久生效的5种方法及生效的优先级_第4页
路由永久生效的5种方法及生效的优先级_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、路由永久生效的5种方法及设置完毕后生效的优先级。修订版本号1v编辑时间2017.8编辑者Mercy校验者Leo审核者Limis目的:为了在linux系统中设定路由方法一:找到/etc/rc.1ocal(开机自动启动)推荐使用!使用vi编辑增加routeadd-net/24deveth0routeadd-net/24gw注:/24即是netmask这是一个C类地址的子掩码/16即是netmask这是一个B类地址的子掩码/8即是netmask这是一个A类地址的子掩码/binfsh.4#7iliaac-riptwillbeenecut-ed亡r*allthtotherinitscripta#Ycru

2、can.put址口口匸ciwninitializationstuinhereizyoudan.11#want匸odethezullSysVatvleinit曰匸口二二touchfvar/lock/aui)aya/1oca1routeadd-net192.lG.2.0/24devethODouteadd-net/24gw重启电脑后roottaiocalhostroute-nKernelIFroutingtableDestination192.1&8.5.0192.168.4.eGateway192.168.1,1192.168.1.LGenmiaskFla

3、gsMetricRefLseIfaceUG000ethoLG000etho255.255.255.QLG000ethoU000eth0U000eth0u100200ethoLG000etho方法二:切换到网络配置目录下/etc/sysconfig/network-scripts/推荐使用!使用vi编辑新建文档在这之前需要确认默认网口是否是eth0也可以分别为不同的网口配置不同的路由。rootmercyfu#viroute-eth0/24via/24via:wqrootmercyfu#serviecenetworkrestart192.158,1.1UG030ethO152.158.S.O方法三

4、:开启IP转发rootmercyfu#vi/etc/sysctl.conf-net.ipv4.ip_forward=1(永久开启)(设置后重启网络服务无反应,原因是:在打开内核IP转发功能后,我们就该为我们所假设的网络添加路由功能了。在Linux变成路由功能,两种方法来实现,一种是通过IPTABLES工具的NAT转发功能,一种是使用IPROUTER2工具集中的IPROUTE命令子集来实现。这两种方法各有优缺点,使用哪种方法,主要看你所在的网络使用哪种方法连接互联网。IPTABLES工具适合动态IP地址以及固定公网IP地址方式,同时,还提供了网络地址转换功能,此功能不仅能使使用私有IP地址的内网

5、PC连接上互联网,而且还提供外网能过DNAT功能访问处于内网中的各种网络服务,以用隐藏内容IP网络段,增加了安全性。IPROUTE工具同样适应与IPTABELS相同的两种上网方式,但不能提供NAT功能。)方法四:在/etc/sysconfig/network里添加到末尾GATEWAY=gw-ip或者GATEWAY=gw-devLNEIWOBWING=yaH05IWjiE=lccalhC3t.lccalddrain3GATEWAY=192.155.1.QrDQtlocalhDatrou.-nKeetieIIFroutin-5tableUseDeatinatiDnGatewayGeninaskFl

6、agaMEtricR-e192,.0.0UG00方法五:rootmercyfu#cd/etc/sysconfig/static-routes(没有static-routes的话就手动使用vi编辑建立)rootlocalhaataacanzi-gvi.atHtic-r-Dutes161Vnet/24gw192.18.1.LBH7netnetmask255.2-55.255.0四192.1.1注:netmask就是/24nDtlocBlhD3taysconzig-Sroute-n.KeeheIIF匚outingtableFlagaMetricKezDeatinationGatewaytenmaak

7、0ethOethO|L32.US.5.0US01V132.L68.4.0US0关于配置完路由后的生效的优先级网上未能找到关于配置路由后生效的优先级的文章。所以换了一个角度来思考问题根据linux的开机启动顺序来分析问题:linux的开机步骤:1:加载BIOS(这一步和window相同)Power-on-BIOSPoweronUponpower-on.theprocessorfirstaccessesanaddressthatusuallyresidesinread-onlymemory(ROM(CMOS),Flash).BIOS(BasicInputOutputSystem)BIOSstore

8、shardware-specificsystemresourceinitializationcodeself-testandhardwareidentification-CPU与接口设备的频率启动设备的查找顺序殛盘的大小与类型-系统时间各接口设备的I/O地址CPU诵信的IRQflnternjptRequesl)TheinterfacetoBIOSisaunifcrnnsetoffunctionsknownasinterrupts.Atloadtime.Linuxusestheseiinterrcptstoqueryavailablesysiemr&sources,I_丿当你打开计算机电源,计算

9、机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。在BIOS将系统的控制权交给硬盘第一个扇区之后,就开始由Linux来控制系统了。2:读取MBRBIOS今MBR(bootloader)BIOS检测完了,是否就该加载内核了?由于不同OS的文件系统格式不同,因此须要一个引导装载程序(bootloader)来加载内核文件Boolloader程序安装在哪里?磁盘的第一个sectorf扇区)512B(一股

10、使用前称为MBRfMasterBootRecord)Attheendofself-testandhardwareidentification,thesysteminitializationcode(BIOS)accessestheharddrivecontrollertoreadtheMBR.AfterBIOScompletesitsinitialization,itcopiesthefirst512bytesfromthebootdevicetoaddress0 x7c0Qandjumpstoit.盘上第0磁道第一个扇区被称为MBR,也就是MasterBootRecord,即主引导记录,它的

11、大小是512字节,可里面却存放了预启动信息、分区表信息。可分为两部分:第一部分为引导(PRE-BOOT)区,占了446个字节;第二部分为分区表(PARTITIONPABLE),共有66个字节,记录硬盘的分区信息。预引导区的作用之一是找到标记为活动(ACTIVE)的分区,并将活动分区的引导区读入内存。系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0 x7c00地址所在的物理内存中。其实被复制到物理内存的内容就是BootLoader,而具体到你的电脑,那就是lilo或者grub了。3:启动BootLoader(操作系统内核运彳之前运行的一段小程序)BootLoaderMBRcopiesth

12、ecodefromtheactivebootpartitiontoaddress0 x7c00andbeginsexecutingit.theactivebootpartitioncarhaveabootloaderthat,inturn,loadstheoperatingsystem.自举)LinuxBootloaderGRUB(GrandUnifiedBootloader)-LILOLinuxLOader)ootLoader-grubGRUBisanx86-basedbootloaderthatsusedtoloadLinux, HYPERLINK http:/www.qnu.orq/so

13、ftware/arub www.qnu.orq/software/arubGRUBrecognizesfilesystemsonthebootdrives,andthekernelcanbeloadedbyspecifyingthefilename,drive,andpartitionwherethekernelresides.GRUBcanactasatwo-stagebootloaderStage1isinstalledintheMBRandiscalledbyBIOS.Stage2ispartiallyloadedbyStage1andthenfinishesloadingitselff

14、romthefilesystemBootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。通常,BootLoade:是严重地依赖于硬件而实现的,不同体系结构的系统存在着不同的BootLoader。Linux的引导扇区内容是采用汇编语言编写的程序,其源代码在arch/i386/boot中(不同体系的CPU有其各自的boot目录),有4个程序文件:bootsect.S,引导扇区的主程序,汇编后的代码不超过512字节,即一个扇区的大小setup.S,引

15、导辅助程序edd.S,辅助程序的一部分,用于支持BIOS增强磁盘设备服务video.S,辅助程序的另一部分,用于引导时的屏幕显示BootLoader有若干种,其中Grub、Lilo和spfdisk是常见的Loader,这里以Grub为例来讲解吧。系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。4:加载内核加载内核/boot/grub/menu.lstdefault-!tlmeout-55plashiiiagB=(h11:/etc/rc.d/rc.systn11系统初始化1内核被加载后,第一个运行的程序便是/sbin/init,

16、该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:0:关机1:单用户模式2:无网络支持的多用户模式3:有网络支持的多用户模式4:保留,未使用5:有网络支持有X-Window支持的多用户模式6:重新引导系统,即重启(设置路由的5种方法前5个步骤中都没有涉及到接下来第六个步骤中就涉及到了)6:启动第六步-init进程执行rc.sysinit/sbin/init-/etc/inittab

17、/etc/rc.d/rc-sysinit在加载各项系统服务之前通过/etc/rc.d/rc.sysinit来设置系统环境设置网络环境/etc/syscontig/network设置时区与时间格式/etc/sysconfig/clock加载用户自定义模块/etc/sysconfig/modules/*.modules力口载内核设置/etc/sysctl.conf设置主机名和初始化电源管理以fsuk(filesystemcheck)来检查磁盘文件系统重新以可读写模块挂载系统磁盘将启动相关信息存入文件中在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysini

18、t脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以至到/etc/rc.d中查看一下rc.sysinit文件。线程init的最终完成状态是能够使得一般的用户程序可以正常地被执行,从而真正完成可供应用程序运行的系统环境。它主要进行的操作有:执行函数do_basic_setup(),它会对外部设备进行全面地初始化。构建系统的虚拟文件系统目录树,挂接系统中作为根目录的设备(其具体的文件系统已经在上一步骤中注册)。打开设备/dev/console,并通过函数sys_dup()打开的连接复制

19、两次,使得文件号0,1,2全部指向控制台。这三个文件连接就是通常所说的标准输入”stdin,标准输出stdout和标准出错信息stderr这三个标准I/O通道。准备好以上一切之后,系统开始进入用户层的初始化阶段。内核通过系统调用execve()加载执T子相应的用户层初始化程序,依次尝试加载程序/sbin/initl,/etc/init,/bin/init,和/bin/sh。只要其中有一个程序加载获得成功,那么系统就将开始用户层的初始化,而不会再回到init()函数段中。至此,init()函数结束,Linux内核的引导部分也到此结束。Linux系统执行的第一个用户层文件就是/etc/rc.d/r

20、c.sysinit脚本程序,它做的工作非常多,包括设定path、设定网络配置(/etc/sysconfig/network)即/etc/sysconfig/network为第一优先级。系统在知道自己的启动等级后,显示设置好主机的运行环境,在去启动服务设置网络环境/etc/sysconfig/network,如主机名,网关,IP,DNS等。挂载/proc。此文件是个特殊文件,大小为0,因为它是在内存当中。里面东西最好别删。根据内核在开机时的结果/proc/sys/kernel/modprobe。开始进行周边设备的侦测。载入用户自定义的模块/etc/sysconfig/modules/*。modu

21、les读取/etc/sysctloconf文件对内核进行设定。即/etc.sysctl.conf即/etc/sysctl.conf为第二优先级设定时间,终端字体,硬盘LVM或RAID功能,以fsck进行磁盘检测。将开机状况记录到/var/log/dmesg中。(可以用命令dmesg查看结果)7:启动第七步-启动内核模块依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块8:启动第八步-执行不同运行级别的脚本程序根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。系统初始化阶段还会用到的配置

22、文件/etc/rc.d/*rc.local用户自定史开机启动程序目录:尤与rcO.drc1,drc2.drc3.drc4,drc5.drc6.d目录:/etc/rc.d/init.d/下的服务关于模块:/etc/modprobe.conf/etc/sysconlig/*启动过程中,一些服务的配置文件在/etc/sysconfig下authconfig身份认证clock时钟-i18n文字语言编码支持Network/是否开启网络,网络主机名HOSTNAME199:启动第九步-执行/etc/rcd/rclocal在这里我们可以查询一下这个rc.local的内容就一下子明白了rootlocalhast

23、unt/etc/rc-.d/rc.Loc-a14i/bin./stl才Thiaacriptwillbeex-ecuted*ater*alltheotherinitacripta.中Yqucanputyourowninitializaticnatuzinh.ereyoudon11中wanttodoth-eull3sVstyleinitatu.t口uch/vsr/1crG-k/subsy3/1-qgs1routeadd-net152.1S.2.0/24d.evethOrouteadd-口毗1C2.ltJ.3.0/24gw192.LG8.1.1local就是在一切初始化工作后,Linux留给用户进行

24、个性化的地方。你可以把你想设置和启动的东西放到这里。即/etc/rclocal为第三优先级别v10:启动第十步-执行/bin/login程序,进入登录状态即等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。那么问题来了。剩余两个/etc/sysconfig/network-scripts与/etc.sysconf/static-route所写的route路由的优先级是什么呢。由于第一优先级是/etc/sysconfig/network是一个在/etc.init.d下的脚本EO&tloeaLh&3t亠专cd/etc/init,d/EQCht1OCB1110

25、31init.d#13abrt-ccpgihaltUetwortilaiiagersaslauthdabrtdiitcaciiecleannfs-rdmasingleabrt-oopshttpdntpdsmartdlaGpi.dipfitaJalesntpdatespiGc-vdagentdssh4auditsirqbaLancepostTijcs.ss七mi;bit-availabilitjkduuippppoe-senrernd.ev-postbliuetoothkLllallpsacctvuMware-toolscpusEeedi2-Ivmetaduota_nldvm/are-t&o-l

26、s-thinprijitcroudi2-monitorr4scwiaenoncupsmdm&nitorrdmawiiLbiJiddninas/-dev/null2sl;thennex_logFTTq2021QVLANsupportaYsllsL-l-einkernel*fi.f,rvlaninterfac-es=esac#Addnoninterfiace-specificstatic-routes.if-f/etc/ysconfig/static-routes;thengreprAanyri/et-c/sysconfig/static-route3Iwhilereadignorearg3:do

27、/sbin./routeadd-$arg3dnefi#Addnoninterfiace-specificstaticiarpentriesif-f/亡匸c/ethers;then/sbin/arp-f/etc/ethersfiIFv6hook(postIPv43tar匸)if-x/etc/sysconfij/network-scripts/init.ipv6-globa1;then/etc/sysconfig/network-scripts/initipv6-glofc日13tartpD31fiRunthisagaintnciatchsanyinterfac-e-3pecificactions

28、apply_sysctltouch/var/loek/subsys/netw&rk-nrB$NETWORKDELAYri“/bin/sleep$HETWORKDEZAY.F.Fstop)EUID!=rB0rBexit4Don11shutthenetworkdownifrootisonNFSoranetworkblockdevicemrDDtfs=$awkTif($1“$2=/$3!=roDtfs)print$3;T/proc/mmints)network-scripts和static-routes其实在被network这个脚本调用的。network在执行的时候到network-scripts那

29、么有network-scripts内写的路由生效network在执行的时候到static-routes里面寻找any开头的行,然后执行并生效那么即/etc/sysconfig/network之后就是/etc/sysconfig/network-scripts再之后就是/etc/sysconfig/static-route那么又有一个问题来了。/etc/sysctl.conf的优先级到底在network-scripts和static-route之前还是之后呢?照理来说sysctl.conf内核文件应该最先启动才是。后经过查询/etc/sysctl.conf是一个允许改变正在运行中的Linux系统

30、的接口。并非内核文件。在系统启动的第六步中执行完设置网络的环境之后再是读取/etc.sysctl.config文件对内核进行设定。但是同事提出疑点,既然sysctl.conf是一个与系统内核沟通的文件。那么有关于内核配置的一定是在开启网络服务之前先启动。根据启动顺序:/sbin/init/etc/inittab今/etc/rc.d/rc.sysinitcat查看rc.sysinit内容由于脚本过长利用grep命令在/etc/rc.d/rc.sysinit中果然查找到了信息1ocalliDaE-#grep-nTn-Etwo-rT/-EtGArc;.,d/re日y日zLniLt;:iz-z/etc/ayaconzij/network;th-en!./etc/ayaeDiizig/netwrlIntheorythereshouldbtnamerethan,onem&twrhintErzaGeaGtlye34:*Useth-enetv

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论