linux网络route

一、网络基础知识:

设备端获取的IP路由表

[[email protected] /] # route –n

Kernel IP routing table

Destination     Gateway        Genmask     Flags  Metric  Ref    Use Iface

default         192.168.1.1     0.0.0.0         UG    0      0        0 apcli0

default         192.168.2.254   0.0.0.0         UG    0      0        0 ra0

10.8.164.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 apcli0

192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 ra0

1        route命令参数

[[email protected] ~]# route [-nee]
[[email protected] ~]# route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]
[[email protected] ~]# route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]
观察的参数:
   -n  :不要使用通讯协定或主机名称,直接使用 IP 或 port number;
   -ee :使用更详细的资讯来显示
增加 (add) 与删除 (del) 路由的相关参数:
   -net    :表示后面接的路由为一个网域;
   -host   :表示后面接的为连接到单部主机的路由;
   netmask :与网域有关,可以设定 netmask 决定网域的大小;
   gw      :gateway 的简写,后续接的是 IP 的数值喔,与 dev 不同;
   dev     :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等

格式:route -n
格式:/sbin/route -n
用于打印路由表,加上-n参数就是在输出的信息中不打印主机名而直接打印ip地址。

2     实例

实例1:显示当前路由

命令:

route

route -n

实例2:添加网关/设置网关

命令:route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

实例3:屏蔽一条路由

命令:route add -net 224.0.0.0 netmask 240.0.0.0 reject

实例4:删除路由记录

命令:

route del -net 224.0.0.0 netmask 240.0.0.0

route del -net 224.0.0.0 netmask 240.0.0.0 reject

实例5:删除和添加设置默认网关

命令:

route del default gw 192.168.120.240

route add default gw 192.168.120.240

3        相关结构体和定义

struct rtentry

{

unsigned long   rt_pad1;

struct sockaddr rt_dst;

struct sockaddr rt_gateway;

struct sockaddr rt_genmask;

unsigned short  rt_flags;

short           rt_pad2;

unsigned long   rt_pad3;

void            *rt_pad4;

short           rt_metric;

char            *rt_dev;

unsigned long   rt_mtu;

#ifndef __KERNEL__

#define rt_mss  rt_mtu

#endif

unsigned long   rt_window;

unsigned short  rt_irtt;

};

#define RTF_UP          0x0001

#define RTF_GATEWAY     0x0002

#define RTF_HOST        0x0004

#define RTF_REINSTATE   0x0008

#define RTF_DYNAMIC     0x0010

#define RTF_MODIFIED    0x0020

#define RTF_MTU         0x0040

#define RTF_MSS         RTF_MTU

#define RTF_WINDOW      0x0080

#define RTF_IRTT        0x0100

#define RTF_REJECT      0x0200

4        对底层内核的控制

int ioctl( int fd, int request, .../* void *arg */ ) 详解

第三个参数总是一个指针,但指针的类型依赖于request 参数。我们可以把和网络相关的请求划分为6 类:

套接口操作

文件操作

接口操作

ARP 高速缓存操作

路由表操作

流系统

下表列出了网络相关ioctl请求的request 参数以及arg 地址必须指向的数据类型:

类别

Request

说明

数据类型

SIOCATMARK

SIOCSPGRP

SIOCGPGRP

是否位于带外标记

设置套接口的进程ID 或进程组ID

获取套接口的进程ID 或进程组ID

int

int

int

FIONBIO

FIOASYNC

FIONREAD

FIOSETOWN

FIOGETOWN

设置/ 清除非阻塞I/O 标志

设置/ 清除信号驱动异步I/O 标志

获取接收缓存区中的字节数

设置文件的进程ID 或进程组ID

获取文件的进程ID 或进程组ID

int

int

int

int

int

SIOCGIFCONF

SIOCSIFADDR

SIOCGIFADDR

SIOCSIFFLAGS

SIOCGIFFLAGS

SIOCSIFDSTADDR

SIOCGIFDSTADDR

SIOCGIFBRDADDR

SIOCSIFBRDADDR

SIOCGIFNETMASK

SIOCSIFNETMASK

SIOCGIFMETRIC

SIOCSIFMETRIC

SIOCGIFMTU

SIOCxxx

获取所有接口的清单

设置接口地址

获取接口地址

设置接口标志

获取接口标志

设置点到点地址

获取点到点地址

获取广播地址

设置广播地址

获取子网掩码

设置子网掩码

获取接口的测度

设置接口的测度

获取接口MTU

(还有很多取决于系统的实现)

struct ifconf

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

ARP

SIOCSARP

SIOCGARP

SIOCDARP

创建/ 修改ARP 表项

获取ARP 表项

删除ARP 表项

struct arpreq

struct arpreq

struct arpreq

SIOCADDRT

SIOCDELRT

增加路径

删除路径

struct rtentry

struct rtentry

I_xxx

   

对于路由操作来说,完成ioctl的函数就是

