当启用 ufw 时,我的一台运行 Ubuntu 13.04 的 Proxmox VM 将不会接受传入的跟踪路由。
给 ufw 什么命令来允许传入的 traceroute(6)?
启用 ufw 后,系统日志中会显示以下内容:
50:15:15:aa:ae:8d:7d:e4:7a:97:08:00 SRC=79.236.233.97 DST=78.46.101.252 LEN=52 TOS=0x00 PREC=0x00 TTL=1 ID=33400 PROTO=UDP SPT=63757 DPT=33466 LEN=32
Nov 4 16:20:36 web kernel: [8078158.260409] [UFW BLOCK] IN=eth0 OUT= MAC=00:50:56:15:15:aa:ae:8d:7d:e4:7a:97:08:00 SRC=79.236.233.97 DST=78.46.101.252 LEN=52 TOS=0x00 PREC=0x00 TTL=1 ID=33401 PROTO=UDP SPT=63757 DPT=33467 LEN=32
Nov 4 16:20:41 web kernel: [8078163.262626] [UFW BLOCK] IN=eth0 OUT= MAC=00:50:56:15:15:aa:ae:8d:7d:e4:7a:97:08:00 SRC=79.236.233.97 DST=78.46.101.252 LEN=52 TOS=0x00 PREC=0x00 TTL=2 ID=33402 PROTO=UDP SPT=63757 DPT=33468 LEN=32
Nov 4 16:20:46 web kernel: [8078168.262927] [UFW BLOCK] IN=eth0 OUT= MAC=00:50:56:15:15:aa:ae:8d:7d:e4:7a:97:08:00 SRC=79.236.233.97 DST=78.46.101.252 LEN=52 TOS=0x00 PREC=0x00 TTL=2 ID=33403 PROTO=UDP SPT=63757 DPT=33469 LEN=32
Nov 4 16:20:51 web kernel: [8078173.260521] [UFW BLOCK] IN=eth0 OUT= MAC=00:50:56:15:15:aa:ae:8d:7d:e4:7a:97:08:00 SRC=79.236.233.97 DST=78.46.101.252 LEN=52 TOS=0x00 PREC=0x00 TTL=2 ID=33404 PROTO=UDP SPT=63757 DPT=33470 LEN=32
并且跟踪路由刚在 Proxmox 主机之后启动就结束。
谢谢
托拜厄斯·廷佩
答案1
Traceroute 使用 ICMP 数据包,因此您需要允许 ICMP 数据包。
ufw 不允许通过命令行界面命令指定 icmp 规则,因此您需要编辑规则文件
但是 ufw 默认允许某些 icmp 流量,包括 icmp echo reply,并且这已在 /etc/ufw/before.rules 中默认配置:
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
如果您的主机没有响应 ping,请查看此文件以确保上述行存在,如果这不起作用,请查看 ping 主机及其之间的任何防火墙。
要允许跟踪路由,您需要编辑 /etc/ufw/before.rules
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
要查看编辑文件之前设置的内容,请尝试以下命令
sudo grep 'icmp' /etc/ufw/before.rules
笔记:
Traceroute 向目标主机发送一系列三个 Internet 控制消息协议 (ICMP) 回显请求数据包。生存时间 (TTL) 值(也称为跳跃限制)用于确定到达目标时要经过的中间路由器。