こんにちはVPSでUbuntu 9.04を使用しています。 iptablesルールを適用するとエラーが発生します。これが私がしたことです。
1.既存のルールを保存しました
iptables-保存> /etc/iptables.up.rules
Iptables.test.rulesを作成し、それにいくつかのルールを追加します
nano /etc/iptables.test.rulesnano /etc/iptables.test.rules
これは私が追加したルールです
*filter
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT
# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allows all outbound traffic
# You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# Allows SSH connections
#
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
#
-A INPUT -p tcp -m state --state NEW --dport 22- j ACCEPT
# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
ルールを適用しようとしたときに編集した後
iptables-restore < /etc/iptables.test.rules
次のエラーが表示されます
iptables-restore:42行目が失敗しました
42行目はCOMMITであり、コメントします。
iptables-restore:43行目でCOMMITが必要です
何が問題なのかはわかりませんが、COMMITが必要ですが、COMMITが存在する場合はエラーになります。私がVPSを使用していることが原因でしょうか?私のプロバイダーは仮想化にOpenVZを使用しています。
この時点で非常に古い投稿ですが、それはグーグルのトップの結果なので、私は自分のソリューションで更新すると思いました...
COMMITまたはiptablesの後に空白行が必要です。COMMITがオンになっている行で「コマンドが指定されていません」というエラーで復元が失敗します。
iptables-restore
の動作方法により、ほとんどすべてのエラーはCOMMIT
ポイントにあると報告されます。奇妙なことに、これらのエラーが発生した場合は、重要な各行の後にCOMMITを配置し(または、疑わしい場合は、問題と思われる行の後に)、どのバーフを確認します。
ただし、ルールを簡単に検査すると、これがおそらく問題であることがわかります。
-A INPUT -p tcp -m state --state NEW --dport 22-j ACCEPT
22
と-j
の間にスペースがないことが、おそらく問題の原因です。クールな子供たちが言うように、「細部への注意は失敗します」。
[〜#〜] edit [〜#〜]:追加された情報を使って、私は手足に出て、OpenVZの問題だと言います(あなたのVPSプロバイダーはあなたに何も与えていません独自のルールを追加するためのiptablesクォータ)。とにかく、私は新しいVPSプロバイダーを見つけるでしょう。 VZは、仮想化のフィッシャープライスのおもちゃのようなものです。企業のデータセンターと10年あたり0.89ドルの「価格に敏感な」市場の終わりに位置していますが、プロのVPSホスティングにとっては絶対的な犬です。
これは古い投稿ですが、誰かの問題を解決できるかもしれません。
同じエラーが発生しましたが、それはタイプミスがあるためです。
スローされたエラーは、最後の行である「COMMIT」にありましたが、実際にはこれでした。
-A RH-Firewall-1-INPUT -p tcp -m udp --dport 161 -j ACCEPT
エラーは、同じ行に"tcp"の後に "udp"と表示されていることでした。したがって、その行を次のように変更します。
-A RH-Firewall-1-INPUT -p udp -m udp --dport 161 -j ACCEPT
私の問題を解決しました
おそらく、COMMITの前に持っていたスペース文字が原因で失敗していますか?
古いスレッドですが、Google結果の最初のスレッドでもあります。おそらく、以下の情報は、iptables
ルールが起動時に復元されない理由を解明しようとして髪を引っ張っている人を助けるでしょう。
私はUbuntu18.04でこの問題に遭遇しました。 netfilter-persistent
サービスは、手動で起動すると正常に動作しているときに、起動時にランダムに失敗しました。 sshguard
がすべてを並行してロードしようとしたため、systemd
サービスと競合していたことが判明しました。 ENABLE_FIREWALL=0
に/etc/default/sshguard
を設定してから、sshguard
チェーンとルールを/etc/iptables/rules.v4
と/etc/iptables/rules.v6
に手動で追加すると便利です。