CentOS8 へのGNS3 インストール手順

# はじめに
CentOS8 にGNS3 をインストールする手順のみを書きます。
CentOS8 からPython3 が標準搭載されるようになったのでCentOS7 と比べてインストール手順がだいぶ簡略化されました。

- 活用例
- 環境構築
- インストール後の設定
- 使い方
- VM の取り込み

は以下の過去の記事をご覧ください。バージョンが変わっても同じです。

[GNS3 でバックエンド開発を便利に(前編)](https://qiita.com/t-eno/items/52dc7e64ce972c68653d)
[GNS3 でバックエンド開発を便利に(後編)](https://qiita.com/t-eno/items/21a44a75248754deadc3)

# 基本セットアップ
update & reboot

```
sudo dnf -y update
sudo reboot
```

EPEL リポジトリの追加とデフォルトで無効設定。

```
sudo dnf -y install epel-release
sudo dnf config-manager --set-disable epel
```

リモートデスクトップ用のfirewalld のサービス定義を新規作成。

```xml:/etc/firewalld/services/RDP.xml
<?xml version="1.0" encoding="utf-8"?> 
<service>
 <short>RDP</short>
 <description>RDP</description>
 <port protocol="tcp" port="3389"/>
</service>
```

```
sudo chmod 640 /etc/firewalld/services/RDP.xml
```

firewalld の設定。

```
sudo nmcli c mod eth0 connection.zone internal
sudo firewall-cmd --set-default-zone=internal
sudo firewall-cmd --zone=internal --add-service=RDP --permanent
sudo firewall-cmd --zone=internal --remove-service=mdns --permanent
sudo firewall-cmd --zone=internal --remove-service=samba-client --permanent
sudo firewall-cmd --zone=internal --remove-service=dhcpv6-client --permanent
sudo firewall-cmd --reload
```

# GUI 環境のインストールと設定
GNOME Desktop のインストールと起動設定。

```
sudo dnf -y group install "Server with GUI"
sudo systemctl set-default graphical.target
```

RDP のインストール

```
sudo dnf -y --enablerepo=epel install xrdp tigervnc-server
```

色深度を24ビットに変更。

```text:/etc/xrdp/xrdp.ini
max_bpp=24
```

以下2つは、リモートデスクトップしたときに色々警告のポップアップが出ないようにするための設定。
それぞれ、追記と新規作成。

```text:/etc/xdg/autostart/gnome-software-service.desktop
X-GNOME-Autostart-enabled=false
```

```text:/etc/polkit-1/localauthority/50-local.d/allow-colord.pkla
[Allow colord for all users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=yes
ResualtInactive=auth_admin
ResultActive=yes
```

リモートデスクトップサービスの自動起動設定。

```
sudo systemctl enable xrdp.service
```

reboot してリモートデスクトップできるか確認してみる。

```
sudo reboot
```

# GNS3 インストール前の準備

```
mkdir ~/Downloads

sudo ln -s /usr/lib/python3.6 /usr/local/lib/python3.6

sudo dnf -y install make python36-devel

sudo dnf -y install python3-qt5

sudo dnf -y install cmake elfutils-libelf-devel libuuid-devel
sudo dnf -y --enablerepo=PowerTools install libpcap-devel 

sudo dnf -y install openssl-libs.i686 libgcc.i686 libnsl.i686
sudo ln -s /usr/lib/libcrypto.so.1.1.1 /usr/lib/libcrypto.so.4

cd ~/Downloads
wget http://ndevilla.free.fr/iniparser/iniparser-3.1.tar.gz
tar zxf iniparser-3.1.tar.gz
cd iniparser
make
sudo cp libiniparser* /usr/lib
sudo cp src/*.h /usr/include
``` 

# GNS3 のインストール

```
cd ~/Downloads
wget https://github.com/GNS3/gns3-gui/releases/download/v2.2.0/GNS3-2.2.0.source.zip
unzip GNS3-2.2.0.source.zip

unzip gns3-server-2.2.0.zip
cd gns3-server-2.2.0
sudo python3 setup.py install

cd ~/Downloads
unzip gns3-gui-2.2.0.zip
cd gns3-gui-2.2.0
sudo python3 setup.py install

cd ~/Downloads
unzip ubridge-0.9.14.zip
cd ubridge-0.9.14
make
sudo make install

cd ~/Downloads
unzip dynamips-0.2.17
cd dynamips-0.2.17
mkdir build
cd build
cmake ..
make
sudo make install
sudo setcap cap_net_admin,cap_net_raw=ep /usr/local/bin/dynamips

sudo dnf -y install bison flex

sudo dnf -y --enablerepo=PowerTools install glibc-static
cd ~/Downloads
unzip vpcs-0.6.1.zip
cd vpcs-0.6.1/src
#
# 「./getopt.h:53:5: エラー: ‘getopt’ と型が競合しています」
# というエラーが出るのでgetopt.c:113, getopt.h:53 のgetopt をgetopt2 とでも編集する。
#
./mk.sh
sudo cp vpcs /usr/local/bin

cd ~/Downloads
wget http://sourceforge.net/projects/cpulimit/files/cpulimit/cpulimit/cpulimit-1.1.tar.gz
tar zxvf cpulimit-1.1.tar.gz
cd cpulimit-1.1
make
sudo cp cpulimit /usr/local/bin

sudo ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-system-x86_64

sudo dnf -y install wireshark
```

# おわりに
CentOS6, GNS3 1.5.x の頃のインストール手順を踏襲しているので、
不要なものまでインストールしていたり、効率の悪いやり方をしているかもしれません。
改善点があればご連絡下さい。