kos*_*mol 19 command-line networking router ip
我需要更改从我的 Ubuntu 计算机发送的 TCP/IP 数据包的默认 TTL。我找到了 Windows 的解决方案:
要制作 reg 文件:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\servic es\Tcpip\Parameters]
"DefaultTTL"=dword:00000081
Run Code Online (Sandbox Code Playgroud)要在控制台中执行此命令:
netsh int ipv4 set glob defaultcurhoplimit=129
netsh int ipv6 set glob defaultcurhoplimit=129
Run Code Online (Sandbox Code Playgroud)问题是我应该如何为 Ubuntu 翻译这个解决方案?
Eri*_*lho 27
要更改从 Linux 计算机发送的 TCP/IP 数据包的默认TTL,您可以运行以下命令:
sudo sysctl -w net.ipv4.ip_default_ttl=129
Run Code Online (Sandbox Code Playgroud)
或者:
echo 129 | sudo tee /proc/sys/net/ipv4/ip_default_ttl
Run Code Online (Sandbox Code Playgroud)
或者:
sudo bash -c 'echo 129 > /proc/sys/net/ipv4/ip_default_ttl'
Run Code Online (Sandbox Code Playgroud)
但是您必须在计算机启动时运行这些命令之一。要使此设置在重新启动后保持不变,您可以将以下行附加到文件中/etc/sysctl.conf
:
net.ipv4.ip_default_ttl=129
Run Code Online (Sandbox Code Playgroud)
如果您还想更改 ipv6 的设置,您应该使用ipv6
而不是这样做ipv4
。
对于 IPv6:
这里的另一个答案说,“你应该对 ipv6 做同样的事情”,但这不起作用。IPv6 使用net.ipv6.conf.all.hop_limit
和net.ipv6.conf.default.hop_limit
. 但是,这些值会被特定于接口的名称(例如net.ipv6.conf.eth0.hop_limit
. 要全部更改,请使用:
for N in $(sudo sysctl --all 2>/dev/null |grep -Eo "^net\.ipv6\.conf\.[^\.]+\.hop_limit"); do
sudo sysctl --write "$N=128"
done
Run Code Online (Sandbox Code Playgroud)
其中128
是所需的新值。
要使 IPv4和IPv6 永久保留(重新启动后仍有效):
sudo sysctl --all 2>/dev/null |grep -E -e "^net\.ipv6\.conf\.[^\.]+\.hop_limit" -e "net.ipv4.ip_default_ttl" |sudo tee /etc/sysctl.d/11-custom-ttl-hop.conf
Run Code Online (Sandbox Code Playgroud)