所以我注意到,每当我访问 Adobe Flash 网站时,我都会在传出iptables
日志中收到类似这样的条目
netfilter:out dropped: IN= OUT=eth1 SRC=192.168.1.79 DST=91.213.212.48 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=15830 DF PROTO=TCP SPT=46964 DPT=843 WINDOW=14600 RES=0x00 SYN URGP=0
我发现这个端口 843 与 Adobe 的 Socket Policy Server 有关。
1) 既然这些数据包无法通过,Flash 内容如何能够正常加载和播放?(打开这个传出端口有什么好处吗?)
2)策略文件的目的是决定我的家用计算机闪存可以使用哪些套接字,还是询问其主机服务器希望客户端(我)被允许通过哪些套接字连接到 Web 服务器?
答案1
希望这能回答两个问题:
虽然端口 843 是套接字策略服务器的权威信息来源,但播放器仍会在连接端口上请求套接字策略文件。不过,这是一种后备方法,它始终会首先尝试在端口 843 上建立连接:
套接字策略请求流程
Flash Player 会在三个位置针对每个 IP 连接检查套接字策略文件。检查顺序如下:
Flash Player 首先检查端口 843 以确定是否存在套接字主策略文件。如果没有套接字主策略文件或套接字主策略文件具有
site-control
指定 的标签"all"
,则 Flash Player 将继续执行下一步。如果标签site-control
的值为"none"
,则该过程停止,并且套接字被拒绝连接。如果
ActionScript Security.loadPolicyFile()
SWF 文件中存在命令,则 Flash Player 运行时会检查该位置。loadPolicyFile()
只有在检查了端口 843 上的主策略文件是否有权限确认其他策略文件后,Flash Player 才会检查目标。如果开发人员未指定命令loadPolicyFile()
,则 Flash Player 将检查连接的目标端口。连接的目标端口是 Flash Player 进行的最后一项检查。仅当套接字主策略文件允许 Flash Player 检查其他位置时,才会执行此检查。如果 Flash Player 仍然找不到授予权限的策略文件,则套接字连接将被拒绝。
套接字策略文件的目的是让管理员将 Flash Player 可以通过 TCP 连接连接的主机列入白名单/黑名单。
参考:设置套接字策略文件服务器