職場で外部ネットワークと通信する状況では、TTLがゼロに減少し、部分的なパケット損失が発生することがわかりました。ただし、一部のトラフィックが到着し、問題は一部の接続の障害としてのみ表示されます。根本原因は現在知られていません。問題のオペレーティングシステムは私たちの側のLinuxです。不明ですが、外部ネットワークのLinuxである可能性が高いです。私の同僚の一人が、このルートで使用されているプロキシボックスに入って来るすべてのパケットのttlを書き換えることを提案しました。これは私にとって悪い考えのようですが、理由はわかりません。 TTL書き換えについての洞察力を持つ人はいますか?
答え1
婦人声明
TTLの目的は、無限ループを防止し、特定の時間、つまりTTLが0に達したときにループトラフィックを破棄することを可能にすることです。 TTLをオーバーライドすると、このメカニズムがトリガーされず、ノードを追加するのに十分なトラフィックが注入されたときに接続されたノードがシャットダウンする可能性があります。より多くのループ。
通常、ネットワーク内のさまざまなポイントでトラフィックをキャプチャして、パケットとそのTTLで何が起こっているかを確認することをお勧めします。特に、TTL値が減少しない限り、同じパケットが同じポイントに複数回現れることを確認することをお勧めします。ループ。トラフィックの多いネットワークでは難しいようですが、TTL <= 5のパケットなど、キャプチャが制限される可能性があります。
iptables
とにかく、ここには首をぶら下げるのに十分なロープがあります。 Linuxには、さまざまなネットワーク層で動作してTTL値をオーバーライドするさまざまなツールがあります。含むtc
、iptables
そしてnftables
。iptables
「増分」タスクを提供するので、良い値が何であるかを推測する必要がないので、これを使いましょう。以下は、ロープにぶら下がっている人の関連する引用です。
TTLフィールドを設定または増やすことは非常に危険な可能性があるため、どのような場合でも避けるべきです。
1ずつインクリメントすると、パケットをルーティングするときに実行される自動1リダクションがキャンセルされます(リンクされたマンページで、increment by moreまたはuseなどの他のオプションを選択できます--ttl-set 100
)。
iptables -t mangle -A FORWARD -j TTL --ttl-inc 1
ルールに追加の一致がない場合、パケットがどの方向にもルーティングされるたびにルールが適用されます。