ネットワーク基礎②
はじめに
インフラエンジニア初学者のぽれいんと申します。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
LAN基礎
EthernetによるLANを構築するためのハードウェアの基礎知識と物理的ネットワークの構築
社内LAN
社内LANでは文書ファイルを置いておくファイルサーバや、情報を共有するためのデータベースサーバなども接続し、社員がアクセスできるようにする。
LAN機器とイーサネット規格
イーサネットとはLANを構築するための規格。1番の特徴はコストが低く簡単にLANが構築できること。LANを構築する際、最低限以下の機器が必要。
・LANケーブル
・LANカードもしくは無線LAN
・スイッチングハブ(HUB)
LAN
コンピュータとHUB、あるいはコンピュータと接続するために使用するネットワークケーブルは主にツイストペアケーブルを使用する。ツイストペアケーブルにはカテゴリという品質レベルがある。品質が良いほど高速に信号を送信することが可能。現在最も使用されているカテゴリは5eと呼ばれる品質のものになる。
LANカード(NIC)
LANケーブルを挿す穴がついたパソコンに合体させる部品。
最近のパソコンは標準でLANポートを一つ備えていることが多くなっているため必要ない場合もある。
ハブ
ケーブルを集約する部品。複数のパソコンをLANケーブルを使ってHUBに接続することによってパソコン同士が通信できるようになる。ケーブルを挿し込むHUBの口のことを「ポート」という。HUBにはリピータHUBとスイッチングHUBの二種類ある。
リピータHUB
ポートから受け取ったパケットを他のすべてのポートにリピートする。(2021年現在、リピータHUBはほとんど利用されていない)リピータHUBはすべてのポートに電気信号を流すため、頻繁に信号同士がぶつかる「コリジョン」が発生する。コリジョンが発生するとパケットの再送が行われるため、LAN内でのデータの伝送効率が低下する。
スイッチングHUB
スイッチングHUBは各ポートの接続先のLANカードに割り当てられているMACアドレスを記憶することができる。受信したパケットの宛先と記憶しているMACアドレスを照らし合わせて宛先となっているコンピュータが接続されているポートにのみパケットを流す。そのため、コリジョンが発生しにくい。
MACアドレス
LANカードごとに割り当てられている番号。IPアドレスはOS上の設定で変更できるのに対して、MACアドレスは変更が不可能でユニークな(重複のない)アドレス。
Windowsの場合、設定→ネットワークとインターネット→ネットワークの詳細設定の下にあるハードウェアと接続のプロパティを表示
より、確認できる。
以上!!!!!!!!!!!!!
ネットワーク基礎
はじめに
インフラエンジニア初学者のぽれいんと申します。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考>
ネットワークとは
ネットワークを利用すると異なるマシン同士データをやり取りする事ができます。最近のシステムでは1台のマシンだけで完結することはほとんどないので、必ずと言っていいほどネットワーク経由してデータが流れます。
ネットワーク上でやり取りする仕組みは非常にたくさんあります。しかし、インターネットの通信の仕組みをはじめ、ほとんどのシステムにはTCP/IPと呼ばれる仕組みが使われています。
LANとインターネット
ネットワークには様々な規模のものがありますが、1つのビルやフロアの中のように限られた環境で利用するネットワークのことをLANといいます。LANとはLocal Area Networkの略語で「限定した地域の通信網」という意味です。
また、世界各地に存在するネットワークをインターネットといいます。インターネットは世界中の様々な企業や組織のLAN同士を集合体と見ることができます。さらに、企業に本社‐支社間など地理的に離れたLAN同士を電話回線や専用線を使って接続したネットワークのことをWAN(Wide Area Network:広域通信網)といいます。
クライアント・サーバネットワーク
「インターネットをする」といえば、一般に「ホームページを見る」という意味で使われています。ホームページはパソコンとインターネット接続環境さえあれば日本だけに限らず、世界中の言語で書かれたホームページを瞬時に表示して閲覧することができます。Webサーバというホームページを見せるためのコンピュータが、要求されたページを返すことにより実現しています。
ここで、ホームページを見るためにWebサーバにアクセスしてくるコンピュータをクライアントといい、Webサーバのように何かのサービスを提供するコンピュータをサーバといいます。一般的にサーバはクライアントからの何らかの要求する(リクエスト)を待ち続けており、クライアントから自分に対する要求があれば、その要求に対して応答(レスポンス)を返します。
通信プロトコル
プロトコルとは、異なるデバイスやコンピュータシステム、ソフトウェアなどが互いに通信するために制定された規約のことです。現在もっとも普及している標準的なプロトコルがTCP/IPプロトコルで、インターネットの仕組みを利用するソフトウェアを開発する際に必ず利用されます。
TCP/IPプロトコル
この章では現在もっとも普及しているTCP/IPプロトコルの階層化モデルとこのあとの各種サーバ構築で必要になる代表的なプロトコルの特徴を学習します。
TCP/IP階層化モデル
サーバ・クライアントシステムにおいて利用されるプロトコルを階層に分けて整理したものをTCP/IPモデルといいます。このようにデータの通り道となる階層ごとにルールがはっきりしているため、開発者は各プロトコルの取り決めに従って開発を進めればよいことになります。以下は各階層で使われる代表的なプロトコルを一覧にしています。
アプリケーション層
アプリケーション層では、電子メールのフォーマットなどアプリケーション間でデータのやり取りする際に使用する共通のデータ構造や、サーバ・クライアント間の通信の開始~終了までのセッション情報におけるデータ形式などを想定している。
トランスポート層
アプリケーション層で作成されたデータは次にトランスポート層に渡されます。トランスポート層では、確実なデータ伝送を実現するために転送方法に関する取り決めを行います。特にサーバクライアント間で仮想的なデータ通信路を確立するためにポート番号を利用します。インターネット上でよく利用されるサービスは固有のポート番号が決まっています。
TCP(Transmission Control Protocol)...信頼性が高い
UDP(User Datagram Protocol)...スピードが速い
インターネット層
ネットワーク上の住所と宛名にあたる、IPアドレスが、インターネット層で負荷されます。この層で使われるIPというプロトコルは、「データ(パケット)を目的のコンピュータまで届ける」という、非常に重要な役割を持っています。宛先のIPアドレス
ネットワークインターフェイス層
ネットワークインターフェイス層では上位層から受け取ったデータをLANケーブルに流すための処理を行います。LANでもっともよく使われるEthernet(イーサネット)の場合、次に送る機器を特定するために宛先コンピュータのMACアドレスをデータに付加し、これを電気信号に変えてからケーブルに渡します。この処理はOS上ではなくLANカードのチップ上で行われます。
以上!
PostfixとDovecotの連携
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
↑↑まだ見ていない方はこちらから↑↑
<参考>
メールサーバー構築(Postfix+Dovecot) - CentOSで自宅サーバー構築
Postfix+Dovecotによるメールサーバ構築 | DevelopersIO
使用する環境
- サーバー
- Amazon EC2
- インスタンスタイプ: t2.micro (1台)
- オペレーティングシステム: Amazon Linux 2
- Amazon EC2
本日のやりたいこと
①今回は送信メールサーバをPostfix、受信メールサーバをDovecotとしてメールの送受信をできるようにする。
②Maildir形式を採用し、telnetを使用しメールが届いているか確認できるようにする。
DNSやpostfixの設定は前回記事を参考にどうぞ
Dovecot
Dovcotのインストール
yum install -y dovecot
ユーザを作成し、パスワードを設定
useradd porain
passwd porain
----パスワードを2回入力----
porain
porain
/etc/dovecot/dovecot.confの設定(主役)
cp -a /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.'date +"%m%d"'
vi /etc/dovecot/dovecot.conf
以下のように変更
----------------------------------------
#protocols = imap pop3 lmtp
↓
#protocols = imap pop3 lmtp
#pop3での通信を許可
protocols = pop3
----------------------------------------
/etc/dovecot/conf.d/10-mail.confの設定(脇役1)
cp -a /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.'date +""%m%d"'
vi /etc/dovecot/dconf.d/10-mail.conf
以下のように変更
----------------------------------------
# mail_location = maildir:~/Maildir
↓
#メールボックスの場所を定義
mail_location = maildir:~/Maildir
----------------------------------------
/etc/dovecot/conf.d/10-auth.confの設定(脇役2)
cp -a /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.'date +""%m%d"'
vi /etc/dovecot/dconf.d/10-auth.conf
以下のように変更
----------------------------------------
#disable_plaintext_auth = yes
↓
#平文でのログインを許可
disable_plaintext_auth = no
----------------------------------------
/etc/dovecot/conf.d/10-ssl.confの設定(脇役3)
cp -a /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.'date +""%m%d"'
vi /etc/dovecot/dconf.d/10-ssl.conf
以下のように変更
----------------------------------------
#ssl = required
↓
#ssl = required
#SSL接続しなくてもOKにする
ssl = yes
----------------------------------------
/etc/dovecot/conf.d/10-master.confの設定(脇役4)
cp -a /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.'date +""%m%d"'
vi /etc/dovecot/dconf.d/10-master.conf
以下のように変更
----------------------------------------
service pop3-login {
inet_listener pop3 {
#port = 110
}
↓
service pop3-login {
inet_listener pop3 {
# pop3の通信を許可
port = 110
}
----------------------------------------
いや、設定ファイル多すぎ…(笑)
doveconfコマンドで設定ファイルを確認
doveconf -a
doveconf -n
-a:読み込まれる全ての設定を表示
-n:デフォルト値と異なる全ての設定を表示
※設定がしっかりしてないとエラー箇所が表示される
動作確認
確認のためのメールを送信
echo "test" | mail -s test -r from@example.com porain@mail.hogehoge.com
※メールアドレスはユーザ名@ドメイン名で設定
telnetをインストール
yum install -y telnet
telnet localhost 110
+OK Dovecot readyの表示でPOP3に接続成功
以下のコマンドを順番に実行し、メールの受信を確認
user porain
pass porain
list
retr 1
user : 作成したユーザ名を入力
pass : 設定したパスワードを入力
list : 送られてきたメッセージを表示
retr : 指定したメッセージを詳細表示
以上!!!!
メールサーバ構築(SMTPサーバ)
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
↑↑まだ見ていない方はこちらから↑↑
本日のやりたいこと
今回は電子メールを利用するためのメールサーバの構築を行う。
使用する環境
- サーバー
- Amazon EC2
- インスタンスタイプ: t2.micro (1台)
- オペレーティングシステム: Amazon Linux 2
- Amazon EC2
メールサーバとは
メールサーバの種類
メールサーバには以下の2種類がある。
これらのサーバを総合してメールサーバと呼ぶ。
メールの保存形式
SMTPサーバに送信されたメールの保存形式は以下の2種類がある。
- Mailbox形式
- Maildir形式
Mailbox形式は古くから使われている形式でユーザごとに受信したすべてのメールを平文で1つのファイルに連結して保存する。そのため、ファイルが壊れるとすべてのメールを失うことになってしまう。
Maildir形式は1通のメールを1つのファイルとして保管する。そのため、1つファイルが壊れても1通のメールを失うのみで留まる。
メールの読み出し(受信)
メールサーバに蓄積されたメールはPOPまたはIMAPというプロトコルを使って読み出すことができる。
- POP
POP(Post Office Protocol)は2021年現在バージョンが3になっているためPOP3とも呼ばれる。メールサーバにメールが届いた際にユーザがパソコンなどの端末にメールをダウンロードして、端末上で管理するのが特徴。
IMAP(International Message Access Protocol)は2021年現在バージョンが4になっているためIMAP4とも呼ばれる。インターネットを利用しメールにアクセスする通信規約のためメールサーバにあるメールを端末にダウンロードする必要がなくメールサーバ上で管理されているメールをメールソフトで閲覧するのが特徴。
メール配送の仕組み
- クライアントがメールを送信するとSMTPサーバがそれを受け取る。
- SMTPサーバはメールを受け取るとIPアドレスよりPOPサーバ(IMAPサーバ)にメールを転送する。
- 送信先クライアントはPOPサーバからメールをダウンロードする。(IMAPサーバにメールが保存される)
メールサーバの構築(SMTPサーバ)
rootユーザになる
sudo su -
postfixの起動確認(※postfixはCentOSにデフォルトで入っています。)
rpm -qa postfix
ステータス・自動起動を確認
systemctl status postfix
systemctl is-enabled postfix
postfixのプロセスが動いているか確認
ポート番号を確認
ps -efH | grep postfix
netstat -anp | grep master
メールを送信するためのコマンドmailをインストール
yum install -y mailx
自分宛にメールを送信できるか確認
mail -s 件名 root@localhost
メールログの確認
tail -f /var/log/maillog
メールが受信できているか確認
DNSサーバと連携
<SMTPサーバの設定>
設定ファイルのバックアップファイルを作成
cp /etc/postfix/main.cf /etc/postfix/main.cf_20210821
ls /etc/postfix/main.cf_20210821
コメントアウトの行を排除したファイルを作成し、設定ファイルに上書き
grep -v ^# /etc/postfix/main.cf | cat -s > /tmp/post.txt
cp /tmp/post.txt /etc/postfix/main.cf
y
postfixの設定ファイルを編集
vi /etc/postfix/main.cf
以下を変更
----------ここから---------------------
inet_interfaces = localhost
↓
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost
↓
mydestination = $myhostname, $mydomain
----------ここまで---------------------
以下を先頭に追記
----------ここから---------------------
myhostname = mail.hogeohoge.com
mydomain = hogehoge.com
myorigin = $myhostname
mynetworks = 172.31.0.0/16, 127.0.0.1
----------ここまで---------------------
設定を変更したため再起動し、プロセスとポート番号を確認
systemctl restart postfix
ps -efH | grep postfix
netstat -anp | grep master
<DNSサーバの設定>
BINDのステータスを確認
systemctl status named
Unit named.service could not be found.と表示される場合はBINDのインストールがされていないためDNSサーバの構築が必要。
↓DNSサーバの構築は以下の記事を参照↓
(任意の)正引きのゾーンデータベースファイルに以下を追記
vi /var/named/hogehoge.com.zone
最終行に以下を追記
------------ここから-----------------------
mail IN A xxx.xxx.x.xx
------------ここまで-----------------------
※xxx.xxx.x.xxはSMTPサーバのIPアドレス
構文チェック
named-checkzone hogehoge.com /var/named/hogehoge.com.zone
以下のようにOKが表示されればOK
zone hogehoge.com/IN: loaded serial 2017080701
OK
/etc/resolv.conf を変更
vi /etc/resolv.conf
------------------------------------------
---以下をコメントアウト---
#nameserver 172.31.0.2
---以下を追記---
#ローカルループアップアドレス
nameserver 127.0.0.1
------------------------------------------
namedを起動し、プロセスとポート番号を確認
systemctl restart named
ps -efH | grep named
netstat -anp | grep 53
ドメインを使ってメールを送信
mail -s 件名 root@mail.hogehoge.com
メールログの確認
tail -f /var/log/maillog
メールが受信できているか確認
以上!!!!
DNSサーバ構築
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
↑↑まだ見ていない方はこちらから↑↑
使用環境
- サーバー
- Amazon EC2
- インスタンスタイプ: t2.micro (1台)
- オペレーティングシステム: Amazon Linux 2
- Amazon EC2
DNSサーバの構築
rootユーザになる
sudo su -
bindのインストール
yum install -y bind
bindを自動起動を有効にして起動
systemctl enable named
systemctl start named
namedプロセスの起動確認
ps -efH | grep named
以下プロセスが起動していることを確認
named 3341 1 0 08:07 ? 00:00:00 /usr/sbin/named -u named -c /etc/name .conf
netstat -anp | grep named
以下のようにnamedが利用する53番ポートがオープンしていることを確認
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3341/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 3341/named
tcp6 0 0 ::1:53 :::* LISTEN 3341/named
tcp6 0 0 ::1:953 :::* LISTEN 3341/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 3341/named
udp6 0 0 ::1:53 :::* 3341/named
unix 2 [ ] DGRAM 20948 3341/named
コピーを作成してnamed.confの編集
cp /etc/named.conf /etc/named.conf.org
vi /etc/named.conf
--------ここから--------------
・全てのサーバから名前解決できるようにする
listen-on port 53 { 127.0.0.1; }; → listen-on port 53 { 127.0.0.1;any; };
listen-on-v6 port 53 { ::1; }; → listen-on-v6 port 53 { ::1;any; };
・全てのサーバからクエリの受付を許可
allow-query { localhost; }; → allow-query { any; };
--------ここまで--------------
※anyを使用するとセキュリティに問題があるように思われるが、他でセキュリティの強化が図れる。しかし、現場で作業する際は上長に設定値の確認を行う。
/etc/named.confの構文チェック
named-checkconf
ゾーンデータベースファイルの作成・編集
vi /var/named/hogehoge.com.zone
-----------ここから---------------
$ORIGIN hogehoge.com.
$TTL 900
@ IN SOA ns.hogehoge.com. sample.hogehoge.com. (
2017080701 ; Serial
3600 ; Refresh
900 ; Retry
1814400 ; Expire
900 ) ; Minimum
IN NS ns
ns IN A 192.168.1.10
hoge IN A 192.168.2.21
porain IN A 192.168.3.33
-----------ここまで---------------
/var/named/hogehoge.zoneの構文チェック
named-checkzone hogehoge.com /var/named/hogehoge.com.zone
以下のようにOKが表示されればOK
zone hogehoge.com/IN: loaded serial 2017080701
OK
named.confに追記
vi /etc/named.conf
以下を追記
-----------ここから---------------
#以下管理したいゾーン情報
zone "hogehoge.com" IN {
type master;
file "/var/named/hogehoge.com.zone";
};
-----------ここまで---------------
/etc/named.confの構文チェック
named-checkconf
/etc/resolv.confの編集
vi /etc/resolv.conf
---以下をコメントアウト---
#nameserver 172.31.0.2
---以下を追記---
#ローカルループアップアドレス
nameserver 127.0.0.1
bindの再起動・プロセス・ポート番号のリッスンを確認
systemctl restart named
ps -efH | grep named
netstat -anp | grep named
↑でLinuxのIPアドレスが開通していることを確認!
digコマンドで名前解決ができているか確認
dig porain.hogehoge.com
以上!!!!!!!!!!!!!!
AWS ~ボリュームの変更~
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考記事>
EBS ボリュームへの変更のリクエスト - Amazon Elastic Compute Cloud
ボリュームサイズ変更後の Linux ファイルシステムの拡張 - Amazon Elastic Compute Cloud
EC2での操作
2.変更するインスタンスを選択しストレージに移動
3.ボリュームIDを選択
4.アクション^よりボリュームの変更を選択
5.サイズに変更したい値を入力して、変更を選択
※ ▼Elastic Block Store のボリュームからボリュームサイズの変更が可能だが事故を防ぐために、上記のやり方の方が安全と判断。
インスタンス内での操作
rootになる
sudo su -
各ボリュームで使用中のファイルシステムを確認
df -hT
-以下上記コマンド実行結果例-
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 482M 0 482M 0% /dev
tmpfs tmpfs 492M 0 492M 0% /dev/shm
tmpfs tmpfs 492M 476K 492M 1% /run
tmpfs tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 xfs 8.0G 2.1G 6.0G 26% /
tmpfs tmpfs 99M 0 99M 0% /run/user/1000
tmpfs tmpfs 99M 0 99M 0% /run/user/0
ボリュームに拡張が必要なパーティションがあるか確認
lsblk
-以下上記コマンド実行結果例-
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 10G 0 disk
mqxvda1 202:1 0 8G 0 part /
growpart /dev/xvda 1
増加したボリュームサイズがパーティションに反映されていることを確認
lsblk
-以下上記コマンド実行結果例-
xvda 202:0 0 10G 0 disk
mqxvda1 202:1 0 10G 0 part /
各ボリュームのファイルシステムのサイズを確認
df -h
-以下上記コマンド実行結果例-
Filesystem Size Used Avail Use% Mounted on
devtmpfs 482M 0 482M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 476K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 8.0G 2.1G 6.0G 26% /
tmpfs 99M 0 99M 0% /run/user/1000
tmpfs 99M 0 99M 0% /run/user/0
ボリュームでファイルシステムを拡張
xfs_growfs -d /
-以下上記コマンド実行結果例-
meta-data=/dev/xvda1 isize=512 agcount=4, agsize=524159 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1 spinodes=0
data = bsize=4096 blocks=2096635, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2096635 to 2620923
変更を確認
df -h
-以下上記コマンド実行結果例-
Filesystem Size Used Avail Use% Mounted on
devtmpfs 482M 0 482M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 476K 492M 1% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 10G 2.1G 8.0G 21% /
tmpfs 99M 0 99M 0% /run/user/1000
tmpfs 99M 0 99M 0% /run/user/0
以上!!!!!!