はじめに
内部ネットワーク内にあるwebサーバーは、デフォルトでnet-toolsのパッケージがインストールされてないため、netstatコマンドが使用出来ませんでした。そのため、外と通信できる踏み台サーバーに、net-toolsのパッケージファイルをダウンロードし、webサーバーに上記のパッケージをアップロードしました。
※scpコマンドは非推奨のため、サーバー間のファイル転送には、sftpコマンドを使用しました。
前提条件
VirtualBox サーバー1台 踏み台 CentOS7 ブリッチ接続
VirtualBox サーバー1台 webサーバー CentOS7 内部ネットワーク
詳細には、以下の構成になっています。
https://qiita.com/gama1234/items/dc6a2b6159d10194a313
踏み台サーバーにパッケージファイルのダウンロードを試しました
パッケージファイルのダウンロードが失敗しました
踏み台サーバーにnet-toolsが既にインストールされていたため、パッケージをダウンロード出来ませんでした。
[test@localhost ~]$ sudo yum install yum-plugin-downloadonly
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp-srv2.kddilabs.jp
* epel: ftp.iij.ad.jp
* extras: ftp-srv2.kddilabs.jp
* updates: ftp.tsukuba.wide.ad.jp
Package yum-3.4.3-168.el7.centos.noarch already installed and latest version
パッケージファイルのダウンロードが成功しました
既にパッケージがインストール済みでも、パッケージをダウンロード出来る手順を試しました。
yum-utilsのパッケージをインストールしました。
$ sudo yum install yum-utils
net-toolsのパッケージファイルをダウンロード出来ました。!!
$ [test@localhost ~]$ sudo yumdownloader net-tools
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp-srv2.kddilabs.jp
* epel: ftp.iij.ad.jp
* extras: ftp-srv2.kddilabs.jp
* updates: ftp.tsukuba.wide.ad.jp
net-tools-2.0-0.25.20131004git.el7.x86_64.rpm | 306 kB 00:00:00
total 308
※yumdownloaderコマンドを実行したフォルダ配下にrpmがダウンロードされました。
[test@localhost ~]$ ls -tlr
-rw-r--r-- 1 root root 312968 Aug 23 2019 net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
[test@localhost ~]$$
webサーバーにパッケージファイルをアップロードしました
踏み台サーバーにssh接続した後、webサーバーにsftpで接続し、net-toolsのパッケージファイルをアップロードしました
sftpコマンドの使い方は以下のサイトを参考にしました。
https://setechlog.com/sftp-how-to-use/
※sftpコマンドはデフォルトで入っていたため、パッケージのインストールはしていません。
#1.webサーバーにsftp接続しました。
[test@localhost ~]$ sftp root@10.0.1.1
root@10.0.1.1's password:
Connected to 10.0.1.1.
sftp>
#2.踏み台サーバーのカレントディレクトリを確認した
sftp> lpwd
Local working directory: /home/test
#3.踏み台サーバーのカレントディレクトリにrpmファイルがあることを確認した
sftp> lls -ltr *rpm
-rw-r--r-- 1 root root 312968 Aug 23 2019 net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
sftp>
#4.webサーバーのカレントディレクトリを確認した
sftp> pwd
Remote working directory: /root
#5.webサーバーのカレントディレクトリを/tmpに移動した
sftp> cd /tmp
sftp> pwd
Remote working directory: /tmp
sftp>
#6.net-toolsのパッケージファイルをwebサーバーへアップロードした
sftp> put *rpm
Uploading net-tools-2.0-0.25.20131004git.el7.x86_64.rpm to /tmp/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
net-tools-2.0-0.25.20131004git.el7.x86_64.rpm 100% 306KB 14.5MB/s 00:00
#7.sftpの接続を終了しました
sftp> bye
webサーバーにnet-toolsのパッケージファイルをインストールしました
net-toolsのパッケージファイルが存在すること確認しました。
[root@localhost tmp]# ls -ltr *rpm
-rw-r--r--. 1 root root 312968 Jun 30 07:18 net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
[root@localhost tmp]#
[root@localhost tmp]#
[root@localhost tmp]# rpm -ivh net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:net-tools-2.0-0.25.20131004git.el################################# [100%]
[root@localhost tmp]#
[root@localhost tmp]# rpm -qa | grep net-tools
net-tools-2.0-0.25.20131004git.el7.x86_64
webサーバーでnetstatコマンドが使えることを確認しました
[root@localhost tmp]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:46:b7:fe brd ff:ff:ff:ff:ff:ff
inet 10.0.1.1/24 brd 10.0.1.255 scope global noprefixroute enp0s3
valid_lft forever preferred_lft forever
inet6 ipv6アドレス scope link noprefixroute
valid_lft forever preferred_lft forever
[root@localhost tmp]#
[root@localhost tmp]#
[root@localhost tmp]# netstat | grep ssh
tcp 0 0 localhost.localdoma:ssh 10.0.1.2:33302 ESTABLISHED
[root@localhost tmp]#
補足ですが、依存関係を含めてパッケージファイルのインストールを試しました。
tmpフォルダに、phpのパッケージファイルの依存関係も含めてインストールするコマンドを実行しました。
[test@localhost tmp]$ sudo yumdownloader --destdir=/tmp --enablerepo=remi --resolve php73
インストール中画面
[test@localhost tmp]$ pwd
/tmp
[test@localhost tmp]$ ls -tlr
total 0
[test@localhost tmp]$
[test@localhost tmp]$ sudo yumdownloader --destdir=/tmp --enablerepo=remi --resolve php73
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp-srv2.kddilabs.jp
* epel: ftp.iij.ad.jp
* extras: ftp-srv2.kddilabs.jp
* remi: ftp.riken.jp
* updates: ftp-srv2.kddilabs.jp
remi | 3.0 kB 00:00:00
remi/primary_db | 3.3 MB 00:00:00
--> Running transaction check
---> Package php73.x86_64 0:2.0-1.el7.remi will be installed
--> Processing Dependency: php73-runtime(x86-64) = 2.0-1.el7.remi for package: php73-2.0-1.el7.remi.x86_64
--> Processing Dependency: php73-runtime for package: php73-2.0-1.el7.remi.x86_64
--> Processing Dependency: php73-php-common(x86-64) for package: php73-2.0-1.el7.remi.x86_64
--> Processing Dependency: php73-php-cli(x86-64) for package: php73-2.0-1.el7.remi.x86_64
--> Running transaction check
---> Package php73-php-cli.x86_64 0:7.3.33-3.el7.remi will be installed
---> Package php73-php-common.x86_64 0:7.3.33-3.el7.remi will be installed
--> Processing Dependency: php73-php-json(x86-64) = 7.3.33-3.el7.remi for package: php73-php-common-7.3.33-3.el7.remi.x86_64
---> Package php73-runtime.x86_64 0:2.0-1.el7.remi will be installed
--> Running transaction check
---> Package php73-php-json.x86_64 0:7.3.33-3.el7.remi will be installed
--> Finished Dependency Resolution
(1/5): php73-2.0-1.el7.remi.x86_64.rpm | 2.3 kB 00:00:00
(2/5): php73-php-common-7.3.33-3.el7.remi.x86_64.rpm | 655 kB 00:00:00
(3/5): php73-php-json-7.3.33-3.el7.remi.x86_64.rpm | 74 kB 00:00:00
(4/5): php73-runtime-2.0-1.el7.remi.x86_64.rpm | 1.1 MB 00:00:00
(5/5): php73-php-cli-7.3.33-3.el7.remi.x86_64.rpm | 3.3 MB 00:00:01
インストール完了しました。
[test@localhost tmp]$ ls -ltr
total 5268
-rw-r--r-- 1 root root 1199552 Feb 20 2019 php73-runtime-2.0-1.el7.remi.x86_64.rpm
-rw-r--r-- 1 root root 2384 Feb 20 2019 php73-2.0-1.el7.remi.x86_64.rpm
-rw-r--r-- 1 root root 670248 Jun 7 18:07 php73-php-common-7.3.33-3.el7.remi.x86_64.rpm
-rw-r--r-- 1 root root 75432 Jun 7 18:07 php73-php-json-7.3.33-3.el7.remi.x86_64.rpm
-rw-r--r-- 1 root root 3439116 Jun 7 18:07 php73-php-cli-7.3.33-3.el7.remi.x86_64.rpm
[test@localhost tmp]$
まとめ
ローカルリポジトリを準備していない環境では、yumコマンドを使用すると、パッケージファイルをインターネット経由で、ダウンロードしようとするため、外と通信できないサーバーでは、yumコマンドは使用できません。
パッケージファイルのインストール方法としては、
Google検索エンジンを使用して、一つづつrpmパッケージファイルを調べてダウンロードした
物をインストールすると、依存関係でひっかかり、インストールが上手くいかないため、お勧めできません。
外と通信できるサーバーに、yumdownloaderコマンドを使用して、依存関係も含めてrpmパッケージ自体をダウンロードした後、内部サーバーに上記のパッケージファイルをアップロードして、インストールする方法もあります。
本投稿のnetstatコマンドは問題なくインストール出来ましたが、
nmapコマンドを同様な手順で、yumdownloaderコマンドを使用してインストールしたところ、依存関係でインストール出来ませんでした。
補足事項ですが、rpmパッケージファイルがすべて揃っていても、インストールする順番によって依存関係でインストール出来ないことがあります。その場合、rpmパッケージファイルが大量にある場合は、インストールにとても苦戦します。
rpmパッケージの依存にひっかかると、一日かけても解決できない場合があり、手間と工数がかかってしまいます。
そのため、rpmパッケージをインストール際は一時的に、内部サーバーにNATを使用して、
外と通信できる状態にして、yumコマンド等を使用して、パッケージをインストールした方が手間がかからないため、個人的には良いと思いました。
セキュリティ的にどうしても内部サーバーが外と通信できない環境もあるため、
NATを使用する以外に、何か良い方法がないか今後勉強が必要だと思ってます。
この記事が参考にして頂ければ幸いです。