LoginSignup
1
2

More than 3 years have passed since last update.

Fortigate REST APIでDHCPコンフィグ情報を取得する

Last updated at Posted at 2021-04-11

はじめに/結論

趣味でFortiGateのREST APIのお勉強しています。
今回はFortiGateのREST APIにてDHCP関連の以下の情報をPHPで取得する方法について紹介します。

※この記事はPHPについて書いていますが、
 REST APIのURLはどの言語でも変わりませんので、最初に結論のURLも書いておきます。

(1) FortiGateからDHCPで払い出しているIPアドレスのリストを取得

https://"FortiGateのIPアドレス"/api/v2/monitor/system/dhcp



(2) FortiGateのDHCPコンフィグ情報を取得

https://"FortiGateのIPアドレス"/api/v2/cmdb/system.dhcp/server

環境

  • FortiGate: FG-60D, ファームウェア:v6.0.10
  • PHP:PHP 8.0.3 (cli)

コード

fgApiTest.php
<?php

$fghost = "ip address";
$fglogin = "login id";
$fgpass = "login password";
$url = 'https://'.$fghost.'/logincheck';
$data = array('username'=>$fglogin,'secretkey'=>$fgpass);
$post_data = http_build_query($data);
$curl_connection = curl_init($url);

curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($curl_connection, CURLOPT_POST, TRUE);
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl_connection, CURLOPT_HEADER, TRUE);
$response = curl_exec($curl_connection);
preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $response, $matches);

// (1) DHCPで払い出しているIPアドレスのリストを取得
$curl_connection = curl_init('https://'.$fghost.'/api/v2/monitor/system/dhcp/'); 
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl_connection, CURLOPT_COOKIE, $matches[1][0]);
$response = curl_exec($curl_connection);
echo ($response);

// (2) DHCPに関するコンフィグ情報を取得
$curl_connection = curl_init('https://'.$fghost.'/api/v2/cmdb/system.dhcp/server'); 
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl_connection, CURLOPT_COOKIE, $matches[1][0]);
$response = curl_exec($curl_connection);
echo ($response);

curl_close($curl_connection);

まとめ

(1)DHCPで払い出しているIPアドレスのリストを取得
- CUIの「execute dhcp lease-list」のような結果を取得可能

\$curl_connection = curl_init('https://'.$fghost.'/api/v2/monitor/system/dhcp/');



(2) DHCPに関するコンフィグ情報を取得
- CUIの「show system dhcp serve」のような結果を取得可能

\$curl_connection = curl_init('https://'.$fghost.'/api/v2/cmdb/system.dhcp/server');

所感

FortiGateのREST APIの情報はインターネット上で公開されている情報が少なく、
情報を集めるのに苦労しました:sweat:

「(1)DHCPで払い出しているIPアドレスのリストを取得」は色々と試しているうちに発見できましたが、
「(2) DHCPに関するコンフィグ情報を取得」の "system.dhcp" という書き方は思いつくことができず、
インターネットを2時間程度彷徨い、参考サイト[2]のスウェーデンのサイトで
情報を発見することがでました。 インターネットは偉大:relaxed:

FortiGate REST APIの詳しい情報は
「Fortinet Developer Network(FNDN)開発者コミュニティ」で提供されているようですが、
このサイトに登録するためにはFortinetの従業員2名以上にスポンサーになってもらう必要があるようで、
趣味でFortiGate REST APIをお勉強している者にとってはハードルが高すぎです。。。

参考サイト

[1] PHPからFortinet REST APIの利用方法
Rest api usage | Fortinet Technical Discussion Forums, 2021/4/12アクセス

[2] Fortinet REST APIでDHCPに関するコンフィグ情報の取得方法
Fortigate API – FortiOS 6.2 – Balanced, 2021/4/11アクセス

[3]FNDNサイト
Fortinet Developer Network(FNDN)開発者コミュニティ - フォーティネット, 2021/4/11アクセス

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2