$Karaba: ip.txt,v 1.3 2004/01/16 03:00:53 mk Exp $ iproute に含まれる ip コマンドの使い方 Sun Oct 29 17:51:16 2000 KANDA Mitsuru 1) ip コマンド使用方法概観 # ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | route | rule | neigh | tunnel | maddr | mroute | monitor } OPTIONS := { -V[ersion] | -s[tatistics] | -r[esolve] | -f[amily] { inet | inet6 | dnet | link } | -o[neline] } 2) OBJECT 2.1) link # ip link set DEVICE { up | down | arp { on | off } | dynamic { on | off } | multicast { on | off } | txqueuelen PACKETS | name NEWNAME | address LLADDR | broadcast LLADDR | mtu MTU } # ip link show [ DEVICE ] 2.2) addr # ip addr {add|del} IFADDR dev STRING # ip addr {show|flush} [ dev STRING ] [ scope SCOPE-ID ] [ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ] IFADDR := PREFIX | ADDR peer PREFIX [ broadcast ADDR ] [ anycast ADDR ] [ label STRING ] [ scope SCOPE-ID ] SCOPE-ID := [ host | link | global | NUMBER ] FLAG-LIST := [ FLAG-LIST ] FLAG FLAG := [ permanent | dynamic | secondary | primary | tentative | deprecated ] 2.3) route # ip route { list | flush } SELECTOR # ip route get ADDRESS [ from ADDRESS iif STRING ] [ oif STRING ] [ tos TOS ] # ip route { add | del | replace | 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 ] 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 ] [ ssthresh REALM ] [ 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 ] NHFLAGS := [ onlink | pervasive ] RTPROTO := [ kernel | boot | static | NUMBER ] 2.4) rule # ip rule [ list | add | del ] SELECTOR ACTION SELECTOR := [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK ] [ dev STRING ] [ pref NUMBER ] ACTION := [ table TABLE_ID ] [ nat ADDRESS ] [ prohibit | reject | unreachable ] [ realms [SRCREALM/]DSTREALM ] TABLE_ID := [ local | main | default | NUMBER ] 2.5) neigh # ip neigh { add | del | change | replace } { ADDR [ lladdr LLADDR ] [ nud { permanent | noarp | stale | reachable } ] | proxy ADDR } [ dev DEV ] # ip neigh {show|flush} [ to PREFIX ] [ dev DEV ] [ nud STATE ] 2.6) tunnel # ip tunnel { add | change | del | show } [ NAME ] [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ] [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ] [ ttl TTL ] [ tos TOS ] [ [no]pmtudisc ] [ dev PHYS_DEV ] Where: NAME := STRING ADDR := { IP_ADDRESS | any } TOS := { NUMBER | inherit } TTL := { 1..255 | inherit } KEY := { DOTTED_QUAD | NUMBER } 2.7) maddr # ip maddr [ add | del ] MULTIADDR dev STRING # ip maddr show [ dev STRING ] 2.8) mroute # ip mroute show [ PREFIX ] [ from PREFIX ] [ iif DEVICE ] 2.9) monitor # ip monitor [ all | LISTofOBJECTS ] 3) トンネルの設定 # ip tunnel add mode [local ] [remote ] : トンネルの設定名(好きな文字列) : ipip (IPv4 over IPv4) デバイス名 tunl0 sit (IPv6 over IPv4) デバイス名 sit0 gre (ANY over GRE over IPv4) デバイス名 gre0 local : トンネルされるパッケト用のローカルアドレス remote : トンネル先のIPアドレス トンネルには point-to-point と NBMA(Non-Bradcast Multi-Access)の 2種類がある。 point-to-point の方は、ifconfig と route コマンドで設定すればよい。 NBMA の方は、ドライバにパケットをどこに配送すればよいか指示しなけれ ばならない。 # ip route add 10.0.0.0/24 via dev tunl0 onlink "onlink" オプションは tunl0 から直接到達できないゲートウェイ経由の 経路を作成することろ拒否する。 IPv6 の場合は以下のようにする。 # ip route add 3FFE::/16 via ::193.233.7.65 dev sit0 3.1) オプション ttl N - トンネルされるパケットの TTL を N(1-255)に設定する。 N = 0 のときは TTLはそのまま受けつぐ(inherit)。 tos T - トンネルされるパケットの tos を T に設定する。 デフォルトは inherit。 dev DEV - デバイス DEV をトンネルにバインドする。 トンネルされたパケットはこのデバイス系由でのみルーティング される。終端(end point)への経路が変更された時、他のデバイ スへ迂回することはできない。 nopmtudisc - Path MTU Discovery を無効にする(デフォルト)。 固定されたttlとは両立しないとこに注意。この場合、 Path MTU Discovery はいつも実行される。 以下は gre トンネルのみのオプション。 key K - キー K で GRE を使用する。K は数字もしくはdotted quad。 csum - チェックサムを行う。 seq - serialize packet。(not work ?) ) SEE ALSO tc コマンド