■debian 10でgns3を使ってみる。 $ lsb_release -d Description: Debian GNU/Linux 10 (buster) $ python3 --version Python 3.7.3 ■後述のubuntuのapt-get/dpkgではpython3.6用のため、 pip3を使う。 $ pip3 search gns3 gns3-gui (2.2.0) - GNS3 graphical interface for the GNS3 server. gns3-server (2.2.0) - GNS3 server gns3-proxy (0.5) - GNS3 Proxy based on proxy.py by Abhinav Singh (https://github.com/abhinavsingh/proxy.py) gns3-netifaces (0.10.4.1) - Portable network interface information. GNS3 fork for solving a Python 3 issue gns3-net-converter (1.3.0) - Official fork by GNS3 team of the gns3 converter.Convert old ini-style GNS3 topologies (<=0.8.7) to the newer version 1+ JSON format gns3-converter (1.2.4) - Convert old ini-style GNS3 topologies (<=0.8.7) to the newer version 1+ JSON format gns3fy (0.5.2) - Python wrapper around GNS3 Server API pygns3-elsholz (3.11) - Python implementation of the GNS3 API. Fork by elsholz from mvdwoord/PyGNS3 $ pip3 install --upgrade gns3-server gns3-gui $ /usr/local/bin/pip3 search gns3 | lsec INSTALLED gns3-gui (2.2.0) - GNS3 graphical interface for the GNS3 server. INSTALLED: 2.2.0 (latest) gns3-server (2.2.0) - GNS3 server INSTALLED: 2.2.0 (latest) $ gns3 Please install the PyQt5.QtWebSockets module $ pip3 search PyQt5 | grep ^PyQt5 PyQt5-sip (12.7.0) - The sip module support for PyQt5 PyQt5-stubs (5.13.0.1) - PEP561 stub files for the PyQt5 framework PyQt5 (5.13.1) - Python bindings for the Qt cross platform UI and application toolkit PyQt5Designer (5.13.1) - PyQt5 Designer PyQt5Singleton (0.1) - A simple singleton implementation to work with PyQt5 $ pip3 install --upgrade PyQt5 $ pip3 search PyQt5 | lsec INSTALLED PyQt5-sip (12.7.0) - The sip module support for PyQt5 INSTALLED: 12.7.0 (latest) PyQt5 (5.13.1) - Python bindings for the Qt cross platform UI and application toolkit INSTALLED: 5.13.1 (latest) ■ユーザ権限では「127.0.0.1:3080」が立ち上がらない。「sudo」ならイケるので何かが足りない。 $ gns3 2>&1 | awk '/127.0.0.1/{gsub("\134. ","\n",$0);print $0}' 2019-10-17 22:29:25 CRITICAL topology.py:250 Cannot connect to http://127.0.0.1:3080 Please check if GNS3 is allowed in your antivirus and firewall And that server version is 2.2.0. ■グループを追加していなければ追加する。 これは127.0.0.1:3080がつながらない問題とは異なる。 $ awk -F\: '/ubridge|libvirt|kvm|wireshark|docker/{print "gpasswd -a labunix "$1}' /etc/group | sudo sh [sudo] labunix のパスワード: ユーザ labunix をグループ kvm に追加 ユーザ labunix をグループ libvirt に追加 ユーザ labunix をグループ libvirt-qemu に追加 ユーザ labunix をグループ ubridge に追加 ユーザ labunix をグループ docker に追加 ■以下は問題なさそう。 $ pip3 show gns3-server | grep Location Location: /usr/local/lib/python3.7/dist-packages $ awk '/user|group|3080|127.0.0.1|localhost/{print FILENAME";"$0}' $(find /usr/local/lib/python* -type f -name "topology.py") /usr/local/lib/python3.7/dist-packages/gns3server/controller/topology.py; "host": server.get("host", "localhost"), /usr/local/lib/python3.7/dist-packages/gns3server/controller/topology.py; "port": server.get("port", 3080), ■どこかでhostを違う値に書き換えているはず。 「host = None」の値を書き換え。 $ awk '/^host/{print FILENAME";"$0}' $(find ~/.config/GNS3/ -type f) /home/labunix/.config/GNS3/2.2/gns3_server.conf;host = None /home/labunix/.config/GNS3/gns3_server.conf;host = 127.0.0.1 $ sed -i -e 's/host = None/host = localhost/' .config/GNS3/2.2/gns3_server.conf ■正常に起動した。 $ gns3 & ■もしかしてデフォルトのユーザ用コンフィグが間違っている? と思ったら、そうみたい。 GNS3 2.2 installation and configuration: Includes GNS Web UI demo https://www.gns3.com/community/discussion/gns3-2-2-installation-and-config ■ところでrootユーザなら起動したので、再確認したところ、「127.0.0.1」だった。 rootユーザも2.2配下なので、ログインユーザ用のgns3_server.confだけがおかしい。 gns3のdist-packagesと、rootユーザのどちらに合わせるかは、 IPv4固定にしたいとかがなく、どちらも動くのであればdist-packagesの方がベターだと思うけど、 これは各自の判断で。 $ sudo sdiff -s /home/labunix/.config/GNS3/2.2/gns3_server.conf /root/.config/GNS3/2.2/gns3_server.conf | grep host host = localhost | host = 127.0.0.1 ghost_ios_support = True < ■参考:以下のstretchからの移行としてapt-getでは失敗したので削除した手順 $ sudo sed -i -e 's/xenial/bionic/' /etc/apt/sources.list.d/gns3.list $ cat /etc/apt/sources.list.d/gns3.list deb http://ppa.launchpad.net/gns3/ppa/ubuntu bionic main deb-src http://ppa.launchpad.net/gns3/ppa/ubuntu bionic main ■GPGキーがなければ追加する。 $ apt-key finger F88F6D313016330404F710FC9A2FD067A2E3EF7B pub rsa1024 2013-07-06 [SC] F88F 6D31 3016 3304 04F7 10FC 9A2F D067 A2E3 EF7B uid [ 不明 ] Launchpad PPA for GNS3 $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F88F6D313016330404F710FC9A2FD067A2E3EF7B ■GNS3をインストール $ sudo apt install -y gns3-gui $ dpkg -l | awk '/docker|ubridge|wireshark/&&$1 ~ /^ii/{print $2,$3,$4}' docker-ce 5:19.03.3~3-0~debian-buster amd64 docker-ce-cli 5:19.03.3~3-0~debian-buster amd64 libwireshark-data 2.6.8-1.1 all libwireshark11:amd64 2.6.8-1.1 amd64 ubridge 0.9.16-1~xenial1 amd64 wireshark 2.6.8-1.1 amd64 wireshark-common 2.6.8-1.1 amd64 wireshark-doc 2.6.8-1.1 all wireshark-qt 2.6.8-1.1 amd64 ■python3.7用には作られていないようだ。 $ gns3 Could not find platform independent libraries <prefix> Could not find platform dependent libraries <exec_prefix> Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] Fatal Python error: Py_Initialize: Unable to get the locale encoding ModuleNotFoundError: No module named 'encodings' Current thread 0x00007ff17393e740 (most recent call first): 中止 ■gns3はpython3.6用だった。 $ dpkg -L gns3-gui | awk -F\/ '/python/{for(a=1;a<=NF;a++){if($a ~ /^python/){print $a | "sort -uV"}}}' python python3 python3.6 python3.6m python-config python-wheels ■削除 ubridgeも一緒に消えてしまうので再インストール。 $ dpkg -l | awk '/gns3/&&/^ii/{print "apt-get purge -y "$2}' | sudo sh $ sudo apt-get autoremove -y $ sudo apt-get install -y ubridge $ grep ubridge /etc/group ubridge:x:142:labunix $ dpkg -l | awk '/^rc/{print $2,$3}' libpython3.5-minimal:amd64 3.5.3-1+deb9u1 python3.5-minimal 3.5.3-1+deb9u1 spice-client-glib-usb-acl-helper 0.35-2 $ dpkg -l | awk '/^rc/{print "apt-get purge -y "$2}' | sudo sh $ dpkg -l | awk '/^rc/{print $2,$3}'