labunix's blog

labunixのラボUnix

Debian jessieでifup/ifdownでPROMISCを指定してみる。

■Debian jessieでifup/ifdownでPROMISCを指定してみる。

$ lsb_release -d
Description:	Debian GNU/Linux 8.3 (jessie)

■下記のどちらでもinterfaceに対してPROMISCを指定することが出来る。

$ sudo ip link set eth1 promisc on up; \
  ip link show eth1 | sed -e 's/[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:/XX:XX:XX:XX:/g'
3: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether XX:XX:XX:XX:c2:e3 brd ff:ff:ff:ff:ff:ff

$ sudo ip link set eth1 promisc off down; \
  ip link show eth1 | sed -e 's/[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:/XX:XX:XX:XX:/g'
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether XX:XX:XX:XX:c2:e3 brd ff:ff:ff:ff:ff:ff

$ sudo ifconfig eth1 promisc up; \
  /sbin/ifconfig eth1 | sed -e 's/[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:/XX:XX:XX:XX:/g'
eth1      Link encap:イーサネット  ハードウェアアドレス XX:XX:XX:XX:c2:e3 
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  メトリック:1
          RXパケット:54 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:186 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000 
          RXバイト:4385 (4.2 KiB)  TXバイト:18144 (17.7 KiB)

$ sudo ifconfig eth1 -promisc down; \
  /sbin/ifconfig eth1 | sed -e 's/[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:/XX:XX:XX:XX:/g'
eth1      Link encap:イーサネット  ハードウェアアドレス XX:XX:XX:XX:c2:e3 
          BROADCAST MULTICAST  MTU:1500  メトリック:1
          RXパケット:54 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:196 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000 
          RXバイト:4385 (4.2 KiB)  TXバイト:19478 (19.0 KiB)

■真面目に[ip]コマンドで置き換えるとしたら。

$ sudo ip addr add 172.16.16.89/24 dev eth1
$ sudo ip link set eth1 promisc on
$ sudo ip link set eth1 up
$ ip link show eth1 | sed -e 's/[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:/XX:XX:XX:XX:/g'
3: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether XX:XX:XX:XX:c2:e3 brd ff:ff:ff:ff:ff:ff

$ sudo ip link set eth1 promisc off
$ sudo ip link set eth1 down
$ ip link show eth1 | sed -e 's/[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:/XX:XX:XX:XX:/g'
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether XX:XX:XX:XX:c2:e3 brd ff:ff:ff:ff:ff:ff

■ifup/ifdownスクリプトのup/downオプションで書くとすると。
 ifconfigはipコマンドに置き換えられる方向なので、
 両方書いておくがipコマンドの方しか使わない。
 また、IPの指定はifconfigと違ってipコマンドの場合は、upの後ろに書いてもダメな様子。
 ということで、以下に落ち着いた。

$ sudo grep -A 14 "^auto eth1" /etc/network/interfaces
auto eth1
allow-hotplug eth1
iface eth1 inet static
	address 172.16.16.89
	netmask 255.255.255.0
	network 172.16.16.0
	broadcast 172.16.16.255
	#up ifconfig eth1 172.16.16.89/24 promisc up
	up ip link set eth1 promisc on 
	down ip link set eth1 promisc off
	#down ifconfig eth1 -promisc down

■ifup/ifdown結果は以下。

$ sudo ifup eth1; \
  ip a list eth1 | sed -e 's/[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:/XX:XX:XX:XX:/g'
3: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether XX:XX:XX:XX:c2:e3 brd ff:ff:ff:ff:ff:ff
    inet 172.16.16.89/24 brd 172.16.16.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20a:79ff:fe9a:c2e3/64 scope link tentative 
       valid_lft forever preferred_lft forever
$ sudo ifdown eth1; \
  ip a list eth1 | sed -e 's/[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:[0-9a-e][0-9a-e]:/XX:XX:XX:XX:/g'
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether XX:XX:XX:XX:c2:e3 brd ff:ff:ff:ff:ff:ff