Back | Top

Network interfaceのちょっとマニアな使い方

内容は以下の三つです. Solaris, FreeBSD, Linuxの三つのOSについて書いています
  1. MACアドレスを変更する

    インタフェースがdownの時に以下のようにする.
    一つめの引数は各自のインタフェース名に置き換えること

    • Solarisの場合
      # ifconfig hme0 ether (MACアドレス)
      
    • FreeBSDの場合
      # ifconfig fxp0 ether (MACアドレス)
      
    • Linuxの場合
      # ifconfig eth0 hw ether (MACアドレス)
      

  2. 一つのインタフェースに複数のIPアドレスを割り当てる.

    • Solarisの場合

      "addif (IPアドレス)"という命令で追加し、
      "removeif (IPアドレス)"という命令で削除することになる.
      追加されるとインタフェース名は" :1 "というような名称が追加される.
      IPアドレスの追加割り当ては以下のようなコマンドで実現する.

      # ifconfig hme0:1 plumb
      # ifconfig hme0:1 up
      
      上記の二つのコマンドは以下のコマンドに集約することもできる.
      この場合には" :1 "などの指定はいらない
      # ifconfig hme0 addif 10.0.0.2 plumb up
      
      割り当てたIPアドレスの削除は以下のようなコマンドで実現する.
      この場合にも" :1 "などはつけないことに注意
      # ifconfig hme0 removeif 10.0.0.2
      
    • FreeBSDの場合

      "alias"という命令を使って実現している.
      このときnetmaskはすべて1bitにし,0xffffffffを指定しなければいけない.
      IPアドレスの追加割り当ては以下のようなコマンドで実現する.

      # ifconfig fxp 10.0.0.2 netmask 0xffffffff alias
      
      割り当てたIPアドレスの削除は"-alias"というコマンドを使用し,
      以下のようなコマンドで実現する.
      # ifconfig fxp 10.0.0.2 -alias
      
    • Linuxの場合

      Linuxの場合、まずはじめにカーネルの機能でIP aliasの機能を有効にして おかなければいけない(RedHatやTurboLinux系はdefaultで有効になっている).
      有効になってない場合にはカーネルの再構築が必要になります.

      なっていれば以下のような方法でIPアドレスの追加割り当てが可能です.

      # ifconfig eth0:0 10.0.0.2
      
      ここで注意すべきなのは,副番号です.
      Solarisの場合はもともとのインタフェースを"0"と仮定し,
      ":1"から追加したが,Linuxでは":0"から追加していくことが可能です.
      また,この副番号は何番を使っても問題ありません.つまり,いきなり以下の ような命令でIPアドレスを割り当てることも可能です.
      # ifconfig eth0:7 10.0.0.2
      
      また割り当てたIPアドレスの削除は"down"を使って以下のように行います.
      # ifconfig eth0:0 down
      

  3. Broadcastに対するPINGへの応答拒否設定のしかた

    DoS攻撃の一種である"smurf攻撃"に自分の計算機が悪用されないように Broadcast宛てへのPINGの応答を拒否するように設定をする方法を以下に書く.

    • Solarisの場合

      nddというコマンドを使用する.
      以下のようにコマンドを実行して設定する

      # ndd -set /dev/ip ip_respond_to_echo_broadcast 0
      # ndd -set /dev/ip ip_forward_directed_broadcasts 0
      
      ようするに"ip_respond_to_echo_broadcast"と"ip_forward_directed_broadcast"の設定項目を"0"に設定しているのですが、 多分,デフォルトの値は"1"で,それらの機能が有効になっているので, "0"に設定し,無効にします

      なお,各項目の状態は以下のように実行することで知ることができます. 項目名は知りたい項目名を指定すればいいでしょう.

      # ndd -get /dev/ip ip_respond_to_echo_broadcast
      0
      

      なお,以下のように実行するとnddコマンドで設定できる全項目を知ることが できます.

      # ndd /dev/ip \? 
      
    • FreeBSDの場合

      sysctlを使用して設定する
      以下のようにする

      # sysctl -w net.inet.icmp.bmcastecho=0
      
      多分,デフォルトは"0"で無効になっています.
      万が一 "1"になっていたら"0"にしておくべきでしょう.

    • Linuxの場合

      Linuxは/proc/sys/net/ipv4ディレクトリ配下のファイルの値を変更することで その機能を無効にすることができます.
      このディレクトリに"icmp_echo_ignore_broadcasts"というファイルが あるはずです.そのファイルの内容(中身)の値が"0"ならば 「応答する」という設定になっていますので,"1"に変更しておきましょう

      方法は以下のような方法でもいいし,他の方法でも構いません.

      # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
      

Presented by
Netaro the web | Since 2002