假设有两块卡连接上了网络,分别是ppp0和ppp1并都将自己的ip设置成了默认网关,此时只有ppp1的设置有效,系统无法通过ppp0访问,ppp0只能接受来自网络的访问,此时要为ppp0设置一个自定义的路由表,让ppp0的数据通过此路由出去,详细步骤如下:
1. 添加一条自定义的路由表
ip ro add default via x.x.x.x table 200
作用:这里只是加了一条默认路由到一个自定义的路由表200中,最大数值是255,但是你不要用255,因为那是系统默认用了..你用200以下就可以.具体的路由表在/etc/iproute2/rt_tables中
查看刚才建立的路由表可以用ip ro ls table 200
[root@localhost root]# ip ro ls table 200
default via 61.132.43.134 dev eth1
看到了吗?虽然我没有指定dev是什么.但是系统自动分配了一个eth1给这个路由表,因为eth0已经用在主路由表中了..
这也说明了,的确不能在同一个路由表中由相同的网关..虽然可以设置,但是具体没什么作用.
然后我们要用一个规则把,匹配的数据包引导到刚刚建立的路由表中..
2. ip ru add from x.x.x.x table 200
这里ru是rule的缩写.from是一个匹配的动作.就是所源地址是x.x.x.x的包..请走自定义路由表200的设置..
查看一下
代码: [复制到剪贴板]
[root@localhost root]# ip ru ls
0: from all lookup local
32765: from x.x.x.x lookup 200
32766: from all lookup main
32767: from all lookup 253
3、设置网络
/etc/sysconfig/network-scripts/ifcfg-eth0
Service network restart
4、Alignment trap错误处理
· 在基于arm的linux系统中,当运行某个应用程序时,可能会出现Alignment trap的错误。以下是出现的一个典型提示:
Alignment trap: standalone-640- (1357) PC=0x00094ab8 Instr=0xe5810000
Address=0x40e22532 FSR 0x813 Bus error
这主要是应用程序里的数据结构没有按照4字节对齐。虽然arm也支持2字节的Thumb指令,但是必须进入到该工作模式下才生效。不过linux下有参数可以设置,使得arm能够支持2字节对齐。不过此时arm是通过异常处理,切换到Thumb状态下进行工作,运行完成后又需要切换到正常的4字节模式。因此执行程序时,会比较慢,影响性能。所以在写arm的linux程序时,最好遵守4字节模式。Linux下的设置命令为:echo 2 > /proc/cpu/alignment