メモの日々


2009年01月20日(火) [長年日記]

[unix][net][howto] ipコマンドでの経路の設定方法

CentOSにおける静的ルーティングの設定方法を以前にメモしたが、ファイルに書くのではなく直接ipコマンドを使って一時的に経路を設定する方法をメモ。ipコマンド難しー。

# /sbin/ip route add 172.32.0.0/12 via 192.168.254.10 dev eth0

を実行すると

$ netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
172.32.0.0      192.168.254.10  255.240.0.0     UG        0 0          0 eth0
0.0.0.0         192.168.254.2   0.0.0.0         UG        0 0          0 eth0

てな感じで経路が追加された。

ipコマンドのマニュアルは見難いと思っていたら、コマンドラインのヘルプでも詳しい情報が表示されることを知った。

$ /sbin/ip help
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip [ -force ] [-batch filename
where  OBJECT := { link | addr | route | rule | neigh | ntable | tunnel |
                   maddr | mroute | monitor | xfrm }
       OPTIONS := { -V[ersion] | -s[tatistics] | -r[esolve] |
                    -f[amily] { inet | inet6 | ipx | dnet | link } |
                    -o[neline] | -t[imestamp] }

$ /sbin/ip route help
Usage: ip route { list | flush } SELECTOR
       ip route get ADDRESS [ from ADDRESS iif STRING ]
                            [ oif STRING ]  [ tos TOS ]
       ip route { add | del | change | append | replace | monitor } ROUTE
SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ]
            [ table TABLE_ID ] [ proto RTPROTO ]
            [ type TYPE ] [ scope SCOPE ]
ROUTE := NODE_SPEC [ INFO_SPEC ]
NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]
             [ table TABLE_ID ] [ proto RTPROTO ]
             [ scope SCOPE ] [ metric METRIC ]
             [ mpath MP_ALGO ]
INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...
NH := [ via ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS
OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]
           [ rtt NUMBER ] [ rttvar NUMBER ]
           [ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]
           [ ssthresh NUMBER ] [ realms REALM ]
TYPE := [ unicast | local | broadcast | multicast | throw |
          unreachable | prohibit | blackhole | nat ]
TABLE_ID := [ local | main | default | all | NUMBER ]
SCOPE := [ host | link | global | NUMBER ]
FLAGS := [ equalize ]
MP_ALGO := { rr | drr | random | wrandom }
NHFLAGS := [ onlink | pervasive ]
RTPROTO := [ kernel | boot | static | NUMBER ]

見難いのは変わりないか。

[dev][howto] autotoolsでprefixの値をプログラムに静的に組み込む

先週メモした、config.hにインストール先ディレクトリパスを埋め込む方法には問題があることが分かった。configure実行時に--prefixオプションを指定すれば動くが、指定しないと定数の値が "NONE" に設定されてしまう。

configureスクリプトを読むと、#defineの行を出力した後で変数prefixにデフォルト値(/usr/local)を代入しており、このアプローチではうまくいきそうにない。どうすればいいのか。

autoconfのマニュアルに、

というFAQが書かれていた。読んでもよく分からなかったのだけれど、単純にAC_DEFINE_UNQUOTEDを使うのではダメだということが書かれているのだと思う。

なので、次のようにした。

  • 前に書いたAC_DEFINE_UNQUOTEDの指定は削除。
  • Makefile.am 内に AM_CPPFLAGS という行があったので、ここに「-DPREFIX_DIR='"@prefix@"'」というような記述を追加。

これでautomake, autoconfをやり直すと、configure実行時に--prefixを指定してもしなくても、PREFIX_DIRにprefixの値が設定されるようになった。

本日のツッコミ(全2件) [ツッコミを入れる]
ef (2009年07月09日(木) 08:08)

小さなことですが 172.32.0.0/12 は private net ではありません。

小川 (2009年07月09日(木) 10:31)

そのようですね。ご指摘ありがとうございます。<br><br>当時なぜこのネットワークアドレスを採用したのか思い出せませんが、次から気をつけたいと思います。