它是对源IP和目标IP进行哈希处理(端口不参与哈希的计算)计算选路。配置的命令如下:
weight代表权重
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 效果和使用虚拟机是一样的,关键是知道有这个功能,知道怎么用就差不多了。
1、使用root用户登录服务器,确定配置网卡。通常有几种情况:(1) 如果是修改服务器IP。这种情况下服务器上已经配置了IP。执行ifconfig查看IP配置在哪个网卡上。
(2) 如果是新装系统的新服务器并且只有一张网卡。那就直接配吧。比如云服务器,通常为eth0。
(3)如果是新装系统多个网卡呢,可以使用ethtool命令查找可用的网卡。ethtool ethX | grep 'Link detected',查看链接状态为Link detected: yes。如果不是很确定,通过配置多试试问题也不大。
2、进入/etc/sysconfig/netwrok目录,这里假设是eth0网卡,修改ifcfg-eth0文件。设置内容如下:
BOOTPROTO='static'
IPADDR='192.168.0.1'
NETMASK='255.255.255.0'
STARTMODE='auto'
3、配置默认网关,通过修改配置文件/etc/sysconfig/netwrok/routes实现,添加内容如下
default 192.168.1.1 - -
4、执行service network restart重启网卡服务。使上述修改生效。
Linux:~ # service network restart
5、ifconfig -a查看eth0网卡的IP,如果正常,继续下一步,否则检查网卡是否正常
6、测试。从本地ping IP或者登录系统,成功则配置完成。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)