最近EVE-NGをよく利用しているのですが、GNS3やCisco modeling labs(CML)では当たり前のようにできることでもEVE-NGだとできなかったりしています。その一つとして起動しているノードへのケーブル接続ができない点です。停止ノードから起動ノードへケーブルの描画はできても接続には至りませんし、起動ノードについてはケーブル自体表示されない状態になります。
今回は上記仕様を変更してみたいと思います。(何かしら理由があってこのような仕様になっているかと思いますので、利用の際は十分テストしてからご利用ください。)
1. 環境
OS:Ubuntu 20.04.5 LTS (GNU/Linux 5.17.8-eve-ng-uksm-wg+ x86_64)
Kernel: eve-ng 5.17.8-eve-ng-uksm-wg+
EVE-NG:5.0.1-13(Community Edition)
PHP:7.4
1. デフォルト仕様の確認
では、適当なLAB上にノードを2つとブリッジを1つ起動してみます。今回は1台はArista、もう1台はFortigateVMで起動しました。ブリッジからケーブル結線しますと、下記画面のようになりますが
画面をリロードするともとに戻っていしまいます。
では、起動時でもへ接続できるように変更してみます。
2. 起動ノードへの接続変更
EVE-NGへSSH接続してファイルを変更します。5217行目をコメントアウトします。
vim /opt/unetlab/html/themes/default/js/functions.js
5217 if ( linksourcedata['status'] == 2 || linktargetdata['status'] == 2 ) { lab_topology.detach( info.connection ) ; return }
↓
5217 // if ( linksourcedata['status'] == 2 || linktargetdata['status'] == 2 ) { lab_topology.detach( info.connection ) ; return }
:wq
画面をリードし、再度ブリッジから接続してみます。いつも通りの画面が出力されますので、Saveをクリックしみます。
2. 起動ノードのケーブル接続
次に起動ノードからケーブル接続できるよう、ノードアイコンがHoverされた際にケーブルアイコンが出るように変更します。676行目の.attr('data-status') == 0 から .attr('data-status') != 3 に変更し、画面をリードします。
vim /opt/unetlab/html/themes/default/js/actions.js
676 if ((ROLE == 'admin' || ROLE == 'editor') && LOCK == 0 && ( $(this).attr('data-status') == 0 || $(this).attr('data-status') == undefined ) && !$('#lab-viewport').hasClass('fre eSelectMode') ) {
↓
676 if ((ROLE == 'admin' || ROLE == 'editor') && LOCK == 0 && ( $(this).attr('data-status') != 3 || $(this).attr('data-status') == undefined ) && !$('#lab-viewport').hasClass('fre eSelectMode') ) {
:wq
ノードアイコンHover時にケーブルアイコンがでてきました。Fortigateと接続してみます。
どのポート接続するかの画面も正しく出てきました。Saveしてみます。
ただ、このままでは通信をする事はできません。理由はインタフェースが利用できるようになるまでのプロセスにあります。EVE-NG上のNodeは起動前に他ノードと接続されているインタフェースのみ利用できるようOS上にbridgeインタフェースを作成していきます。逆に起動している状態で接続されたインタフェースについてはOS上にbridgeインタフェースを作成する仕組みが備わっていません。ですので、起動後に接続したインタフェースを利用した通信は行う事が出来ません。
次回はこの辺りの処理ついて、深堀・改善していきいたいと思います。