コンテンツへスキップ

Catalystスイッチの基本設定・検証

  • MACアドレステーブル(CAMテーブル)の表示
    #show mac-address-table
  • MACアドレステーブルからの全ダイナミックアドレスの消去
    #clear mac address-table dynamic
  • スタティックMACアドレスの登録
    (config)#mac address-table static 0010.aaaa.aaaa vlan 1 interface fa0/3
  • IPアドレス(10.1.1.2/24)を設定し管理(管理VLAN:1)
    (config)#interface vlan 1
    (config-if)#ip address 10.1.1.2 255.255.255.0
    (config-if)#no shutdown
  • IPアドレスとステータスの表示
    #show interface vlan 1
  • デフォルトゲートウェイの設定
    (config)#ip default-gateway 10.1.1.1
  • デフォルトゲートウェイの表示
    #show running-config
  • スイッチポートの状態を要約表示
    #show interface status
  • スイッチポートを全二重に設定
    (config-if)#duplex full
  • スイッチポートを半二重に設定
    (config-if)#duplex half
  • スイッチポートの速度を10Mbpsに設定
    (config-if)#speed 10
  • スイッチポートの二重方式と速度の表示
    #show interfaces(#show interfaces status)
  • Catakystスイッチの初期化
    #erase startup-config
    #delete flash:vlan.dat
    #reload

ポートセキュリティスイッチ

  • ポートセキュリティの有効化
    (config-if)#switchport port-security
  • セキュアMACアドレスの最大数を1に設定
    (config-if)#switchport port-security maximum 1
  • セキュアポートでセキュリティ違反が発生した場合、ただちにポートをシャットダウンさせる
    (config-if)#switchport port-security violarion shutdown
  • セキュアポートでセキュリティ違反が発生した場合、違反フレームのみ破棄し、セキュリティ違反の発生を通知させる
    (config-if)switchport port-security violation restrict
  • ダイナミックに学習したMACアドレスを、スタティックセキュアMACアドレスとして実行しコンフィギュレーションに追加させる
    (config-if)#switchport port-security mac-address sticky
  • ポートセキュリティの設定の表示
    #show port-secrurity
  • セキュアポートステータスの表示
    #show port-security interface
  • セキュアMACアドレスの情報の表示
    #show port-security address

VLAN・VTP

  • スイッチポートをアクセスポートに設定
    (config-if)swithport mode access
  • スイッチポートをトランクポートに設定
    (config-if)switchport mode trunk
  • 対向リンクがauto,trunk,desirableのいずれかの場合、トランクポートになるための設定
    (config-if)switchport mode dynamic desirable
  • 対向リンクがtrunk.またはdesirableの場合、トランクポートになるための設定
    (config-if)#swithport mode dynamic auto
  • DTPネゴシエートフレームの送信を停止
    (config-if)#swithport nonegotiate
  • VLANを作成(VLAN-ID:2, 名前:test)
    (config)vlan 2
    (config-vlan)#name test
  • Catalyst 2900XLでVTPをクライアントモードに設定
    #vlan database
    (vlan)#mode client
  • ポートfa0/1をアクセスポートに設定し、VLAN2を割り当てる
    Switch(config)#interface fastethernet0/1
    Switch(config-if)#switchport mode access
    Switch(config-if)#switchport access vlan 2
  • トランキングプロトコルをIEEE 802.1Qに設定
    (config-if)#switchport trunk encapsulation dot1q
  • トランキングプロトコルをISLに設定
    (config-if)#switchport trunk encapsulation isl
  • トランクポートで許可するVLANの設定(1~10,15)
    (config-if)#switchport trunk allowed vlan 1-10,15
  • ネイティブVLANを99に設定
    (config-if)#switchport trunk native vlan 99
  • 全てのVLANを表示
    #show vlan
  • VLAN2のみの情報の表示
    #show vlan id 2
  • ポートfa0/1の設定と動作状況の表示
    #show interfaces fa0/1 switchport
  • トランクポート(fa0/12)に関する要約情報の表示
    #show interfaces fa0/12 trunk
  • トランクポートとVLANフレームタグ方式をリスト表示
    #show interfaces trunk
  • VTPドメイン名をTESTに設定
    (config)#vtp domain TEST
  • VTPモードをクライアントに設定
    (config)#vtp mode client
  • 作成したVLANを他のスイッチに通知しないVTPモードに設定
    (config)#vtp mode transparent
  • VTPパスワードをtestに設定
    (config)#vtp password test
  • VTPプルーニングの有効化
    (config)#vtp pruning
  • VLANデータベースモードでVTPドメイン名をCCNAに設定
    #vlan database
    (vlan)#vtp domain CCNA
  • VTPの設定の表示
    #show vtp status
  • VTPメッセージの統計情報の表示
    #show vtp counters
  • VTPのパスワード表示
    #show vtp password
  • フラッシュメモリからVLAN情報を消去
    #delete flash:vlan.dat

