linux路由

linux路由,第1张

Linux 路由需要记住两点:跨网段通信需要经过路由;Linux 本身就是一台路由器。

开启路由功能

$ cat/proc/sys/net/ipv4/ip_forward

如果值为 1,表示开启了路由功能,如未开启,需要在 /etc/sysctl.conf 中设置:

net.ipv4.ip_forward=1

然后执行 sysctl -p 使之生效。

实践

创建两个网络 namespace:

$ ip netns add ns1

$ ip netns add ns2

创建两对 veth-pair,一端分别挂在两个 namespace 中:

$iplinkadd v1type veth peer name v1_r$iplinkadd v2type veth peer name v2_r$iplink setv1netns ns1$iplink setv2netns ns2

分别给两对 veth-pair 端点配上 IP 并启用:

$ ip a a 10.10.10.1/24 dev v1_r$ ip l s v1_r up$ ip a a 10.10.20.1/24 dev v2_r$ ip l s v2_r up$ ip netnsexecns1 ip a a 10.10.10.2/24 dev v1$ ip netnsexecns1 ip l s v1 up$ ip netnsexecns2 ip a a 10.10.20.2/24 dev v2$ ip netnsexecns2 ip l s v2 up

测试:

$ ip netnsexecns1 ping 10.10.20.2

发现不通。

添加路由

查看路由:

$ ip netnsexecns1 route -nKernel IP routing tableDestination    Gateway        Genmask        Flags Metric Ref    Use Iface10.10.10.0      0.0.0.0        255.255.255.0  U    0      0        0 v1

只有一条直连路由,没有去往 10.10.20.0/24 网段的路由,怎么通?那就给它配一条:

$ ip netnsexecns1 route add -net 10.10.20.0 netmask 255.255.255.0 gw 10.10.10.1$ ip netnsexecns1 route -n

同理也给 ns2 配上去往 10.10.10.0/24 网段的路由:

$ ip netnsexecns2 route add -net 10.10.10.0 netmask 255.255.255.0 gw 10.10.20.1$ ip netnsexecns2 route -n

再次测试,发现可以 ping 通了:

$ ip netnsexecns1 ping 10.10.20.2

总结

Linux 本身是一台路由器。

上面的实验使用 namespace 效果和使用虚拟机是一样的,关键是知道有这个功能,知道怎么用就差不多了。

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

linux下添加路由的方法:

一:使用 route 命令添加

使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,方法:

二:在linux下设置永久路由的方法:

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

方法:

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

方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev

3./etc/sysconfig/static-router :

linux 添加永久静态路由

Linux 的路由功能:

# route 命令添加的路由,机器重启或者网卡重启后就没掉了,在linux下设置永久路由的方法:

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

开启 IP 转发:


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

原文地址: http://outofmemory.cn/yw/6262681.html

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

发表评论

登录后才能评论

评论列表(0条)

保存