Ping命令出现 Packet filtered

本文详细解析了在Linux环境下遇到Ping不通外网问题的常见原因及解决方法,包括DNS服务器设置、网络配置检查及特殊网络环境下的应对策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在服务器上执行ping命令,想看看能不能连接外网,然后就ping了一下www.baidu.com,遇到了以下两个问题:

1. unkonw hostname…

这个问题很简单,DNS解析不正常,也就是没有设置DNS服务器地址或DNS服务器连不上。
有些童鞋可以直接ping 百度的ip地址,

1.1 如果能够ping通

则百分之百是DNS服务器的问题,则相应的解决方法就是:
注意:本解决方法中的命令配置文件等都是针对Ubuntu系统,其他Linux系统类似。
打开网络配置文件,执行如下命令,当然需要权限:

sudo vi /etc/network/interfaces

文件最后添加中添加如下一行:
dns-nameservers xxx.xxx.xxx.xxx
/etc/network/interfaces文件的内容可能如下:

auto lo
iface lo inet loopback
auto enp3s0f0
iface enp3s0f0 inet static
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
dns-nameservers xxx.xxx.xxx.xxx

1.2 如果ping不通

则有这么两种情况:

1.2.1 网络设置有问题

排查顺序应该是网关,IP地址,子网掩码等是否设置正确,有时候这些信息可以自动获取,但是针对另外一些特殊网络,比如校园网,可能就需要想网络管理中心申请IP,DNS等信息来解决,

1.2.2 校园网,公司内网等特殊网络环境问题

在1.1中网络设置没有问题的情况下还ping不通,很有可能某些工具被设置了,比如ping命令,解决方法见ping命令出现Packet fitered小节。

2. ping命令出现 Packet filtered

出现这种情况的原因可能就是因为该网络对ping进行设置,导致ping不通的问题,这种情况可能出现在公司内网,校园网等特殊网络中。
解决方法:
首先设置DNS服务器,保证域名正常解析,此时就已经可以连接外网了;
如何测试是否能够连接外网呢?方法如下:
执行如下命令,结果如下则表示网络已经正常!

wget www.baidu.com
--2019-01-09 15:17:24--  http://www.baidu.com/
Resolving www.baidu.com (www.baidu.com)... 119.75.217.26, 119.75.217.109
Connecting to www.baidu.com (www.baidu.com)|119.75.217.26|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2381 (2.3K) [text/html]
Saving to: ‘index.html’

index.html                 100%[======================================>]   2.33K  --.-KB/s    in 0s      

2019-01-09 15:17:24 (424 MB/s) - ‘index.html’ saved [2381/2381]

希望可以解决你的问题,GOOD LUCK!! 点个赞吧小老弟

### 使用TCP、ARP、ICMP、UDP协议进行服务扫描的方法 #### 利用TCP协议进行服务扫描 TCP协议可以通过发送SYN请求并等待响应来进行端口和服务状态的探测。当接收到SYN+ACK响应时,表明该端口处于开放状态;而如果接收到RST(重置)包,则说明此端口被关闭。 ```python from scapy.all import * def tcp_scan(target_ip, port): src_port = RandShort() conf.verb = 0 syn_packet = sr1(IP(dst=target_ip)/TCP(sport=src_port,dport=port,flags="S"), timeout=1) if syn_packet is None: print(f"{target_ip}:{port} is filtered (no response).") elif syn_packet.haslayer(TCP) and syn_packet.getlayer(TCP).flags == "SA": rst_reset = send(IP(dst=target_ip)/TCP(sport=src_port,dport=port,flags='R')) print(f"{target_ip}:{port} is open.") elif syn_packet.haslayer(TCP) and syn_packet.getlayer(TCP).flags == "RA": print(f"{target_ip}:{port} is closed.") tcp_scan("example.com", 80)[^5] ``` #### 基于ARP协议发现局域网内活跃主机 ARP协议用于解析MAC地址,在同一物理网络内的设备之间通信前需先获取对方硬件地址。通过广播ARP请求消息给整个子网中的所有节点,并监听回复即可得知哪些机器在线。 ```bash arp-scan --localnet ``` 上述命令能够快速枚举出连接在同一交换机下的计算机列表及其对应的MAC信息[^1]。 #### 运用ICMP回显请求检测远程服务器可达性 ICMP主要用于错误报告和查询功能,其中最常用的就是ping操作——即向指定的目标发出ECHO_REQUEST询问其是否存在。对于防火墙严格限制访问的情况,可能无法得到确切的结果,但对于初步测试连通性和存活状况非常有用。 ```bash ping example.com ``` 此外还有`traceroute`(Linux/macOS下叫作`tracepath`)工具利用了TTL字段逐步增加的方式追踪路由路径直至目的地,这同样依赖于ICMP时间超时报文来反馈中间跳数的信息[^2]。 #### 实施UDP端口扫描识别未授权应用暴露情况 由于UDP本身不具备像TCP那样的连接机制,因此直接尝试发送数据到特定端口号上,看是否有任何类型的应答返回就成为了一种可行的办法。需要注意的是很多应用程序不会主动回应未知来源的消息,所以即使没有任何反应也不能完全证明那个端口就是封闭着的状态。 ```python import socket def udp_scan(host, port): try: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.settimeout(2) message = b"Hello" sock.sendto(message,(host,port)) data,address = sock.recvfrom(1024) print(f"Received {data.decode()} from {address}") except Exception as e: print(f"No response received on UDP/{port}. Error: {str(e)}") udp_scan('example.com', 53)[^3] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王大阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值