使用特定的网关接口或者源IP地址进行Ping

时间:2020-01-09 10:43:02  来源:igfitidea点击:

如何ping通网关的特定接口?
如何使用特定的源IP地址ping?

说明:ping命令确定网络目标是否可访问。

ping是获取有关包括LAN和Internet在内的计算机信息的有用命令行工具之一。
可以使用ping命令查找主机是否可以访问特定的IP地址。

ping的另一种用法是找出任意两个网络路由器或者其他网络设备(例如交换机,防火墙,网站,主机和其他东西)之间的距离(往返)。

本教程将学习使用特定网关接口的ping和使用特定源IP地址的ping。

如何使用特定的网关接口或者源IP地址ping

最初,类Unix系统具有ping命令。
但是,现在可以对所有领先的操作系统(例如Microsoft Windows等)使用ping版本。
这里讨论的版本仅在Linux,FreeBSD和类似Unix的系统上进行过测试。

ping命令通过将ICMP数据包发送到目标IP地址并侦听返回的数据包来工作。
语法为:

ping ip-address
ping domain-name
ping www.theitroad.local
ping 192.168.1.254
ping [options] destination
ping [options] [IP|hostname]

将-c选项传递给ping命令以仅发送数据包数量。
例如,仅向IP地址8.8.8.8发送四个数据包:

ping -c 4 8.8.8.8

使用特定的网关接口Ping

要查找类Unix或者* BSD系统上的接口名称,请运行ifconfig命令:

ifconfig
ifconfig -a

Linux用户使用ip命令或者ifconfig命令:

ip a

您需要按如下所示传递-I选项:

ping -I interface destination
ping -I eth0 www.theitroad.local
ping -I tun0 1.1.1.1
ping -I br0 8.8.8.8
##################################################
### for bsd ping use interface IP address ########
### for e.g. vio0 interface has 192.168.122.124 ##
##################################################
ping -c4 -I 192.168.122.124 www.theitroad.local
ping -c4 -I tun0 www.theitroad.local

使用特定的源IP地址进行Ping

可以设置套接字sndbuf。
语法为:

ping -S ip dest
ping -S 192.168.1.24 www.theitroad.local
ping -c 4 -S 10.207.0.54 1.1.1.1

使用特定的源IP地址进行更严格的Ping操作

这是一个Shell脚本,它使用在基于FreeBSD的防火墙/路由器上配置的三个wan接口ping给定的域/IP地址。
该脚本用于循环和ping命令:

#!/bin/sh
# Purpose : Linux ping from specific source ip address.
# Ping three differnet ISPs and find out the fastest 
# ping round time for domain www.theitroad.local.
# -------------------------------------------------
# Tested on FreeBSD and Linux only.
# -------------------------------------------------
# License: GPL version 3.0
# Author:  {https://www.theitroad.local}
# -------------------------------------------------
d="www.theitroad.local" # set me 
 
#
# my three ISPs A, B, and C with their interfaces IPv4 
#
for e in A:192.168.1.254 B:192.168.0.1 C:10.207.0.54
do	
	IFS=':'
	set -- $e
	isp=""
	ipv4=""
	echo "*********************************"
	echo "Ping "$isp" ISP using $ipv4 IP..."
	echo "*********************************"
	ping -c 4 -S${ipv4} "${d}"
done

似乎ISP A提供了更好的选择,因为完成一次完整的往返旅行所需的时间更少。