Posted at

プロキシのテストで時々陥る罠(ルーティング)

More than 3 years have passed since last update.

Linux (RHEL 7.0など)での話。


問題

プロキシの機能や性能などの試験のために、iperf3を走らせることがある。いろんなノードで。

すると、クライアント-サーバ間でプロキシノードを経由するように設定していたはずのルーティング設定がいつの間にか無効になってすまうことがある。(なお、これら全てのノードは同一ネットワークセグメントにある)

厄介なことに、 ルーティング設定そのものが消えているわけではないので、 ip route show なんて実行してみたところで、原因が見えてこない。ついでながら、ip route show cacheも有益な情報は与えてくれなかった。


対策


IPv4の場合


  1. accept_redirects を無効にする。allと該当インタフェースの両方。片方だと効かない。

  2. ルーティングの再設定

たとえば、それぞれのIPアドレスが


  • client : 192.168.0.3 (eth0)

  • proxy : 192.168.0.4 (eth0)

  • server : 192.168.0.5 (eth0)

だとすると、


client

client# sysctl -w net.ipv4.conf.all.accept_redirects=0

client# sysctl -w net.ipv4.conf.eth0.accept_redirects=0
client# ip route del 192.168.0.5 via 192.168.0.4
client# ip route add 192.168.0.5 via 192.168.0.4


server

server# sysctl -w net.ipv4.conf.all.accept_redirects=0

server# sysctl -w net.ipv4.conf.eth0.accept_redirects=0
server# ip route del 192.168.0.3 via 192.168.0.4
server# ip route add 192.168.0.3 via 192.168.0.4

のようにしてやる。

この設定を永続的なものにしたい場合は/etc/sysctl.confに書くのだが、自分だけのホストではないので今回はそこまではしない。


IPv6の場合

(ついでの時に追記予定)


Qiita初投稿。