ip routeの静的ルーティングの概要と使い方
概要
- ipアドレスの静的なルーティングをlinuxで行うコマンドである。
- 方言が多く、ここでは最新の
ip route
コマンドについて記す
公式ドキュメント等
例
現在のrouteを表示する
$ ip route
default via 192.168.40.1 dev mellanox0 proto static
default via 192.168.50.1 dev mellanox0 proto static metric 5
default via 192.168.30.1 dev mellanox0 proto static metric 50
default via 192.168.20.1 dev mellanox0 proto static metric 120
25.0.0.0/8 dev ham0 proto kernel scope link src 25.133.161.220
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.18.0.0/16 dev br-f03ffb30f27b proto kernel scope link src 172.18.0.1 linkdown
172.19.0.0/16 dev br-4df8d366ed9f proto kernel scope link src 172.19.0.1 linkdown
172.21.0.0/16 dev br-9f726afd105d proto kernel scope link src 172.21.0.1 linkdown
192.68.0.0/24 via 192.168.40.1 dev mellanox0
読み方
- 最初に記されているレコードほど、優先順位が高い
gatewayの情報を更新する
すべての通信を192.168.3.1
のゲートウェイに設定する
$ sudo ip route add 192.168.3.1 dev eth0
$ sudo ip route add default via 192.168.3.1
特定のipアドレスを特定のgatewayに変更する
例えば1.1.1.1
を192.168.50.1
のゲートウェイに変更する
$ sudo ip route add 1.1.1.1/32 via 192.168.50.1 dev mellanox0
$ ip route
...
1.1.1.1 via 192.168.50.1 dev mellanox0
...
この変更はtraceroute
で確認できる
$ traceroute 1.1.1.1
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
1 192.168.50.11 (192.168.50.11) 0.679 ms 0.650 ms 0.641 ms
...
8 one.one.one.one (1.1.1.1) 3.404 ms 3.398 ms 3.390 ms
routingを削除する
$ sudo ip route del 1.1.1.1/32 via 192.168.50.1 dev mellanox0
特定のipを禁止する
別にip rule
というコマンドが用意されている
例えば、youtube.com
のIPアドレスである172.217.0.0/16
を禁止しようとする
$ sudo ip rule add blackhole to 172.217.0.0/16
ip route
を応用して、localhost
に参照させることでも禁止できる
$ sudo ip route add 172.217.0.0/16 via 127.0.0.1
実際はjYouTubeのIPアドレスはかなり頻繁に変動するので、これでは恒久的に防げない