- 投稿日:2020-02-08T23:37:28+09:00
ハッキング・ラボの作り方 - Kali Linux(2020.1) VirtualBox 64-bit編 その2-
はじめに
- 『ハッキング・ラボのつくりかた』の第1部第2章 仮想環境によるハッキング・ラボの構築メモです。
- ネットワーク設定で、トラブルが多い傾向にあるので参考に置いておきます。
構築環境
- ホストOS:Windows10 Home (Version:1909)
- VirtualBox:6.0.16 r 135674
- 最新版のKali Linux(2020.1) VirtulBox 64-bit版
サポートサイト
- 困った時は、以下の本家サポートサイトを参照。
インターネットにつながらない
Kali Linuxを起動する
ネットワークの設定を見ると以下のように、EthernetにWired Connection1しかない
この状態だとインターネットに接続出来ないので、何も進めなくなってしまう。
ネットワーク設定
- 画面左上一番左のKaliアイコンをクリックする
- Settings - Advanced Network Configurationをクリックする
- Network Connections - [+]をクリックしてインタフェースを追加する
- Ethernet - Create…ボタンをクリックする
- Connection nameを、Ethernet NATに変更する(必須ではないです)
- Ethernetタブ - Device - eth0を選択する
- [✓ Save]ボタンをクリックする
- 右上の[x]ボタンをクリックする
- 動作を確認する
- Webブラウザを起動して確認する
- terminalを起動して確認する
terminalで確認$ ip addr $ ip routeおわりに
- ネットワークの勉強は、マスタリングTCP/IPが定番です。
- 博士と助手も定番です。
- 投稿日:2020-02-08T19:10:43+09:00
デュアルブートもVMももういらない!WSL2&Windows TerminalでLinux環境を構築しよう【WSL2】
- 2019年のMS Buildにて、WSL2の発表がありました
- https://www.youtube.com/watch?v=GtVcDo1G8r8
- de:codeのKeyNoteでの発表動画です。54:40あたりがWSL2の紹介になります
- WSL2をインストールすることにより、WindowsにLinuxのカーネルが含まれる状態になるので、Linux環境を構築するためのVMやデュアルブートが不要な状態になります
- de:code 2019のKeyNoteでは
npm isntall
の実行がめちゃくちゃ速くなるよ!というデモもやってましたWSL2をインストールする(Ubuntu)
- MS公式のこちらのドキュメントを参考にしました:https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-install
WindowsのバージョンをPreview版に更新
- まずWSL2を利用するためには。WindowsのPreview版バージョンを利用する必要があります
- (Preview版のため、万が一のためにバックアップを取っておくことをおススメします)
バージョンを確認するには、コマンドプロンプトで
ver
コマンドを実行し、Windowsのバージョンが10.0.18917
以上であることを確認しますC:\Users\user1>ver Microsoft Windows [Version 10.0.19041.21]Linuxのディストリビューションをインストールする
- まず、Linuxディストリビューションがインストールされているか確認します
- Linuxがインストールされていない場合は下のメッセージが出てきます
PS C:\Users\user1> wsl -l Linux 用 Windows サブシステムには、ディストリビューションがインストールされていません。 ディストリビューションは Microsoft Store にアクセスしてインストールすることができます: https://aka.ms/wslstore
https://aka.ms/wslstore
にアクセスするとMicrosoft Storeが開き、インストール可能なディストリビューションが表示されます Installing, this may take a few minutes... Please create a default UNIX user account. The username does not need to match your Windows username. For more information visit: https://aka.ms/wslusers Enter new UNIX username: myuser Enter new UNIX password:
- Linuxコマンドももちろん打てます。これでインストールできてますね!
myuser@DESKTOP-KH1ORKF:~$ ls myuser@DESKTOP-KH1ORKF:~$ cd .. myuser@DESKTOP-KH1ORKF:/home$WSLを有効化する
- WSLを有効化するために下の2つのコマンドを入力した後、PCを再起動します
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- 再起動後に
wsl -l
コマンドを入力すると先ほどインストールしたディストリビューションが表示されますPS C:\Users\user1> wsl -l Linux 用 Windows サブシステム ディストリビューション: Ubuntu (既定)
- 最後に、WSL2のUbuntuディストリビューションを設定します
PS C:\Users\user1> wsl --set-version Ubuntu 2 変換中です。この処理には数分かかることがあります... WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください 変換が完了しました。
- これでWSL2が使えるようになりました!
Windows Terminalをインストールする
- Linuxの環境構築はWSL2だけのインストールで完了ですが、せっかくなのでWSL2と同時期に発表されたWindows Terminalも使ってみます
- Windows Terminalは簡単に言うと「コマンドプロンプトの進化版」です
- コマンドプロンプトやPowerShellはもちろん、WSLをインストールすることでLinuxのターミナルもこのWindows Terminal1つで実行できてしまう優れものです
- Windows Terminal紹介動画:https://www.youtube.com/watch?v=8gw0rXPMMPE
- Windows TerminalはMicrosoftストアからPreview版をインストールできます
- Windowsターミナルを起動すると、先ほどインストールしたUbuntuのターミナルもちゃんと選べる状態になっていますね
- 投稿日:2020-02-08T18:58:41+09:00
Flutter クロスプラットフォームの最新サポート状況
はじめに
Flutterのクロスプラットフォームのサポート状況をまとめています。
変化があれば随時更新予定です。サポート状況
プラットフォーム サポート状況 対応バージョン 発表イベント等のリンク Android 正式サポート済 v1.0.0以降 Flutter Live 18 iOS 正式サポート済 v1.0.0以降 Flutter Live 18 Web ベータ版 v1.12以降(beta, dev, masterチャンネルのみで利用可) Flutter Interact '19 macOS アルファ版 -(dev, masterチャンネルのみで利用可) Flutter Live 18 Linux Preview版 同上 同上 Windows Preview版 同上 同上 ベータ版の意味
Flutter SDKとしてはある程度機能がFixし、開発者が使い始めるレベルに到達したことを意味しています。
アルファ版の意味
基本構成が大きく変わる可能性は低いが、仕様&実装が今後も変わる可能性が残っており、プロダクトへの適用はまだ難しい状況です。
ただ、ある程度動くレベルにはなっているため、お試しで利用可能です。Preview版の意味
完全なお試し&試験レベルで、今後も大きく仕様や実装を変える可能性が残っている状況です。
まだまだTODOが多く残っており、とりあえず動くというレベル感ですが、
一般的にはユーザーに試用してもらうことで新たな知見やフィードバックを得るなどの目的の段階です。今後の予想
過去を見てみると、アルファ→ベータ→正式版と大体1年サイクルで昇格しています。そのため、Web版が2020年末に正式サポートされ、macOSがベータ版になるのではないかと予想しています。
macOSはほとんどiOSのようなものなので、デスクトップで必要になる機能を追加でサポート出来れば対応できるでしょうという感じです。
Linux向けはそもそも需要があるのか?という話の優先度が常に付き纏いますが、こちらもやれば出来るという感じでしょうか。
仕組み的にはWindowsデスクトップ対応が一番難しいのではないでしょうか。
デスクトップ向けもElectron並に頑張って開発すれば可能だと思いますが、費用対効果と優先度を考慮して進められるかと思われます。
Flutter SDK リリース履歴
- 投稿日:2020-02-08T18:16:36+09:00
ハッキング・ラボの作り方 - Kali Linux(2020.1) VirtualBox 64-bit編 -
はじめに
- 『ハッキング・ラボのつくりかた』の第1部第2章 仮想環境によるハッキング・ラボの構築メモです。
構築環境
- ホストOS:Windows10 Home (Version:1909)
- VirtualBox:6.0.16 r 135674
- 最新版のKali Linux(2020.1) VirtulBox 64-bit版
サポートサイト
- 困った時は、以下の本家サポートサイトを参照。
ダウンロードサイト
初期設定
- Kali Linuxのバージョンアップによる書籍との相違点をかいつまんで記載しています。
- インポート自体は、特に問題なく終わりました。(ライセンスの同意があるくらい。)
- ネットワーク設定は、「NAT」1つのみ。
- 日本語環境ではありません。
ログイン
- ログインユーザが変わっています。
User Password kali kali キーボード
- 画面左上一番左のKaliアイコンをクリックする
- Settings - Keyboardをクリックする
- Layoutタブをクリックする
- Use system defaultsのチェックを外す
- [+ Add]ボタンをクリックして、Japaneseを追加する
- [- Remove]ボタンでEnglish(Us)を削除する
- [x Close]ボタンをクリックする
タイムゾーン
起動するブラウザ
- 画面左上一番左のKaliアイコンをクリックする
- Settings - Preferred Applicationsをクリックする
- Internetタブ - Web BrowserでChromiumを選択する(Mozilla Firefoxなどお好みで。)
- [x Close]ボタンをクリックする
日本語表示・文字化け対策
パッケージの最新化$ sudo apt update $ sudo apt upgradeロケールを変更する$ sudo dpkg-reconfigure locales文字化けするので、フォントをアンインストール、再インストールする$ sudo apt remove fonts-vlgothic $ sudo apt install fonts-vlgothic@serion253 さんの記事
日本語入力
日本語入力はfcitx-mozcをインストールする$ sudo apt install fcitx-mozcおわりに
- ハッキング・ラボは、インフラ構築からセキュリティまで学べて楽しい。
追記(2020.02.08 23:40)
- 投稿日:2020-02-08T17:15:07+09:00
CentOS8にDockerをインストール。名前解決できなかったのが解消した。
はじめに
さっき書いた ESXi6.7にCentOS8を最小構成で構築 の作業後に、dockerを入れたけど、dnfでこけてしまった。
pingでIP直打ちは外に通るのに、名前解決ができない。が解決したので、記録として残します。
コンテナ起動時に--net=host
をやりたくなかったので情報をさがしてみました。解決方法だけ記載
ホスト側で、NAPTの設定したら動いた。
# firewall-cmd --add-masquerade --permanent # firewall-cmd --reload前提条件
最小構成でインストールしたからでしょうか?nftablesは起動しておらず、firewalldが動作し、裏でiptablesが動いている状態でした。
nftablesは停止している。
# systemctl status nftables ● nftables.service - Netfilter Tables Loaded: loaded (/usr/lib/systemd/system/nftables.service; disabled; vendor preset: disabled) Active: inactive (dead) Docs: man:nft(8)firewalldが動いている。
# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-02-08 16:28:47 JST; 27min ago Docs: man:firewalld(1) Main PID: 1182 (firewalld) Tasks: 2 (limit: 23585) Memory: 38.9M CGroup: /system.slice/firewalld.service mq1182 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopidiptablesが動いている。
# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy DROP) target prot opt source destination DOCKER-USER all -- anywhere anywhere DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhere ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED DOCKER all -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain DOCKER (1 references) target prot opt source destination Chain DOCKER-ISOLATION-STAGE-1 (1 references) target prot opt source destination DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere RETURN all -- anywhere anywhere Chain DOCKER-ISOLATION-STAGE-2 (1 references) target prot opt source destination DROP all -- anywhere anywhere RETURN all -- anywhere anywhere Chain DOCKER-USER (1 references) target prot opt source destination RETURN all -- anywhere anywheredockerを使えるようにする
パッケージのインストール
インストール時のパッケージのバージョンではねられるので、
--nobest
をつけてインストールする。# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # dnf install --nobest docker-ce docker-ce-cli containerd.ioサービス設定しておく
# systemctl enable docker # systemctl start dockerテストで
hello-world
を立ち上げてみる。
うまくいけば、下のように、Hello from Docker!
が表示される# docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:9572f7cdcee8591948c2963463447a53466950b3fc15a247fcad1917ca215a2f Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/CentOS8のイメージで起動してみる
systemctl
を動作させるために、/sbin/init
で走らせないとダメぽい。# docker pull centos:centos8 # docker run --privileged -it -d --name centos8_check centos:centos8 /sbin/init # docker exec -it centos8_check /bin/bash [root@fced0781866f /]#ログインできた。
トラブル発生
名前解決できない!
コンテナ内でepelパッケージのインストールしてみようとしたら、できない。
[root@fced0781866f /]# dnf install epel-release Failed to set locale, defaulting to C.UTF-8 CentOS-8 - AppStream 0.0 B/s | 0 B 00:05 Failed to download metadata for repo 'AppStream' Error: Failed to download metadata for repo 'AppStream'コンテナ→GooglePublicDNSはIP直打ちで到達できる。
[root@fced0781866f /]# ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=52 time=5.60 msコンテナのDNSはLAN内のサーバを参照している
[root@fced0781866f /]# cat /etc/resolv.conf # Generated by NetworkManager search prosper2.net nameserver 10.254.10.241コンテナ→DNSへのpingは通る
[root@fced0781866f /]# ping 10.254.10.241 PING 10.254.10.241 (10.254.10.241) 56(84) bytes of data. 64 bytes from 10.254.10.241: icmp_seq=1 ttl=127 time=0.467 msのに、名前解決できない
[root@fced0781866f /]# ping dns.google ping: dns.google: Name or service not knownなぜだ。。。
解消できた
ホスト側で、NAPTの設定したら動いた。
# firewall-cmd --add-masquerade --permanent # firewall-cmd --reloadちゃんと
dnf install epel-release
できた。# dnf install epel-release Failed to set locale, defaulting to C.UTF-8 CentOS-8 - AppStream 4.7 MB/s | 6.4 MB 00:01 CentOS-8 - Base 4.8 MB/s | 5.0 MB 00:01 CentOS-8 - Extras 6.2 kB/s | 2.1 kB 00:00 Dependencies resolved. =============================================================================================== Package Architecture Version Repository Size =============================================================================================== Installing: epel-release noarch 8-5.el8 extras 22 k Transaction Summary =============================================================================================== Install 1 Package Total download size: 22 k Installed size: 30 k Is this ok [y/N]: y Downloading Packages: epel-release-8-5.el8.noarch.rpm 915 kB/s | 22 kB 00:00 ----------------------------------------------------------------------------------------------- Total 36 kB/s | 22 kB 00:00 warning: /var/cache/dnf/extras-cbfb2f07b0021b7e/packages/epel-release-8-5.el8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY CentOS-8 - Extras 1.6 MB/s | 1.6 kB 00:00 Importing GPG key 0x8483C65D: Userid : "CentOS (CentOS Official Signing Key) <security@centos.org>" Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial Is this ok [y/N]: y Key imported successfully Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : epel-release-8-5.el8.noarch 1/1 Running scriptlet: epel-release-8-5.el8.noarch 1/1 Verifying : epel-release-8-5.el8.noarch 1/1 Installed: epel-release-8-5.el8.noarch Complete!追記
インストール時に
--nobest
でとりあえずは大丈夫だったけど、依存関係のエラーが出続けてしまっていた。# dnf update メタデータの期限切れの最終確認: 0:53:51 時間前の 2020年02月08日 16時38分36秒 に実施しました。 エラー: 問題: package docker-ce-3:19.03.5-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed - cannot install the best update candidate for package docker-ce-3:18.09.1-3.el7.x86_64 - package containerd.io-1.2.10-3.2.el7.x86_64 is excluded - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded - package containerd.io-1.2.2-3.el7.x86_64 is excluded - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded (インストール不可のパッケージをスキップするには、'--skip-broken' を追加してみてください または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)これは嫌なので、無理やりRPMを入れてしまおう。まず、どこにあるか調べる。
# grep stable /etc/yum.repos.d/docker-ce.repo [docker-ce-stable] baseurl=https://download.docker.com/linux/centos/7/$basearch/stableそうか、そもそもCentOS7がターゲットなのか。。。
ここから拾ってこよう。# dnf update https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.10-3.2.el7.x86_64.rpm メタデータの期限切れの最終確認: 1:00:47 時間前の 2020年02月08日 16時38分36秒 に実施しました。 containerd.io-1.2.10-3.2.el7.x86_64.rpm 7.5 MB/s | 23 MB 00:03 依存関係が解決しました。 ======================================================================================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ======================================================================================================================================================================== アップグレード: containerd.io x86_64 1.2.10-3.2.el7 @commandline 23 M トランザクションの概要 ======================================================================================================================================================================== アップグレード 1 パッケージ 合計サイズ: 23 M これでよろしいですか? [y/N]: y パッケージのダウンロード: トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 scriptletの実行中: containerd.io-1.2.10-3.2.el7.x86_64 1/1 アップグレード中 : containerd.io-1.2.10-3.2.el7.x86_64 1/2 scriptletの実行中: containerd.io-1.2.10-3.2.el7.x86_64 1/2 scriptletの実行中: containerd.io-1.2.0-3.el7.x86_64 2/2 整理 : containerd.io-1.2.0-3.el7.x86_64 2/2 scriptletの実行中: containerd.io-1.2.0-3.el7.x86_64 2/2 検証 : containerd.io-1.2.10-3.2.el7.x86_64 1/2 検証 : containerd.io-1.2.0-3.el7.x86_64 2/2 アップグレード済み: containerd.io-1.2.10-3.2.el7.x86_64 完了しました!よしよし、もっかいupdateしよ。
# dnf update メタデータの期限切れの最終確認: 1:01:08 時間前の 2020年02月08日 16時38分36秒 に実施しました。 依存関係が解決しました。 ======================================================================================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ======================================================================================================================================================================== アップグレード: docker-ce x86_64 3:19.03.5-3.el7 docker-ce-stable 24 M トランザクションの概要 ======================================================================================================================================================================== アップグレード 1 パッケージ ダウンロードサイズの合計: 24 M これでよろしいですか? [y/N]: y パッケージのダウンロード: docker-ce-19.03.5-3.el7.x86_64.rpm 7.2 MB/s | 24 MB 00:03 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 合計 7.2 MB/s | 24 MB 00:03 トランザクションの確認を実行中 トランザクションの確認に成功しました。 トランザクションのテストを実行中 トランザクションのテストに成功しました。 トランザクションを実行中 準備 : 1/1 scriptletの実行中: docker-ce-3:19.03.5-3.el7.x86_64 1/1 アップグレード中 : docker-ce-3:19.03.5-3.el7.x86_64 1/2 scriptletの実行中: docker-ce-3:19.03.5-3.el7.x86_64 1/2 scriptletの実行中: docker-ce-3:18.09.1-3.el7.x86_64 2/2 /usr/bin/dockerd は dockerd の為の互換用として設定されていません。 整理 : docker-ce-3:18.09.1-3.el7.x86_64 2/2 scriptletの実行中: docker-ce-3:18.09.1-3.el7.x86_64 2/2 検証 : docker-ce-3:19.03.5-3.el7.x86_64 1/2 検証 : docker-ce-3:18.09.1-3.el7.x86_64 2/2 アップグレード済み: docker-ce-3:19.03.5-3.el7.x86_64 完了しました!うん、大丈夫そう。
# dnf update メタデータの期限切れの最終確認: 1:01:38 時間前の 2020年02月08日 16時38分36秒 に実施しました。 依存関係が解決しました。 行うべきことはありません。 完了しました!よかった。
出典
- 投稿日:2020-02-08T14:58:50+09:00
RK3399 board buildroot
I was a little confused when I try to build buildroot because I was new to buildroot.
So I write this article to help you ,If you are in the same situation as me.
you can see the link below at wiki.friendlyarm.com but It upset me a bit.
buildroot for RK3399 at wiki.friendlyarm.com1 : Install repo Utility
git clone https://github.com/friendlyarm/repo sudo cp repo/repo/usr/bin/2 : Retrive Repo Package from Github
mkdir linuxsdk-friendlyelec cd linuxsdk-friendlyelec repo init -u https://github.com/friendlyarm/buildroot_manifests -b master -m rk3399_linux_release.xml --repo-url=https://github.com/rockchip-linux/repo --no-clone-bundle repo sync -c --no-clone-bundle3 : Setup Compilation Environment
sudo apt-get install repo git gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools autoconf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make binutils build-essential gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev libglade2-dev cvs git mercurial rsync openssh-client subversion asciidoc w3m dblatex graphviz python-matplotlib libc6:i386 libssl-dev texinfo liblz4-tool genext2fs lib32stdc++6you'll see
sudo apt-get install repo git-core...
at wiki.friendlyarm.com but I couldn't use it so justsudo apt-get install repo git ...
4 : Compile Code
1.0 : kernel
./build.sh kernelit will take 3-10 minute
1.1 : u-boot
./build.sh ubootit will take a few minute
1.2 : rootfs
./build.sh rootfsit will take a few hours
5 : Generate Image for SD Card or EMMC
1.0 : Generate Image for SD Card
sudo ./build.sh sd-img1.1 : Flash an image to an SD card:
The "/dev/sdX" needs to be replaced with your actual SD card device name.
./friendlyelec/rk3399/sd-fuse_rk3399/fusing.sh /dev/sdX buildroot
2.0 : Generate Image for EMMC(Eflasher)
sudo ./build.sh emmc-imgCheck Help Info
I will also write a article for Customize Buildroot
- 投稿日:2020-02-08T13:54:44+09:00
CentOS8 サーバー構築(ネットワーク開通とパッケージ更新)
はじめに
前回、
CentOS8(1905)
をインストールするところまでやりましたが、今回はネットワークを開通させてパッケージ管理dnf
でシステムのアップデートまでを実施したいと思います。開いているポートを閉める
とりあえずネットワークを開通するまえに、
SSH
などデフォルトで空いているポートをしめてしまいます。
ネットワーク開通後はもちろんSSH
で接続できるようにしますが、ちゃんとセキュリティを確保したうえで接続できるようにしたいので、一旦不要なポートは閉めてしまいます。早速、
firewall-cmd
コマンドで空いているポートを確認します。[root@localhost ~]# firewall-cmd --list-all public target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
firewall-cmd
は名前のとおり、ファイヤーウォールの設定を行うコマンドです。
firewall-cmd --list-all
で、現在の設定を一覧で確認できます。services: cockpit dhcpv6-client ssh
cockpit
dhcpv6-client
ssh
というサービスで規定されているポートが空いています。
cockpit
は、ブラウザー上でシステムを管理できるツールのようですが、いらないので永久に閉めます。
dhcpv6-client
は、Ipv6 を利用するならば必要のようですが、とりあえずいらないので永久に閉めます。
ssh
は、後ほどちゃんと設定してから開けるので、一時的に閉めます。というわけで、とりあえずすべて削除してしまいます。
[root@localhost ~]# firewall-cmd --permanent --remove-service=cockpit success [root@localhost ~]# firewall-cmd --permanent --remove-service=dhcpv6-client success [root@localhost ~]# firewall-cmd --permanent --remove-service=ssh success [root@localhost ~]# firewall-cmd --reload success[root@localhost ~]# firewall-cmd --list-all public target: default icmp-block-inversion: no interfaces: sources: services: ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:さっぱりしました。
ネットワークを開通する
ネットワークの設定は、
nmcli
コマンドで行います。
まずは現状の確認。[root@localhost ~]# nmcli device DEVICE TYPE STATE CONNECTION ens3 ethernet 切断済み -- lo loopback 管理無し --
ens3
が NICになりますが、見ての通り切断状態なので接続します。[root@localhost ~]# nmcli connection modify ens3 connection.autoconnect yes状態確認。
[root@localhost ~]# nmcli device DEVICE TYPE STATE CONNECTION ens3 ethernet 接続済み ens3 lo loopback 管理無し --接続しました。
connection.autoconnect yes
としているので、以後は自動で接続されます。パッケージ管理
dnf
で更新する
CentOS7
ではyum
を利用してましたが、CentOS
からはdnf
らしいです。一応yum
も利用できるようですが、dnf
をラップしているだけのようなので、素直にdnf
を利用することにします。システムにインストール済のパッケージを更新します。
[root@localhost ~]# dnf update ... これでよろしいですか? [y/N]:わらわらとリストが出ていて、インストールの是非を問われるので
y
で Enter します。
ちなみにy
押すのも面倒くさいという方は-y
オプションをつけて実行すれば勝手にy
したことになります。使い勝手はほぼyum
と同じようですね。[root@localhost ~]# dnf update -yシステムの状態を最新に保って置くためにたまに
dnf update
しておきましょう。
サーバー管理者の方などは勝手にアップデートされると困ることとかあるかもですが、私の場合はあくまでお勉強のために構築していますので、最新に保っておくにこしたことはないという考えです。。今回はここまで
とりあえず、ネットワークは開通しましたがこのあとはユーザー作成したりSSHも接続できるようにせねばなりません。
このあと私がしたいのは、下記のとおりです。
OpenLDAP
をインストールしてユーザー管理をLDAP
で行う。SSH
を開通し、LDAP
アカウントを公開鍵認証でログインできるようにする。- メールサーバーを構築する。
ですので、
SSH
で接続できるのはもう少し先ですね~関連記事
- CentOS8 サーバー構築(インストール)
- CentOS8 サーバー構築(ネットワーク開通とパッケージ更新) ←今回の記事
- CentOS8 サーバー構築(Open LDAP インストール) ←予定
- 投稿日:2020-02-08T12:11:29+09:00
ESXi6.7にCentOS8を最小構成で構築
はじめに
ESXi上にCentOS8の最小構成でのインストールをしてみました。
ごくごく基本的な設定しかしていません。対象機器および環境など
検証環境
- ESXi 6.7
- CentOS8(8.1.1911)
ネットワーク情報
項目 値 サーバFQDN vmnetserv01.prosper2.net サーバアドレス 10.254.10.251 作業内容
メディア準備
国内のてきとうなミラーからISOを落としてくる。
ESXiにSSHでログインしてwgetで取得すると楽ですね。$ ssh root@esxi で、ログインして # cd /vmfs/..../images (ISOを保存する場所に移動) # wget http://ftp.iij.ad.jp/pub/linux/centos/8/isos/x86_64/CentOS-8.1.1911-x86_64-boot.isoESXiでVM作成
カラのVMを作成します。
ゲストOSのバージョンで「CentOS8」があるので、それを選択
CentOS8のインストール
パワーオンしたら、解像度をあわせるためにオプションが必要です。
起動画面でUp
キーを押して「Install CentOS Linux 8」を選択e
キーを押すとオプション入力画面に切り替わります。
この画面で、
resolution=1024x768
を挿入し、Ctrl-x
を入力すると、インストーラが起動します。
インストーラに従って作業していく。言語選択後、こんな画面になる。
インストール先を選択すると、「インストール」ボタンが押せるようになるので、クリック
ダウンロード、インストールが進んでいる最中に、rootパスワードとユーザ作成をしておく。
ユーザ作成時には、「このユーザを管理者にする」にチェックを入れておくと、後で楽。
CentOS8の設定
初期状態でsshログインができるので、作成したユーザでログイン。
毎回 sudo がめんどいので、sudo su -
しちゃう。SSH設定
rootログイン無効化と、ポート修正
# vi /etc/ssh/sshd_config -----8<-----snip-----8<----- #Port 22 Port XXXX #PermitRootLogin yes PermitRootLogin no -----8<-----snip-----8<----- # systemctl restart sshdfirewall設定
cockpitはwebからサーバ管理できるアプリケーションらしいですが、使わないので、閉じます。
上記設定でSSHのポートを変更したら、firewallもそれに合わせて設定します。(この例ではTCP22のまま)# firewall-cmd --list-services cockpit dhcpv6-client ssh # firewall-cmd --remove-service dhcpv6-client --zone=public --permanent # firewall-cmd --remove-service cockpit --zone=public --permanent # firewall-cmd --reload # firewall-cmd --list-service sshSELinux無効化
いつもすんません。。。
# vi /etc/selinux/config -----8<-----snip-----8<----- #SELINUX=enforcing SELINUX=disabled -----8<-----snip-----8<-----で、一度再起動。
よく使うパッケージをいれておく
パッケージ管理はdnfというものになったみたいです。
本体はdnf-3ってやつみたいですね。$ ll /usr/bin/yum lrwxrwxrwx. 1 root root 5 12月 19 10:43 /usr/bin/yum -> dnf-3 $ ll /usr/bin/dnf lrwxrwxrwx. 1 root root 5 12月 19 10:43 /usr/bin/dnf -> dnf-3最初なんで無条件にアップデートしてしまおう。
$ sudo dnf -y install epel-release $ sudo dnf -y update $ sudo dnf -y install screen vim lftp wget open-vm-tools mlocate tcpdump unzip bind-utils telnet時刻設定
タイムゾーンを確認
$ date 2020年 2月 7日 金曜日 21:59:21 EST (ESTって、どこだよ、それ) $ sudo timedatectl set-timezone Asia/Tokyo $ date 2020年 2月 4日 火曜日 11:02:51 JSTNTPの設定はさいしょからされてるぽい
$ chronyc sources 210 Number of sources = 4 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* ec2-13-230-38-136.ap-nor> 2 6 377 57 -65us[ +200us] +/- 40ms ^+ 122x215x240x51.ap122.ftt> 2 6 377 58 -254us[+9893ns] +/- 48ms ^- mx.execve.net 2 6 377 56 +1322us[+1322us] +/- 164ms ^+ hit-bridge.com 2 6 377 56 +152us[ +152us] +/- 47msなるほど、初期設定の時点で負荷分散しているのね。
$ grep pool /etc/chrony.conf # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). pool 2.centos.pool.ntp.org iburst $ dig 2.centos.pool.ntp.org +short 13.230.38.136 203.178.135.73 122.215.240.52 45.76.111.149SNMP(あとから追記しました)
遠隔から監視できるように、SNMPをうごかしておく。
パッケージはnet-snmp
でよい。$ sudo dnf -y install net-snmp net-snmp-utilsもとの設定ファイルに追記でもよいし、まるっと書き換えでもOK
/etc/snmp/snmpd.confcom2sec p2user default rocomm group p2group v2c p2user view p2view included .1 access p2group "" any noauth exact p2view none noneポートの穴あけとサービス起動をしておく
# firewall-cmd --add-service=snmp --zone=public --permanent # firewall-cmd --reload # systemctl enable snmpd # systemctl start snmpdよその端末から見れるか確認しておこう。
$ snmpwalk -c rocomm -v 2c 10.254.10.251 sysdescr SNMPv2-MIB::sysDescr.0 = STRING: Linux vmnetserv01.prosper2.net 4.18.0-147.5.1.el8_1.x86_64 #1 SMP Wed Feb 5 02:00:39 UTC 2020 x86_64さいごに
CentOS7でopensslのバージョンを上げるのが面倒なので、これからCentOS8に乗り換えていきたいと思います!
出典
とくにありません。
- 投稿日:2020-02-08T01:09:42+09:00
複数NICを持つマシンでポリシーベースルーティング
はじめに
私はデータベース、特にPostgreSQLが専門(?)なのですが、求められれば付け焼き刃で勉強しながらネットワークの設定もやったりします。
今回は、複数NICを持つLinuxマシンに対して、1つのNICのみを持つマシンから両方のNICに対して通信をすることになりました。どういうことかというと
青のLANは192.168.10.0/24のセグメントであり、緑のLANは192.168.20.0/24のセグメントです。
マシンAにNICが2つあり、それぞれのNICが青と緑に接続しています。
- NIC0
- IP:192.168.10.2
- GW:192.168.10.254
- NIC1
- IP:192.168.20.2
- GWは設定していません。
マシンBはNICが1つのみであり、緑のLANにしか接続していません。
- NIC0
- IP:192.168.20.201
- GW:192.168.20.254
このネットワーク構成でつまり、次の図のようなことがしたいわけです。
非対称ルーティング
実はこのネットワーク構成では、やりたいことが上手くできません。pingを飛ばしても返ってこないのです。
どうしてそうなるのか。マシンBからマシンAへの通信がどうなっているかを説明します。まず、マシンBは同一セグメント上にない「192.168.10.2」というIPアドレスがどこにあるか自分ではわかりません。そういうときは、デフォルトゲートウェイに問い合わせに行きます。
ゲートウェイはルーティング情報から、宛先のアドレスのネットワークに向けて中継します。
マシンAまで届くとマシンAは何を血迷ったか、受信したNIC1ではなく送信元のマシンBが接続している緑のセグメントと同セグメントのNIC0から返信しようとします。
NIC0から返信してしまうと、受信した経路と送信した経路が異なる非対称ルーティングとなります。そして、Linuxではデフォルトではこれを禁止しており、マシンBまで返信は返りません。
2つの対策
対策としては2つ考えられます。
非対称ルーティングを許可
1つは非対称ルーティングを許可してあげること。しかし、非対称ルーティングはマシンのなりすましなどの可能性があるため、ホイホイ許可するのは考えものです。本記事ではやり方には触れませんが、許可したい場合はrp_filterで検索してみてください。
静的ルーティングを設定
本記事の本命はこちら。要するにマシンAの振る舞いの何が悪いのかというと、NIC1で受信したのにNIC0から返信しようとしているところです。だったら、NIC1で受信したならNIC1から返すように、無理矢理にでも設定してあげればいいわけです。その設定方法が、静的ルーティングです。
静的ルーティング設定手順
ポリシーベースルーティングというものの設定をしてみたいと思います。
ルーティングテーブルファイルに追加
/etc/iproute2/rt_tablesに次の2行を追加します。
100 rule01 101 rule02ルールファイルを作成
/etc/sysconfig/network-scriptsディレクトリの下に、NIC0とNIC1のインタフェースそれぞれに適用させるルールファイルを作成します。
# vi rule-nic0 from 192.168.20.2/32 table rule02 priority 200 # vi rule-nic1 from 192.168.10.2/32 table rule01 priority 100ルーティングファイルを作成
同じく/etc/sysconfig/network-scriptsディレクトリの下に、NIC0とNIC1のインタフェースそれぞれに適用させるルーティングファイルを作成します。
# vi route-nic0 192.168.20.0/24 dev nic0 table rule02 default via 192.168.20.254 dev nic0 table rule02 # vi route-nic1 192.168.10.0/24 dev nic1 table rule01 default via 192.168.10.254 dev nic1 table rule01ネットワークを再起動
# systemctl restart networkこれで、設定が上手くいっていれば、当初の目的が実行できているはずです!お疲れ様でした!
余談
次の図を御覧ください。
このような通信は、同一セグメント内であり、全く問題なく行えます。それなら別に、マシンAには到達できているわけだしわざわざ異なるネットワークセグメントから通信する必要あるのかどうか、疑問に思った方もいるかもしれません。
私だってそう思います。
でも、やれって言われたらやるしかないじゃん。
いったいどういう目的があってこんなことをやらされたのか、終わった今でも謎です。
- 投稿日:2020-02-08T00:26:38+09:00
Android でもとりあえず Ubuntu のデスクトップ環境を使いたい(UserLAnd 版)
はじめに
先に公開した Android Studio を使うための最低限のデスクトップ環境の構築方法を記載します。
日本語入力もありませんが、その代わり最短で構築できると思います。Android の上で最も手軽に Ubuntu の環境を構築するなら UserLAnd が一番楽だと思われます。
Termux でもできますが、UserLAnd の方が手間が少なくて済みます。
その代わり、Termux より動作速度が遅いです。
どちらが良いかはお手持ちのスマートフォンの速度と好みで選ぶと良いと思います。注意点
デスクトップ環境(LXDEやXfce)のインストールは数時間かかります。
時間を確保してから実施するほうが良いと思います。インストール
Play ストア で UserLAnd と XSDL をインストールしてください。
UserLAnd は Debian や Ubuntu といった Linux 環境を簡単に構築するためのアプリケーションになります。
XSDL は画面を担当するアプリケーションです。
UserLAnd はコマンドラインまでしかサポートしませんので、XSDL で画面をサポートしてもらいます。Ubuntu のインストール
UserLAnd を立ち上げて、Ubuntu と書かれた項目をタップします。
ユーザーIDとパスワードを入力して CONTINUE をタップします。
接続の種類に SSH, VNC, XSDLを選択するように言われますので、SSH を選択して CONTINUE をタップします。環境によりけりですが、1時間は待つことになると思います。
Ubuntu デスクトップ環境のインストール
ここからは Ubuntu での操作になります。
まずは apt でパッケージ(Linux アプリケーションの倉庫のようなもの)を更新します。
sudo apt update sudo apt upgrade -y次にデスクトップ環境をインストールします。
調べた限りでは、LXDE, Xfce の2種類が使えます。
LXDE の方が軽いそうですが、Xfce の方が見た目が良くLXDE程ではないですけれども十分な軽さを持っているそうです。
ここは好みで選択すれば良いと思います。なお、ここでネットワークやスマートフォンの速度にもよると思いますが数時間掛かります。
・ LXDE のインストール
sudo apt install -y lxde・ XFCE のインストール
sudo apt install -y xfce4環境の設定
XSDL を立ち上げてしばらく待って下さい。
最後なにやら文字列を表示している画面が出るので以下をメモしてください。上から2行目に以下の文字列が出るはずです。DISPLAY のポート番号をメモしてください。
export DISPLAY=(何かのIPアドレス):(ポート番号)
上から3行目に以下の文字列が出るはずです。同様に PULSE_SERVER のポート番号をメモしてください。
export PULSE_SERVER=(何かのIPアドレス):(ポート番号)
IPアドレスはメモする必要はないです。
再び UserLAnd の Ubuntu に戻って下さい。
XSDL に接続するために、設定ファイルに先程メモしたポート番号とローカルのIPアドレスを記載します。# テキストエディタ vim をインストールしていない人はインストール sudo apt install -y vim # startXDSL にXDSLの接続設定を記載する vim /support/startXSDLServerSteo2.sh4行目、8行目、16行目辺りを修正します。
# 4行目辺り。4721 の値をメモを行った DISPLAY のポート番号に書き換えます。 DISPLAY=:4721 ↓ 書き換え後 DISPLAY=:(さっきメモした DISPLAY のポート番号) # 8行目辺り。4721 の値をメモを行った PULSE_SERVER のポート番号に書き換えます。 PULSE_SERVER=localhost:4721 ↓ 書き換え後 PULSE_SERVER=localhost:(さっきメモした PULSE_SERVER のポート番号) # 16行目辺り。/usr/bin/twm の値を exec startlxde または、exec startyxfce4 に書き換えます。exec を付けないと動作しないので付けて下さい。 echo '/usr/bin/twm' > /home/$INITIAL_USERNAME/.xinitrc ↓ 書き換え後 # LXDE を使う場合 echo 'exec startlxde' > /home/$INITIAL_USERNAME/.xinitrc # Xfce を使う場合 echo 'exec startxfce4' > /home/$INITIAL_USERNAME/.xinitrcvim の操作方法を知らない人は以下だけ覚えればなんとかなります。
キーボードのキー 役割 i コマンドモードから入力モードに入る ESC 入力モードを抜けてコマンドモードに戻る :wq 保存して終了する。コマンドモードで操作すること。 デスクトップ環境の起動
UserLAnd に戻って Ubuntu を長押しし、Stop App を選んで終了して下さい。
(終了しない場合には、下の Sessionsにある Ubuntu を長押しして Stop Session を選択して下さい。)
再び Ubuntu を長押しし、App Info を選択し XSDL を選択してください。
下の Apps を押してから Ubuntu を押して起動してください。
しばらくすると Ubuntu のデスクトップ環境が立ち上がります。UserLAnd の場合には XSDL の立ち上げまで行ってくれるので、手動で XSDL を立ち上げる必要はありません。
参考サイト