STP(スパニングツリープロトコル)

  • VLAN1をルートブリッジに設定(プライオリティ:4096)
    (config)#spanning-tree vlan 1 priority 4096
  • ダイナミックにVLAN1のルートブリッジに設定
    (config)#spannning-tree vlan 1 root primary
  • ダイナミックにVLAN2をセカンダリルートブリッジに設定
    (config)#spanning-tree vlan 2 root secondary
  • STPに関する情報(状態)の表示
    #show spanning-tree
  • Catalyst 3500シリーズでSTP情報の表示
    #show spantree
  • ルートブリッジの設定と状態の表示
    #show spanning-tree root
  • 特定のポートでのみのPortFastの設定
    (config-if)#spanning-tree root
  • 特定のポートでのみのPortFastの設定
    (config-if)spanning-tree portfast
  • すべてのアクセスポートのPortFastの設定
    (config)spanning-tree portfast default
  • UplinkFastの設定
    (config)#spnning-tree uplinkfast
  • BackboneFastの設定
    (config)#spanning-tree backbonefast
  • スパニングツリーの動作モードをPVRST+に設定
    (config)#spanning-tree mode rapid-pvst
  • Catalyst 2950スイッチでスパニングツリーの動作をリアルタイムに確認
    #debug spanning-tree

ルーティング基礎

  • IPルーティングの有効化
    Router(config)#ip routing
  • CiscoルータでIPルーティングを無効にし、ラストリゾートゲートウェイを10.1.1.1に設定
    (config)#no ip routing
    (config)#ip default-gateway 10.1.1.1
  • スタティックルートの設定(宛先NW:172.16.1.0/24 next-hop: 10.1.1.2)
    (config)#ip route 172.16.1.0 255.255.255.0 s0/0 10.1.1.12
  • RIPによるルート情報がない場合に使用するためのスタティックルートの設定
    (config)#ip route 172.16.1.0 255.255.255.0 s0/0 permanent
  • デフォルトルートの設定(Next-hop : 10.1.1.2)
    (config)#ip route 0.0.0.0 0.0.0.0 10.1.1.12
  • 宛先が不明なパケットの場合、デフォルトルートを使用してルーティングするように設定
    (config)#ip classless
  • インターフェースにゼロサブネットを設定可能にする
    (config)# subnet-zero
  • ルーティングテーブルの表示
    #show ip route

