CentOSを立ち上げていざサービスを使って通信しようとするけど失敗してイライラすることはないでしょうか?
早くサービス使いたいのに。。と
CentOSでサービス早く使いたいのに、エラーで使えません。firewallが原因と聞いたけど、どうすればよいですか?
通信できない原因の一つにfirewallがあります。
なので初期設定の時にCentOSでfirewallのよく使うコマンドをまとめます。
CentOSのfirewallの使い方
CentOSでfirewalldサービスを操作するコマンドは以下です。
firewall-cmd
firewalldサービスの設定を全て確認するコマンドは以下です。
firewall-cmd --list-all
firewalldのサービス状態を確認するコマンド
firewall-cmd --state
結果が「running」になっているとfirewalldサービスが有効になっています。
逆に「not running」になっているとfirewalldサービスが無効になっています。
CentOSのfirewallでサービスポート開放する
CentOSのfirewallでポート開放するコマンド
CentOSのfirewallでポート開放するコマンドは以下です。
firewall-cmd --add-service=サービス名
実際にCentOSでポート開放してみる
ポート開放する前の状態は以下です。
今回は「ftp」サービスをポート開放してみます。
「firewall-cmd –add-service=ftp」コマンドでポート開放しています。「success」と表示されました。
「firewall-cmd –list-all」コマンドで確認すると、ftpが追加されてポート開放できている事が確認できます。
CentOSのfirewallで永続的にポート開放するオプション
この設定ではOS再起動した時など元の設定に戻ってしまいます。
永続的にポート開放したい場合は「–permanent」オプションをつけましょう!
OS起動時の設定変更になる為、今すぐ有効にする場合は「firewall-cmd –reload」コマンドで再読み込みしましょう!そうすればすぐに反映され、次回起動時もポート開放されています。
ポート番号で開放する
ポート番号で開放するコマンド
CentOSのfirewallでポート番号で開放するコマンドは以下です。
firewall-cmd --add-port=サービス番号
実際にCentOSにてポート番号で開放してみる
ポート開放する前の状態は以下です。何も設定されていません。
[root@localhost ~]# firewall-cmd --list-all
ports:
今回は「3389」ポートのTCP通信を開放してみます。
firewall-cmd --add-port=3389/tcp --permanent
「firewall-cmd –add-port=3389/tcp –permanent」コマンドでポート開放しています。「success」と表示されました。
「firewall-cmd –list-all」コマンドで確認してみます。
追加したはずの「3389/tcp」が解放されていません。
追加したはずのポート番号が表示されない時の対処法
追加したはずのポート番号が表示されない時はサービスのリロードを行います。
「firewall-cmd –reload」コマンドでリロードすると「success」と表示されました。
[root@localhost ~]# firewall-cmd --reload
success
もう一度確認すると、3389/tcpが追加されてポート開放できている事が確認できます。
[root@localhost ~]# firewall-cmd --list-all
ports: 3389/tcp
firewallサービス自体を無効にして接続する
検証環境であれば手っ取り早くfirewallを無効にする方法もあります。
systemctl stop firewalld
firewalldサービスが無効になったか「firewall-cmd –state」コマンドで確認します。
「not running」になっていれば無効になっている事が確認出来ます。これで全てのポートが解放されます。
firewalldサービスの有効無効を他のコマンドで確認する
firewalldサービスを確認するその他のコマンド
firewalldサービスの有効無効化を確認するその他のコマンドは「systemctl」です。
firewalldだけでなく他のサービスの状態も確認するコマンドです。今回はfirewalldサービスを確認したいので以下のコマンドになります。
systemctl status firewalld.service
下のように省略しても可能です。
systemctl status firewalld
実際にその他のコマンドでfirewallサービスを確認する
実際にコマンドをたたいて確認してみます。
firewallサービスが有効な場合は「active(running)」と表示されます。
firewallサービスが無効な場合は「inactive(dead)」と表示されます。