centOS7 – ファイアウォール(iptabeles)とopenvpnの設定

2018年10月12日

centOS7 にしてから一番苦戦したのが・・・ファイアウォールの設定です。

今までは centOS6 は “iptables" を使用していましたが、centOS7 からは “firewalld" が主になります。
“firewalld"については、未だに理解が出来ていませんので調べながら勉強したいと思っています。

ファイアウォールの設定する場合は、"iptables" “firewalld" のどちらか1つ選ばなければならない。
また、"firewalld" の元からの設定されているポート設定ファイルを変更していけない決まりがあります。
ポート番号を変更する場合は、設定ファイルを複製し分かりやすいファイル名にする必要があります。

現在、VPSサーバでは “iptables" を使用しています。
理由は “firewalld" での NAT設定が思うように出来なかったからです。
“firewalld" に切り替えをしていく方向で行きますが・・・今は"iptalbes"で行きたいと思っています。

自分は “iptables.sh" というファイルを作り、シェルスクリプトで実行していました。

centOS6 では


~~~ 省く ~~~
echo "-A INPUT -p udp --dport 1194 -j ACCEPT" >> $IPTABLES_CONFIG
echo "-A INPUT -i tun+ -j ACCEPT" >> $IPTABLES_CONFIG
echo "-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT" >> $IPTABLES_CONFIG
echo "-A FORWARD -i tun+ -j ACCEPT" >> $IPTABLES_CONFIG
echo "-A FORWARD -m state --state NEW -o eth0 -j ACCEPT" >> $IPTABLES_CONFIG
echo "-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT" >> $IPTABLES_CONFIG
echo "-A OUTPUT -m state --state NEW -o eth0 -j ACCEPT" >> $IPTABLES_CONFIG
echo "iptables -t nat -A POSTROUTING -s 192.168.111.0/24 -o eth0 -j MASQUERADE" >> $IPTABLES_CONFIG
~~~ 省く ~~~

実行ができましたが、centOS7 ではエラーが起きてしまいました。

エラー文


~~~ 省く ~~~
iptables: Applying firewall rules: iptables-restore v1.4.21: The -t option (seen in line 2754) cannot be used in iptables-restore.

Error occurred at line: 2754
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
                                                           [失敗]

IPマスカレード(NAT)の記述部分がどうしてもエラーが起きてしまいました。
色々調べてみた結果、以下の設定することにより解決が出来ました。

【解決方法】

1.iptables.sh で以下の記述まで記入する。
※他のサービスのポート設定が記述されていることを前提とします。


 ~~~ 省く ~~~

iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -m state --state NEW -o eth0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptalbes -A OUTPUT -m state --state NEW -o eth0 -j ACCEPT
 
~~~ 省く ~~~

2.iptabes.sh をシェルスクリプトで実行する。

[user@localhost] sh iptables.sh

3.コマンド実行でNAT設定を行う。
3.1 IPマスカレード(NAT)の設定を入力して実行する。

[user@localhost] iptables -t nat -A POSTROUTING -s 192.168.111.0/24 -o eth0 -j MASQUERADE

3.2 iptables に保存する。

[user@localhost] iptables-save > /etc/sysconfig/iptables

4.IPマスカレード(NAT)の設定確認

[user@localhost] iptables -t nat -n -L

実行結果

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  192.168.111.0/24      0.0.0.0/0

これを実行することによりopenvpnの利用が出来るようになりました。
もしかしたら、他のやり方があると思われます。
また、"firewalld" が主になりますので、IPマスカレード(NAT)の設定を勉強していきたいと思います。

【参考文献】
@it さん – ハマる前に理解する「Firewalld」の設定方法、「iptables」との違い
UnixPower on Networking さん – CentOS7 firewalldの設定