1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

外と通信できないサーバーにrpmパッケージをインストール方法を試しました

Last updated at Posted at 2022-06-30

はじめに

内部ネットワーク内にあるwebサーバーは、デフォルトでnet-toolsのパッケージがインストールされてないため、netstatコマンドが使用出来ませんでした。そのため、外と通信できる踏み台サーバーに、net-toolsのパッケージファイルをダウンロードし、webサーバーに上記のパッケージをアップロードしました。
※scpコマンドは非推奨のため、サーバー間のファイル転送には、sftpコマンドを使用しました。

前提条件

VirtualBox サーバー1台 踏み台   CentOS7 ブリッチ接続
VirtualBox サーバー1台 webサーバー CentOS7 内部ネットワーク
詳細には、以下の構成になっています。
https://qiita.com/gama1234/items/dc6a2b6159d10194a313

踏み台サーバーにパッケージファイルのダウンロードを試しました

以下のサイトが大変勉強になりました。
https://geekpeach.net/ja/%E4%BE%9D%E5%AD%98%E9%96%A2%E4%BF%82%E3%81%AE%E3%81%82%E3%82%8Brpm%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89-yumdownloader-vs-yum-do

パッケージファイルのダウンロードが失敗しました

踏み台サーバーに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を使用する以外に、何か良い方法がないか今後勉強が必要だと思ってます。

この記事が参考にして頂ければ幸いです。

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?