Linux (RHEL 7.0など)での話。
問題
プロキシの機能や性能などの試験のために、iperf3
を走らせることがある。いろんなノードで。
すると、クライアント-サーバ間でプロキシノードを経由するように設定していたはずのルーティング設定がいつの間にか無効になってすまうことがある。(なお、これら全てのノードは同一ネットワークセグメントにある)
厄介なことに、 ルーティング設定そのものが消えているわけではないので、 ip route show
なんて実行してみたところで、原因が見えてこない。ついでながら、ip route show cache
も有益な情報は与えてくれなかった。
対策
IPv4の場合
- accept_redirects を無効にする。allと該当インタフェースの両方。片方だと効かない。
- ルーティングの再設定
たとえば、それぞれの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初投稿。