一、网关与下一跳的区别

         1 和2分别是路由,而A和B是网关

那么默认情况下2路由想要和B网络通信路线是:2-A-B,也就是A网关在2路由被默认为了下一跳地址。

但是假如我们设计中不希望2和A直接通信,也是可以的,那么我们将2路由的下一跳设置为1路由的地址,则2和B的通信路线将会是:2-1-A-B。

所以,默认下一跳是网关是一种便捷的逻辑,但是实际上下一跳不一定是网关

二、linux系统打开路由转发功能

**永久配置 **

  1. 将文件/etc/sysctl.conf里面的net.ipv4.ip_forward=1的注释去除

  2. sysctl -p //让上述配置生效

三、网络和主机排查一般性步骤

  1. 如果是网络不通,一般需要查看 是否接入到链路 是否启用了相应的网卡** 本地网络是否连接 DNS故障 能否路由到目标主机 远程端口是否开放**
  2. 如果是网络速度慢,一般有以下几个方式定位问题源: DNS是否是问题的源头 查看路由过程中哪些节点是瓶颈 查看带宽的使用情况

位问题: 1.物理链路是否连通 即检查网卡与网络是否物理连通,网线是否插好且连接可用,很多时候不能立刻到机房看一下,可用用命令查看。 #ethtool eth0 例如:使用ethtool 查看 eth0 的物理连接 其中Speed: 1000Mb/s 显示了当前网卡的速度;Duplex: Full显示了当前网络支持全双工;Link detected: yes 显示当前网卡和网络的物理连接正常。通常网速和全/半双工状态是主机和网络协议商自动协商的,例如这里第8行的 auto-negotiation。如果发现Duplex行的双工被设置成了Half,可以手动将其改为全双工网络: #ethtool -s eth0 autoneg off duplex full 2. 网卡是否正常启用 一般网络物理连接故障的情况并不多见,当排除物理连接上的问题后,需要进一步查看网卡的工作状态。 例如:使用ifconfig命令检查网卡eth1状态 输出的信息中,第二行显示了对该网卡的配置,包括IP,子网掩码等,这里可以检查是否出现错配,如果这一行显示不正确,那一定是网卡没有正确配置开启。 • 基于Debian的Linux的(永久)网络配置文件在/etc/network/interfaces, • 基于Red Hat的Linux的(永久)网络配置文件在/etc/sysconfig/network_scripts/ifcfg-<interface> 3. 是否正确设置网关 如果网卡已经正常启动,需要确认目标网络接口是否正确配置网关,同时主机和网关之间的连接没有问题,通过route命令和ping命令结合完成这一阶段的排查。 例如使用route命令查看内核路由表。 #route -n route -n 以IP而不是主机名的形式显示网关等信息,一方面更快,另一方面不涉及DNS,通过route命令查看内核路由,检验具体的网卡是否连接到目标网路的路由,之后就可以尝试ping 网关,排查与网关之间的连接。 如果无法ping通网关,可能是网关限制了ICMP数据包,或者交换机设置的问题。

  1. DNS工作状况 有些网络问题是DNS故障或配置不当造成的,nslookup和dig命令能够用来排查DNS问题。 如果这里nslookup命令无法解析目标域名,则很有可能是DNS配置不当,到**/etc/resolv.conf**文件中查看是否存在域名服务器的配置: 及时生效的DNS配置——/etc/resolv.conf文件。 永久生效的DNS配置——/etc/networks/interfaces文件 如果我们的DNS服务器在一个子网内,而无法ping通它,这个DNS服务器很可能已经宕机。

4.1. 使用nmap工具检测端口开放情况 nmap -p 22 220.181.111.188 同样的服务器,使用nmap检测,观察到第7行,说明实际上该服务器是启用了22端口的,但是防火墙过滤了数据包,如果端口真的没有启用,那么第7行的STATE将显示closed,而不是filtered。开放的端口其状态将是open。这时就可以了解,端口无法连接的原因是端口关闭还是防火墙过滤了。 端口开启的命令是:nc -lp 23 &(打开23端口,即telnet)

  1. 本机查看监听端口 如果要在本地查看某个端口是否开放,可以使用如下命令:

netstat -lnp | grep PORT 其中,参数:

• -l,显示正在监听的套接字 • -p,显示套接字所属的进程ID和进程名 • -n,以数字形式显示地址 其中第一列是套接字通信协议,第2列和第3列显示的是接收和发送队列,第4列是主机监听的本地地址,反映了该套接字监听的网络;第6列显示当前套接字的状态,最后一列显示打开端口的进程。

  1. 查看防火墙规则 使用# iptables –L命令查看当前主机的防火墙。 使用# iptables –F命令清理当前主机的防火墙规则。

** 7. 网络较慢的排查。** 网络较慢的排查事实上比网络不通的排查更有挑战,因为很多时候可能是运营商、DNS等的原因,这些故障常常不在我们的控制范围之内,只能收集证据向其反馈或对其进行投诉。 如果不想受到DNS的影响,上面提到的命令可以添加 -n 选项,-n选项可以阻止试图将IP解析为主机名,从而绕过DNS。 (1.)mtr 不仅可以查看路由的正确性,还可以查看网络中每一跳的延时,从而定位延时最高的网络区段。

(2)iftop iftop命令类似于top命令,查看哪些网络连接占用的带宽较多。 该命令按照带宽占用高低排序,可以确定那些占用带宽的网络连接, 最上方的一行刻度是整个网络的带宽比例,下面第1列是源IP,第2列是目标IP,箭头表示了二者之间是否在传输数据,以及传输的方向。最后三列分别是2s、10s、40s时两个主机之间的数据传输速率。 最下方的TX、RX分别代表发送、接收数据的统计,TOTAL则是数据传输总量。 • 使用 -n 选项直接显示连接的IP,例11中看到的则是解析成域名后的结果。 • -i 选项可以指定要查看的网卡,默认情况下,iftop会显示自己找到的第一个网卡; • 在进入iftop的非交互界面后,按 p 键可以打开或关闭显示端口,按 s 键可以显示或隐藏源主机,而按 d 键则可以显示或隐藏目标主机。

(3)tcpdump 当一切排查手段都无济于事时仍然不能找到网络速度慢、丢包严重等原因时,往往祭出杀手锏——抓包。抓包的最佳手段是在通信的双方同时抓取,这样可以同时检验发出的数据包和收到的数据包,tcpdump是常用的抓包工具。 tcpdump -n port N //只捕捉特定端口的流量 tcpdump -n port N1 or port N2 //捕获多个端口的流量 tcpdump -w output.pcap //数据包转储,将原始数据包保留到output.pcap tcpdump -C 10 -w output.pcap //限制每个转储文件的上限,达到上限后将文件分卷(以MB为单位) tcpdump -C 10 -W 5 -w output.pcap //不仅限制每个卷的上限,而且限制卷的总数