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”是否已在内核中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)