Linux下Route 路由指令使用详解

Linux下Route 路由指令使用详解,第1张

linux route命令 用于显示和 *** 作IP路由表

要实现 两个不同子网之间的通信 ,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。

在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址 设置为 Linux机器的默认路由

格式:

[root@linux ~]# route [-nee]

[root@linux ~]# route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]

[root@linux ~]# route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]

1、 查看相关参数:

-n :不要使用通讯协定或主机名称,直接使用 IP 或 port number;

-ee :使用更详细的资讯来显示

2、增加 (add) 、删除 (del) 路由的相关参数:

-net :表示后面接的路由为一个网域;

-host :表示后面接的为连接到单部主机的路由;

netmask :与网域有关,可以设定 netmask 决定网域的大小;

gw :gateway 的简写,后续接的是 IP 的数值喔,与 dev 不同;

dev :如果只是要指定由那一块网卡连线出去,则使用这个设定,后面接 eth0 等

设置默认路由

格式:route add default gw {IP-ADDRESS} {INTERFACE-NAME}

其中,

参数{IP-ADDRESS): 用于指定路由器(网关)的IP地址;

参数{INTERFACE-NAME}: 用于指定接口名称,如eth0。使用/sbin/ifconfig -a可以显示所有接口信息。

例:

添加到指定网络的路由规则

格式:route add -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}

其中

参数{NETWORK-ADDRESS}: 用于指定网络地址

参数{NETMASK}: 用于指定子网掩码

参数{INTERFACE-NAME}: 用于指定接口名称,如eth0。

例:

屏蔽一条路由,设置到指定网络为不可达 ,避免在连接到这个网络的地址时程序过长时间的等待

格式:route add -net {NETWORK-ADDRESS} netmask {NETMASK} reject

例:

删除路由设置 ,参数指定的方式与route add相似。

格式:route del -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}

格式:route del -net {NETWORK-ADDRESS} netmask {NETMASK} reject

例:

注意的是 ,直接在命令行下执行route命令来添加路由, 不会永久保存 ,当网卡重启或者机器重启之后,该路由就 失效 了; 要想永久保存 ,有如下方法:

1. 在/etc/rc.local里添加

2. 在/etc/sysconfig/network里添加到末尾

3. /etc/sysconfig/static-router :

any net x.x.x.x/24 gw y.y.y.y

[root@localhost root]# cat /etc/sysconfig/network-scripts/ifup-routes

#! /bin/bash

#

# adds static routes which go through device $1

if [ -z "$1" ]then

echo $"usage: ifup-routes <net-device>"

exit 1

fi

# Older format

if [ -f "/etc/sysconfig/network-scripts/route-$1" ]then

while read linedo

/sbin/ip route add $line

done <"/etc/sysconfig/network-scripts/route-$1"

fi

if [ -n "$2" -a "$2" != "$1" ]then

if [ -f "/etc/sysconfig/network-scripts/route-$2" ]then

while read linedo

/sbin/ip route add $line

done <"/etc/sysconfig/network-scripts/route-$2"

fi

fi

# Red Hat network configuration format

CONFIG="/etc/sysconfig/networking/devices/$1.route"

[ -f $CONFIG ] || CONFIG="/etc/sysconfig/networking/devices/$2.route"

[ -f $CONFIG ] || exit 0

. $CONFIG

routenum=0

while [ "x$(eval echo '$'ADDRESS$routenum)x" != "xx" ]do

eval `ipcalc -p $(eval echo '$'ADDRESS$routenum) $(eval echo '$'NETMASK$routenum)`

line="$(eval echo '$'ADDRESS$routenum)/$PREFIX"

if [ "x$(eval echo '$'GATEWAY$routenum)x" != "xx" ]then

line="$line via $(eval echo '$'GATEWAY$routenum)"

fi

line="$line dev $1"

/sbin/ip route add $line

routenum=$(($routenum+1))

done

1、下载一个Linux内核源代码文件,将它保存到虚拟机上新安装的系统中去。并解压到/usr/src目录。

2、修改/usr/src/linux-2.6.36/kernel/sys.c文件,在文件末尾增加一个系统调用函数。自行编写一个简单的程序即可,只为测试用。

3、修改/usr/src/linux-2.6.36/arch/x86/kernel/syscall_table_32.S,为新添加的程序配置系统调用号。

4、在/usr/src/linux-2.6.36/arch/x86/include/asm/unistd_32.h中配置系统调用表。

5、首先配置编译信息,使其生成适合当前机器的Makefile,输入make oldconf ig。

6、按回车键进入我们编译的目标内核中,用关键词搜索查看新增加的系统调用“my call”是否已在内核中。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11720626.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存