Linux
CentOS
Tomcat
firewalld
ローカル開発環境

iptablesがない??Linux/CentOS7でtomcat(8080ポート)、apache(80/443ポート)を解放する方法

やりたいこと
- tomcat のポート (8080) を開く
- Apache のポート (80, 443) を開く

CentOSのバージョンごとに対処法が異なる?

 CentOS6以前とCentOS7からでは少なくともtomcatにおけるポート開放の手順が異なっているようです。6まではiptablesファイルの編集をすることで解放できましたが7からはファイルがありません。
 当記事では前半に今までの対応方法、後半でiptablesファイルが見当たらない人向けの内容になっております。また、tomcatの起動方法は記事の最下部に記載してあります。
 わかりづらい点・間違った点などありましたら編集しますのでコメントよろしくお願いします。

前提

  • CentOS/Linux環境
  • tomcatを動かすためにjdkは入れておく
  • tomcatは/usr/local/にインストール(本記事ではapache-tomcat-8.0.46)

iptablesファイルを編集し、8080ポート解放

# vi /etc/sysconfig/iptables でファイルを編集
(ポートの管理をしている設定ファイルをviで開く)

:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT ←この行を追加
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

上記の設定を反映
# /etc/init.d/iptables restart

iptablesファイルが見当たらない場合

CentOS7から管理形式が変わったようです。
iptablesファイルが見当たらない場合は下記を試してください。

大まかな手順としては
/usr/lib/firewalld/services/ 直下に tomcat.xml ファイルを準備し、そのファイルを 「firewall-cmd」コマンドで登録(ファイヤーウォールに穴を開ける)、のちサービス再起動

手順

※以下はすべて root 権限で実行する必要がある
※tomcat.xml は存在しないので新たに作成する必要がある
※http.xml , https.xml は既に用意されているので作成する必要はない

tomcat.xml を作成する

tomcat.xml の内容
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Tomcat</short>
<description>Open Tomcat port</description>
<port protocol="tcp" port="8080"/>
</service>

port解放コマンド

# firewall-cmd --zone=public --permanent --add-service=tomcat

-必要であればこちらもコマンドを打とう
# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https

ファイアウォールを再起動して設定反映

# systemctl restart firewalld.service

以上で80, 443, 8080 のポートが解放され、他のホストから接続することができるようになる

Tomcat起動

〇Tomcat起動
tomcatの存在するディレクトリから起動
例:/usr/local/apache-tomcat-8.0.46/bin/startup.sh

〇Tomcatのログの最後を常に表示 [&]は裏側で起動
tail -f /usr/local/apache-tomcat-8.0.46/logs/catalina.out &

〇Windows/MacOSからブラウザを開きCentOSのIPアドレスへアクセス
http://xxx.xxx.XX.XX:8080

〇Tomcat停止
/usr/local/apache-tomcat-8.0.46/bin/shutdown.sh