物理インターフェイスに多数のvlanインターフェイスを設定しています。
Physical interface: eth1
VLANS on top of this: vlan1, vlan2, vlan3
今、私は私のVLANの親インターフェイスを知りたいです(たとえば、ここでeth1はこれらのVLANの親インターフェイスです)。
「ip addr show vlan-name」を実行してこの情報を取得できます。出力では、vlan1 @ eth1を取得しますが、このコマンドの出力を解析するか、ネットワーク構成ファイルを調べて解析し、解釈する必要があります。それ。
解析ロジックなしでこの情報を取得できる別の方法はありますか?たとえば、結合されたインターフェースの場合、情報は/ sys/class/net /ディレクトリにあり、そこにあるファイルを読み取るだけです。
# cat /sys/class/net/bond0/bonding/slaves
eth0 eth1
VLANタグ付きインターフェイスに使用できる同様のパス/ファイルはありますか?解析せずに読み取ることができるファイルがあり、この情報または親インターフェース名のみを与えるコマンド/ユーティリティを抽出できるファイルがあるかどうか、わかりませんでした。
これ以外の方法があるかどうか教えてください。
ありがとう。
anyを解析せずに基礎となるインターフェイスを取得する方法が見つからなかったため、この情報を取得するために4つの(場合によってはわずかに)異なる方法を提供します。
物理インターフェースの名前を持つシンボリックリンクがあります:
$ ls -l /sys/class/net/vlan2
[...]lrwxrwxrwx. 1 root root 0 nov. 10 02:12 lower_eth1 -> ../eth1
[...]-rw-r--r--. 1 root root 4096 nov. 10 01:49 uevent
$ echo $(basename $(readlink /sys/class/net/vlan2/lower_*))
eth1
便利なuevent
もあります:
$ cat /sys/class/net/vlan2/uevent
DEVTYPE=vlan
INTERFACE=vlan2
IFINDEX=24
$ cat /sys/class/net/vlan2/lower_*/uevent
INTERFACE=eth1
IFINDEX=22
$ cat /sys/class/net/vlan2/lower_*/uevent|sed -n 's/^INTERFACE=//p'
eth1
ルートとして、/proc/net/vlan
にエントリがあります:
# ls /proc/net/vlan/
config vlan1 vlan2 vlan3 vlan4 vlan5
# cat /proc/net/vlan/config
VLAN Dev name | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
vlan1 | 1 | eth1
vlan3 | 3 | eth1
vlan4 | 4 | eth1
vlan2 | 2 | eth1
vlan5 | 5 | eth2
# cat /proc/net/vlan/vlan2
[...]Device: eth1
[...]
# awk -F ' *\\| *' '$1 == "vlan2" { print $3 }' /proc/net/vlan/config
eth1
# sed -n 's/^Device: //p' /proc/net/vlan/vlan2
eth1
/ sysでは、upper_*
を使用して他の方向も可能であることに注意してください。
$ ls -l /sys/class/net/eth1
[...]
-rw-r--r--. 1 root root 4096 nov. 10 01:46 uevent
lrwxrwxrwx. 1 root root 0 nov. 10 02:23 upper_vlan1 -> ../vlan1
lrwxrwxrwx. 1 root root 0 nov. 10 02:18 upper_vlan2 -> ../vlan2
lrwxrwxrwx. 1 root root 0 nov. 10 02:23 upper_vlan3 -> ../vlan3
lrwxrwxrwx. 1 root root 0 nov. 10 02:23 upper_vlan4 -> ../vlan4
$ sed -n 's/^INTERFACE=//p' /sys/class/net/eth1/upper_*/uevent
vlan1
vlan2
vlan3
vlan4