CenOS / RHEL7で再起動後にiptablesサービスを自動的に開始するにはどうすればよいですか?


8

私が準備している新しくインストールされたホームサーバーでいくつかの問題があります。CentOS7をインストールしましたが、デフォルトでポート80と443がオフになっています。したがって、次のコマンドを使用してそれらをiptablesに追加しました。

iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
service iptables save

存在しないiptableサービスもインストールしました。問題は、マシンをリブートするたびに新しい構成が消去されることです。

iptableサービスをchkconfigに追加しようとしましたが、次のエラーが発生しました。

[root@CentOS-7]# chkconfig --add iptables
error reading information on service iptables: No such file or directory

このエラーが発生する理由は、/ etc / init.d /にiptableスクリプトがないためだと思いますが、実際に正しいことを行っている場合や、より簡単な方法がある場合は、誰かにアイデアがありますこの?そうでない場合、どうすればこの問題を解決できますか?最後に、ホームサーバーをWeb /メールサーバーとして使用する必要があります...

私はまた、フレミングゴウイルスが親切に提案したように「systemctl enable iptables」コマンドを使用しようとしましたが、成功しませんでした。コマンドを入力した後、次の出力が得られました。

ln -s '/usr/lib/systemd/system/iptables.service' '/etc/systemd/system/basic.target.wants`/iptables.service'`

更新:iptablesを見てきましたが、コマンド "service iptables save"は正しく機能しました。問題は、再起動時にサービスが開始されないことが原因のようです。/etc/rc.localに次の行を追加した後、再起動時にサービスを実行することができました

systemctl start  iptables.service

ただし、この場合、「systemctl enable iptables」コマンドが機能しないのはなぜですか。何か不足していますか?ありがとう

回答:


6

この質問は古いですが、同じ問題に遭遇し、ここで解決策を見つけまし

systemctl mask firewalld
systemctl stop firewalld

基本的に、firewalldはiptablesと競合するため、iptablesがロードされなくなります。

# cat /usr/lib/systemd/system/firewalld.service 
[Unit]
Description=firewalld - dynamic firewall daemon
Before=network.target
Before=libvirtd.service
Before=NetworkManager.service
Conflicts=iptables.service ip6tables.service ebtables.service

...

私は、firewalldをマスクして、自動的に起動せず、その後は起動しないようにすることで、これを解決できました。もちろん、iptablesが有効になっていることを確認する必要があります。

systemctl enable iptables

4

initスクリプトはなくなりました。さて、そのsystemctl。すべてのCentOS7ドキュメントにあります。起動時にchtconfig ipatablesまたはiptablesサービスを開始するには、これを使用する必要があります:-

systemctl enable iptables

あなたは上のCyber​​citiのドキュメントでsystemctlについて知られるようにシンプルなものにチェックアウトする必要がありiptablesの


こんにちは、フレミンゴウイルスです。あなたが提案したことを試し、リンクも調べましたが、まだ機能しません。何か案は?感謝
デイブ

@Daveはiptablesの場所を確認しましたか?/ sbin / iptables自体ですか?dpkg -L iptables
是非

[root @ CentOS-7}#rpm -ql iptables-services.x86_64 / etc / sysconfig / ip6tables / etc / sysconfig / iptables /usr/lib/systemd/system/ip6tables.service / usr / lib / systemd / system / iptables .service / usr / libexec / initscripts / legacy-actions / ip6tables / usr / libexec / initscripts / legacy-actions / ip6tables / panic / usr / libexec / initscripts / legacy-actions / ip6tables / save / usr / libexec / initscripts / legacy -actions / iptables / usr / libexec / initscripts / legacy-actions / iptables / panic / usr / libexec / initscripts / legacy-actions / iptables / save / usr / libexec / iptables /usr/libexec/iptables/ip6tables.init / usr /libexec/iptables/iptables.init
Dave

dpkgがないため、代わりにrpmを使用しました。この出力は賢明ですか?感謝
デイブ

1
@Daveはsystemctlの出力に、起動のために配置されたと表示しています。再起動して確認してください。
フレミンゴウイルス2014

0

まず最初に、#chkconfig --add /sbin/iptablesこれを試してみると「iptables」が認識されます。次に、iptables構成用のスクリプトを作成し、そのスクリプトを起動時に開始するようにします。スクリプトを作成します。

#!/bin/bash
#
iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/service iptables save

そして、例えばそれに名前を付けmyfirewallます。で実行可能にしchmod +x myfirewall、これを書き込ん./myfirewall/etc/rc.local、起動時にスクリプトを開始します。


「サービスiptablesに関する情報の読み取りエラー:そのようなファイルまたはディレクトリはありません。」また、私には、これを行うのは本当に複雑な方法のように見えます。これをCentOSに実装する方法は他にありませんか?結局、私はそれを標準のウェブ/メールサーバーとして使用することだけを試みています。デフォルトでポート80と443が開かれていない場合、どうすればWebサーバーを使用できますか。私は何か間違ったことをしていますか?
デイブ

iptablesはCentosに組み込まれています。インストールに問題があったと思います。$sudo service iptables statusコメントで出力を書き込んでみてください。
amir jj 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.