阅读sysctl
文档,我发现以下内容:
use_tempaddr - INTEGER
Preference for Privacy Extensions (RFC3041).
<= 0 : disable Privacy Extensions
== 1 : enable Privacy Extensions, but prefer public
addresses over temporary addresses.
> 1 : enable Privacy Extensions and prefer temporary
addresses over public addresses.
Default: 0 (for most devices)
-1 (for point-to-point devices and loopback devices)
因此,当我将use_tempaddr
参数设置为时0
,隐私扩展被禁用,这意味着不使用临时地址。设置为 时2
,将启用隐私扩展,因此使用临时地址。但是,当我设置use_tempaddr
为1
启用隐私扩展但不使用临时地址时...那么,当只有其中两个选项有意义时,拥有这三个选项的目的是什么?use_tempaddr
设置为 的用例是什么1
?
答案1
将其设置为 1 是支持某些应用程序喜欢不断变化的地址而其他应用程序喜欢长期存在的地址的情况的一种方法。
例如,如果您在同一台笔记本电脑上使用 SSH、RDP 客户端和 Web 浏览器,您可能需要 RDP 和 SSH 的长期地址(因为这两者都可以使用保持打开状态数小时甚至数天的 TCP 连接)以及网络浏览器不断变化的地址(由于跟踪问题)。
有多种方法可以支持这种情况。其中之一是将 use_tempaddr 设置为 1 并编写特殊代码来在 Web 浏览器中选择源地址。 (我见过这样的代码,我想是在一个android应用程序中。我对它感到困惑。还不明白这一点。)
还有其他方法可以实现相同的目标。但如果您认为内核应该让用户空间维护者决定哪种方式是最好的,那么内核允许 tempaddr=1 是有意义的。