RIPv2

  • RIPv2の設定(動作させるインターフェース:10.1.1.1/24と172.16.1.1/24)
    (config)#router rip
    (config-router)#version 2
    (config-router)#network 10.0.0.0
    (config-router)#network 172.16.0.0
  • RIPv2の自動経路集約の無効化
    (config)#no auto-summary
  • RIPルータのFa0/0インターフェイスでのアップデート送信の抑制
    (config)#router rip
    (config-router)#passive-interface fa0/0
  • デフォルトルート(Next-hop:10.1.1.2)を設定し、RIPアップデートで配布
    (config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1.2
    (config)#router rip
    (config-router)version 2
    (config-router)#default-infomation originate
  • キーチェーン(ABC)でRIPv2の認証を有効化
    (config-if)#ip rip authentication key-chain ABC
  • RIPv2の認証タイプをMD5に設定
    (config-ig)#ip rip authentication mode MD5
  • RIPv2ルータのFa0/0インターフェイスでRIPv1のアップデートを送受信
    (config)#interface fa0/0
    (config-if)#ip rip send version 1
    (config-if)#ip rip receive version 1
  • ルーティングプロトコルの情報の表示
    #show ip protocols
  • RIPのデバッグを有効化
    #debug ip rip
  • RIPv2の無効化
    #(config)#no router rip

OSPF

  • OSPFをシングルエリアで設定(プロセスID:1、動作させるインターフェイス:10.1.1.1/24と172.16.1.1/30)
    (config)#router ospf 1
    (config-router)#network 10.1.1.0 0.0.0.255 area 0
    (config-router)#network 172.16.1.1 0.0.0.3 area 0
  • ループバックインターフェイス0の設定(1.1.1.1/32)
    (config)#interface loopback 0
    (config-if)#ip address 1.1.1.1 255.255.255.255
  • ルータIDを明示的に設定
    (config-router)#router-id 1.1.1.1
  • OSPFプライオリティの設定(プライオリティ:5)
    (config-if)#ip ospf priority 5
  • 強制的にDROTHERに設定
    (config-if)#ip ospf priority 0
  • OSPFのコスト計算式を変更
    (config-router)#auto-cost referebce-bandwidth 1000
  • インターフェイスのコストを明示的に指定
    (config-if)#ip ospf cost 100
  • ロードバランシング(負荷分散の最大数を5に設定
    (config-router)#maximum-paths 5
  • OSPF認証タイプをMD5に設定
    (config-if)#ip ospf authentication message-digest
  • OSPF MD5認証のパスワードの設定(キーID:1,パスワード:cisco)
    (config-if)#ip ospf message-digest-key 1 md5 cisco
  • OSPFルーティングプロセスに関する情報の表示
    #show ip ospf
  • OSPFネイバーテーブルの表示
    #show ip ospf neighbor
  • インターフェイスごとのOSPFの表示
    #show ip ospf interface
  • リンクステートデータベース(LSDB)の表示
    #show ip ospf database
  • ルータが要求したすべてのLSAの表示
    #show ip ospf request-list
  • 内部ルータのルーティングテーブルにあるABRとASBRの表示
    #show ip ospf border-routers
  • OSPFルーティングプロセスをリセット
    #clear ip ospf process
  • OSPFパケットを送受信している様子を確認
    #debug ip ospf events
  • OSPF隣接関係のイベントDR/BDR選出情報など)の表示
    #debug ip ospf adj

EIGRP

  • EIGRPの設定(AS:1 動作させるインターフェイス:10.1.1.1/24と172.16.1.1/30)
    (config)#router eigrp 1
    (config-router)#network 10.0.0.0
    (config-router)#network 172.16.0.0
  • メトリックを最適化するため、Serial0/0インターフェイスの帯域幅を64kbpsに設定
    (config)interface serial0/0
    (config-if)#bandwidth 64
  • EIGRPの自動経路を無効化
    (config-router#no auto-summary
  • 最少メトリックより2倍の範囲内で不当コストロードバランシングを行う
    (config-router)#variance 2
  • EIGRP認証をSerial0/0インターフェイスに設定(R1-chain,id:1、キー:cisco,AS:1)
    (config)#key chain R1-chain
    (config-keychain)#key 1
    (config-keychain-key)#key-string cisco
    (config-keychain-key)#interface serial0/0
    (config-if)#ip authentication mode eigrp 1 md5
    (config-if)#ip auhentication key-chain eigrp 1 R1-chain
  • EIGRP認証で受信時に使用するライフタイムの設定(開始2022年6月30日7:00,終了:無制限)
    (config-keychain-key)#accept-lifetime 07:00:00 june 30 2022 infinite
  • クラスフルネットワーク10.0.0.0をデフォルトルートとして設定
    (config)#ip default-network 10.0.0.0
  • EIGRPネイバーテーブルの表示
    #show ip eigrp neighbors
  • EIGRPインターフェイスに関する情報の表示
    #show ip eigrp interface
  • EIGRPトポロジテーブルの表示
    #show ip eigrp topology
  • 送受信されたEIGRPパケットの数の表示
    #show ip eigrp traffic
  • EIGRPパケットの送受信の様子を確認
    #debug ip eigrp

IOS操作

  • 特権モードに入る
    >enable
  • グローバルコンフィギュレーションモードに入る
    #configure terminal
  • ユーザモードで使用可能なコマンドリストを確認
    >?
  • 最近入力したコマンドの履歴
    #show history

Ciscoルータの基本設定

  • ルータの名前をNに設定
    (config)#hostname N
  • インターフェイスモードに入る
    (config)#interface fa0/0
  • IPアドレスの設定
    (config-if)#ip address 10.1.1.1 255.255.255.0
  • インターフェイスの有効化
    (config-if)#no shutdown
  • インターフェイスを管理的に無効化
    (config-if)# shutdown
  • EXECモードに対するローカルパスワード(暗号化なし)をpassに設定
    (config)#enable password pass
  • EXECモードに対するローカルパスワード(暗号化あり)をpass2に設定
    (config)#enable secret pass2
  • コンソールパスワードをpassに設定
    (config)#line console 0
    (config-line)#password pass
    (config-line)#login
  • 仮想端末(telnet)でパスワードをpassに設定(同時接続4まで)
    (config)#line vty 0 3
    (config-line)#password pass
    (config-line)#login
  • コンフィグレーション上の全パスワードの暗号化
    (config)#service password-encryption
  • Serial0/0インターフェイスに対する説明文の設定
    (config)#interface serial0/0
    (config-if)#description description2222
  • Serial0/0インターフェイスの帯域幅を128kbpsに設定
    (config)#interface s0/0
    (config-if)#bandwidth 128
  • MoTDバナーの設定(区切り文字 #)
    (config)banner motd #
  • バックツーバックシリアル接続を行うためのDCE側の設定(64kbps)
    (config-if)#clock rate 64000
  • 入力中にメッセージが割り込んで表示されたときのコマンドの再表示
    (config-line)#logging synchronous
  • EXECセッションタイムアウト時間を10分10秒に設定
    (config-line)#exec-timeout 10 10
  • EXEXセッションタイムアウトを防ぐ(タイムアウトしない)
    (config-line)#exec-timeout 0 0 or no exec-timeout
  • DNSサーバのIPアドレスの設定
    (config)#ip name-server 10.1.1.100
  • ドメイン名の設定
    (config)#ip domain-name a.com
  • DNSへの名前解決の無効化
    (config)#no ip domain-lookup
  • Cisco IOSで名前解決をする(name 10.1.1.1)
    (config)#ip host name 10.1.1.1

Ciscoルータの検証

  • ホストの確認
    #show hosts
  • fa0/0インターフェイスの設定パラメータおよび統計情報の表示
    #show interfaces fa0/0
  • DHCPアドレスプールの表示
    #show dhcp pool
  • DHCPサーバの統計
    #show ip dhcp server statistics
  • インターフェイスのIPに関する情報の表示
    #show ip interface
  • 全インターフェイスの状態を要約で表示
    #show ip interface brief
  • 実行中のコンフィギュレーションの表示
    #show running-config
  • NVRAMのコンフィギュレーションの表示
    #show startup-config
  • シリアルコントローラのハードウェアに関する固有情報
    ケーブルの種類などの表示(DTE,DCEどちらかなのか確認する)
    "show controllers serial0/0

Ciscoルータの管理

  • IOSのバックアップコピーをTFTPサーバへ作成
    #copy flash: tftp:
  • RAMの実行コンフィギュレーションをフラッシュメモリに格納
    #copy running-config flash:
  • 実行コンフィギュレーションをNVRAMに保存
    #copy running-config startup-config
  • TFTPサーバからRAM上にコンフィギュレーションをダウンロード
    #copy tftp: running-config
  • TFTPサーバにバックアップ済みのIOSをルータへ格納
    #copy tftp: flash:
  • Cisco IOSソフトウェアを保存するためにメモリの容量を調べる
    #show version
    #show flash:
  • フラッシュメモリの内容を表示
    #show flash
  • 拡張pingの実行
    #ping
  • ARPテーブルの表示
    #show arp
  • 特定のARPテーブルの表示
    #show ip arp 10.1.1.1
  • ルータに関する情報の表示(実行中のIOS、メモリサイズ、搭載しているインターフェイスの種類と数の表示)
    #show version
  • ルータ(10.1.1.1)へのtelnetの実行
    #telnet 10.1.1.1
  • telnet接続の終了
    #exit
  • ルータに対する接続状態(ライン接続)の表示
    #show users
  • telnetセッションの中断
    [ctrl]+[shift]+[6]キーを押した後、[x]キー
  • 中断したTelnetセッションの表示
    #show sessions
  • 事前に使用していた中断中のTelenetセッションの再開
    #resume(または[Enter]キー押下)
  • 中断中のTelnetセッションの再開(セッション 2)
    #resume 2
  • 直前に使用していた中断中のTelnetのセッションの終了
    #disconnect
  • デバッグメッセージにタイムスタンプ(ミリ秒単位)を追加
    (config)#service timestamps debug datatime msec
  • デバッグを実行する前に現在のCPU使用率の表示
    #show process
  • 実行中のデバッグを表示
    #show debugging
  • VTYセッション(Telnet接続)上でのデバッグに関する出力の表示
    #terminal monitor
  • すべてのデバッグの停止
    #undebug all(# no debug all)
  • パケットが宛先につくまでの確認
    #traceroute
  • copy以外で現在の設定をNVRAMへ保存
    #write memory
  • ルータのコンフィギュレーションレジスタをデフォルトに戻す
    (config)#config-register 0x2102
  • パスワードリセットのためのコンフィギュレーションレジスタの変更
    (config)#config-register 0x2142
  • TFTPサーバ(10.1.1.100)にあるIOSソフトウェアを使用したルータの起動
    (config)boot system tftp ~~~
  • NVRAMのコンフィギュレーションの消去
    #erace startup-config
  • ルータの再起動
    #reload
  • ルータの初期化
    #erace startup-config
    #reload
  • SSHでのみリモートログインの許可
    (config)#line vty 0 4
    (config-line)#tranceport input ssh
  • SSHサーバに対する接続のステータスの表示
    # show ssh
  • SSHのバージョンとコンフィギュレーション情報の表示
    #show ip ssh
  • CDPのグローバルな情報の表示
    #show cdp
  • 直接接続されたCiscoデバイスの要約情報の表示
    #show cdp neighbors
  • 直接接続された全Ciscoデバイスの詳細情報の表示
    #show cdp neighbors detail
  • 直接接続された特性のCiscoデバイスの詳細情報
    #show cdp entry デバイスID
  • CDPパケットの詳細情報
    #show cdp traffic
  • インターフェイスおよびCDPタイマー情報の表示
    #show cdp interface
  • CDPをデバイス全体で無効化
    (config)#no cdp run
  • インターフェイスでCDPを無効化
    (config-if)#no cdp enable
  • CDPv2のアドバタイズを無効化
    (config)#no cdp advertiese-v2

アドレスクラス

【クラスA】

  • 第一オクテットの先頭1ビットが「0」に固定
  • 第一オクテット:00000001~01111110(1~126)

【クラスB】

  • 第一オクテットの先頭2ビットが「10」に固定
  • 第一オクテット:10000000~10111111(128~191)

【クラスC】

  • 第一オクテットの先頭3ビットが「110」に固定
  • 第一オクテット:11100000~11101111(224~239)

予約済みアドレス

  • ネットワークアドレス:ホスト部が全て「0」
  • ブロードキャストアドレス:ホスト部が全て「1」
  • ループバックアドレス:127.x.x.x

グローバルIPアドレス(パブリックアドレス)

ISPから割り当てられる一意のアドレス

クラス範囲
A1.0.0.0 ~ 9.255.255.255
11.0.0.0 ~ 126.255.255.255
B128.0.0.0 ~ 172.15.255.255
172.32.0.0 ~ 191.255.255.255
C192.0.0.0 ~ 192.167.255.255
192.169.0.0 ~ 223.255.255.255

プライベートIPアドレス

家庭や組織で利用するためのアドレス
アドレス範囲はRFC1918で定義

クラス範囲
A0.0.0.0 ~ 10.255.255.255
B172.16.0.0 ~ 172.31.255.255
C192.168.0.0 ~ 192.168.255.255

サブネットマスク

オクテット内でサブネット化したときのサブネットマスク

1286432168421
110000000128
211000000192
311100000224
411110000240
511111000248
611111100252
711111110254
811111111255

n進数のまとめ

10進数012345678910111213141516
2進数0110111001011101111000100110101011110011011110111110000
16進数0123456789ABCDEF10

4月に引っ越しをしたあとに友人とスマブラSPのオンラインでマッチングするとエラーが発生してしまい対戦できなくなってしまった。

前提として
・引っ越し前は、友人と遊べていた。
・過去現在共にプロバイダーは違うがIpv6+

エラー内容については、以下サイトがわかりやすい

ひとまずポートを開放をしようと考え、貸し出されているルータの管理画面にアクセスをしたが何度やってもできない。
ルーターを貸してもらっているサポートセンターに電話で問合せをしたところ、そもそもルーターの管理画面にアクセス権利が私にはないようだ。
言われてみれば当たり前か......

解決方法


・管理会社にIPv4用のIPアドレスを教えてもらい、任天堂switchの設定画面でIPを手動入力すると友人とスマブラでマッチングが可能となった。
┗ ただし、Ipv6+と比べて回線速度が断然に落ちるので遊ぶ時間を選ばないとラグや遅延が発生してしまう。

※参考
任天堂スイッチ IPアドレス固定とDNSを指定する方法
https://www.akakagemaru.info/port/switch-staticip.html

・IPv6+のままで遊ぶ方法としてポート開放をするとかあるみたいだけど、サポートセンターに電話したところ、もう既にUDPのポートが全開放されているらしい。調査依頼は出したけどやや詰んでる

最近、サーバーのラック内のケーブル配線を実施する機会があった。
ラック内には、サーバーを40台ほど搭載させる。
サーバーの数だけケーブル配線が増える。
ケーブル配線は何も考えずにつなげるだけなら簡単ではあるが、今後のサーバー運用においての保守性を考えると奥が深い。

少なくともサーバーを交換するときに、サーバーをレールから外したあと、サーバーがほかのサーバーのケーブルに引っかかってケーブルが抜けたりしたら、クライアントに被害が発生する。

そのようなリスクを抑えるためにもケーブルの配線については丁寧にコンパクトにまとめられるように考えなければならない。
また、一度ケーブルを配線していけばいくほど後戻りが大変なため、念入りに計画を立てなければならない。私は実際にほぼ完成まで進めてケーブル配線も、後から保守性として駄目なことに気が付いてほぼ初めからやり直す苦い経験をした。

ケーブル配線から後の事柄を考えた行動が大切であるということを痛感した。
物事の考える量を今よりも増やすともに思考力の体力も鍛えないといけない。

ただ何かを作ることの体力とそれを作った後のことを考える体力を温存する思考を持つようにしてもいいいのかもしれない

vlanについてわかったことについて記載する

まずはブリッチについて

ブリッチはMACアドレスとポートをテーブルにしたもの。
ブリッジはMACアドレスを参照して、送信元のテーブルから送信先のテーブルへ転送する。
いわゆるフォワーディングができる。

たとえば、以下の場合、①からの②を送る場合、①のフレームに記載されている宛先MACアドレスをスイッチが確認して②へフレームを送信する。
①サーバー 192.168.10.1 送信元
②サーバー 192.168.10.2 送信先
③サーバー 192.168.10.3
④サーバー 192.168.10.4

一つのスイッチを論理的に複数に分けることができる。

例えば、先ほどの①から④までのサーバーを
①,②をvlan10  ③,④をvlan20に分けるとする。

vlan10
①サーバー 192.168.10.1 
②サーバー 192.168.10.2 

vlan20
③サーバー 192.168.10.3
④サーバー 192.168.10.4

その場合、vlan10からvlan20へフレームを送信することができない。
①から④までは同じスイッチ内ではあるが、スイッチが論理的に分割されたため、
①から③へフレームを転送ができなくなった。

プライベートな情報があるサーバーを見られたくない場合、
vlanを活用することでアクセスを制限することができる。

vpsからデータベースに接続する度に、
mysql -u user -ppasswd

とコマンドを入力をするのが面倒だった。
mysql と入力するだけでログインできることを知っていたけど、
方法がわからなかったので調べてみたらヒットしました。

https://ja.linux-console.net/?p=566

以下引用

設定ファイル〜/ .my.cnf を作成し、その下に設定を追加します( mysqluser  mysqlpasswd を自分の値に置き換えてください)。 。

[mysql]
user=user
password=password


だそうなので、上記に従って、
/root以下に.my.cnfを作成

vim .my.cnf

[mysql]以下を記入して保存
権限を600に変更

chmod 600 .my.cnf


その後、mysql とコマンドを入力するだけで実際にログインできた。
はい、幸せ。

シェルスクリプトでIPを引数にしたいとき、nslookupやdigを使用する時がある。
その結果からIPだけの文字列に整形をするのだが、IP以外にも切り取られてしまうことがある。

例えば、以下のコマンドの場合、digコマンドからIPを表示されない場合がある。

dig -4 $i | grep "IN" | grep -v ';' | awk '{print $5}'

どうにかならないか考えたところ、以下サイトが参考になった。


個人的にありがたかったのが、grepのオプション -o で、grepが一致した箇所だけを表示する。
それを踏まえて、dig のオプション -4でIPV4にしぼり、正規表現で3ケタの0-9までの文字列にしぼる。

dig -4 $i | grep "IN" | grep -Eo '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'


上記のコマンドで現在は安定してIPを取得できている

Zabbixでホストを大量に抱えていると一気にアラート発生したときに確認に苦労する。
例えば、「aaa.comでアラートが発生しました」とアラートが発生したら、
まず、踏み台サーバーのコンソールにログインし、aaa.comのIPをnslookupで取得する。
次に取得したIPでssh接続。原因を調べて解決。のような流れ。

今回は、nslookupでドメインからIPを取得する流れが面倒だったため、/etc/hostsファイルに追記することで、
ドメインでssh接続できるシェルスクリプトを考えてみた。

mkhosts.sh

#!/bin/bash
header='Content-Type:application/json-rpc'
apiurl='http://000.000.000/zabbix/api_jsonrpc.php'
json='{"jsonrpc": "2.0","method": "user.login","params": {"user": "zabbixのユーザー名","password": "Zabbixのパスワード"},"id": 1,"auth": null}'

zbxauth=$(curl -sS -X POST -H "${header}" -d "${json}" ${apiurl} | jq -r ".result")
echo $zbxauth

json='{"jsonrpc": "2.0","method": "host.get","params": {"output": ["hostid","host"]},"id": 2,"auth": "'$zbxauth'"}'
echo $json | jq

hostlist=`curl -sS -X POST -H "${header}" -d "${json}" ${apiurl} | jq | grep "host"| grep -v "hostid" | awk -F: '{print $2}' | sed "s/\"/""/g" `

for i in $hostlist 
do

#任意でnslookupの結果をIPのみに整形する
iplist=`nslookup $i | grep "Address" | grep -v "\#53" |  awk -F: '{print $2}'` 
echo "$iplist $i"| sed 's/^[ \t]*//' >> /etc/hosts 
done

全体の流れとして、ZabbixのAPIからホスト名を取得し整形する。
次に取得したホスト名を引数にしてfor文でnslookupをかけてIPを取得する変数をつくる
最後に、echoで「IP ホスト名」の形にしたものを、/etc/hosts ファイルの最終行に追記する。
mkhosts.sh 実行後、/etc/hostsファイルを確認すると、
IP ホスト名
となっているはず。
その後、

ssh ホスト名

で対象のホストに接続できると思うので確認してみてほしい。

参考
https://www.zabbix.com/documentation/4.4/en/manual/api
https://tech-mmmm.blogspot.com/2019/02/zabbix-api.html
https://orebibou.com/ja/home/201607/20160712_003/
https://ex1.m-yabe.com/archives/3306

SPFレコードについて書くのが苦手だったけど、
今回で仕事で必要な知識だったので知ったことをまとめてみる。

まず前提として、SPFレコードは、本人確認に利用されている。
具体的には、受信サーバーが、送信サーバー元のDNSに問い合わせて、
送信者のIPとDNSに記載されているSPFレコードのIPが一致していたら認証成功。

そして本題の書き方の例

v=spf1  +ip4:192.168.10.1  –all

v=spf1 はspfを書く際のおまじないのようなもの。
+ip4:192.168.10.1 の +(プラス)については認証許可を意味する。
なので、 192.168.10.1 のメール送信を許可する
–all の-(マイナス)については、拒否を意味する。
なので、全てのIPを拒否するということ。

つまり今回は、 192.168.10.1 以外からのIPを拒否すると考える。

余談。
+include:_spf.google.com とincludeとあった場合、
google.comのSPFレコードを参照するという意味が加わる。

参考
https://baremail.jp/blog/2020/02/28/579/