我在比特币源代码树中找到了以下代码片段,该代码片段被定义为bash脚本的一部分,用于控制端口8333上的出站连接。有人可以解释一下命令的确切工作情况。
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 8333 ! -d ${LOCALNET} -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 8333 ! -d ${LOCALNET} -j MARK --set-mark 0x2
源文件:https://github.com/bitcoin/bitcoin/blob/ad57b310bac44a7e470cf66276421f2bbc61b1f0/contrib/qos/tc.sh
答案 0 :(得分:0)
让我们打破这一点。
-t mangle
:正在更改的表格-A OUTPUT
:将此规则附加到OUTPUT链-p tcp
:protocol is tcp -m tcp
:加载TCP模块(这会自动发生-p,因此这是多余的)--(d|s)port 8333
:目的地|源端口是8333! -d $ {LOCALNET}:目标不在本地网络中-j MARK
:跳转到MARK表(--set-mark所需)--set-mark 0x2
:在数据包上设置一个标记,由其他内容处理此处的高级目标是在数据包上设置0x2标记。根据对GitHub的评论,该标记用于限制数据包。