int ip_rt_ioctl(unsigned int cmd, void *arg),这个函数会根据传入的cmd是SIOCADDRT,还是SIOCDELRT,来决定是创建一个路由表项,还是删除一个路由表项。

时间: 2024-11-26 00:52:51

linux网络route的相关文章

linux网络编程 no route to host 解决方案

linux网络编程 no route to host 解决方案 [整合资料] (2013-05-13 21:38:12) 转载▼ 标签: net iptables it 分类: Linux 参考资料http://1413570.blog.51cto.com/1403570/792861http://2614223.blog.51cto.com/2604223/764757 在vmvare里面配了两台mysql,发现用mysql连不上mysql服务器,用telnet登录mysql的3306端口,发

Linux网络属性配置

Linux网络属性配置 IP(Internet protocol)地址: 网络号+主机号 IPv4:32bits 8bits 8bits 8bits 8bits 0-255 0.0.0.0-255.255.255 IP地址分类: A类: 第一段为网络号,后三段为主机号 网络号 0固定 000 0000-0 111 1111 : 网络数量: 1-127 每个网络中的主机数量:2^24 -2 (全0,全1) 主机全0表示网络本身地址, 全1表示所有主机广播地址地址 默认子网掩码:255.0.0.0

linux网络配置文件及相关命令

##ifcfg:ifconfig,route,netstat ##iprout:ip,ss,nmcli 1)#ifconfig 常用显示或更改网络配置 -a 显示所有接口信息,包括未激活接口 #ifconfig IFACE IP/MASK [up]  立即生效 #ifconfig add addr/prefixlen  添加IPv6地址 更改IP地址: ]# ifconfig eth0 202.204.235.1/24 查看指定网卡信息 ]# ifconfig eth0 2)#route 路由查

Linux网络配置基础及命令使用

网络基础少不了,了解基本概念 MAC:Media Access Conctrol     网卡设备的固定且唯一的硬件地址,用于局域网通讯主机识别            IP:Internet Protocol     由网络号和主机号组成的通讯地址标识,用于界定源和目标主机 DNS:Domain Name System     1.DNS服务器是域名系统,用于解析主机名,实现基于主机名的通讯 2.全球的DNS服务器的域名数据都是相同的,备用DNS的作用是主DNS不可用时(挂掉)顶上,并非在主DN

Linux网络属性配置管理及其相关命令

TCP/IP协议: 网络访问层(Network Access Layer)在TCP/IP参考模型中并没有详细描述,只是指出主机必须使用某种协议与网络相连. 互联网层(Internet Layer)是整个体系结构的关键部分,其功能是使主机可以把分组发往任何网络,并使分组独立地传向目标.这些分组可能经由不同的网络,到达的顺序和发送的顺序也可能不同.高层如果需要顺序收发,那么就必须自行处理对分组的排序.互联网层使用因特网协议(IP,Internet Protocol).TCP/IP参考模型的互联网层和

linux网络配置 初学

linux操作系统常应用服务器,网络功能强大. linux网络属性配置: IP/子网掩码,路由,网关,主机名,DNS服务器 配置IP: 用户空间工具:ifconfig    ip 网络设备服务配置文件:/etc/sysconfig/network-sc ripst 主机名:/etc/resolv.conf 配置IP脚本格式: vim /etc/sysconfig/network-scripts/ifcfg-eth# DEIVCE=eth#                             

Linux网络基本配置

一.Linux网络配置文件 1.  /etc/sysconfig/network-scripts/ifcfg-eth0 文件 在Red Hat系统中,系统网络设备的配置文件保存在/etc/sysconfig/network-scripts目录下,其中文件ifcfg-eth0包含第一块网卡的配置信息,文件ifcfg-eth1包含第二块网卡的配置信息,文件ifcfg-lo包含回路IP地址信息. [[email protected] ~]# ls /etc/sysconfig/network-scri

Linux 网络基本配置

一.Linux网络配置文件 1.  /etc/sysconfig/network-scripts/ifcfg-eth0 文件 在Red Hat系统中,系统网络设备的配置文件保存在/etc/sysconfig/network-scripts目录下,其中文件ifcfg-eth0包含第一块网卡的配置信息,文件ifcfg-eth1包含第二块网卡的配置信息,文件ifcfg-lo包含回路IP地址信息. [[email protected] ~]# ls /etc/sysconfig/network-scri

玩转Linux网络namespace-单机自环测试与策略路由

上周有厂商到公司测试,拿了一块据说很猛的网络处理加速PCIe板卡,拎在手里沉甸甸的很有分量,最让人意淫的是那4个万兆光口,于是我迫不及待的想要一览光口转发时那种看不见的震撼.       可是,仅凭4个光口怎么测试?起码你要有个"对端"啊!任何人应该都不想扛着三台机器在客户们之间跑来跑去测试其转发性能,当然你也不能指望客户那里就一定有你需要的"对端"设备,比如我们公司就没有这种和万兆光口对接的设备,不过赶巧的是,那天还真有一台设备带有万兆光口,但是只是碰巧了.最佳的