問題タブ [firewalld]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pythonのdbusモジュールを介してCentOSでfirewalldを制御しますか?
私の目標は、Python を使用して CentOS 7 マシンでファイアウォールの構成を自動化することです。
OSにはfirewalldが付属しているので、それを使っています。調べたところ、dbus を使用していることがわかりました (これについて聞いたことも、対処したこともありません。間違っていることがあれば訂正してください)。
Python を使用して dbus プロセスを制御する方法に関するこのドキュメントを見つけました: http://dbus.freedesktop.org/doc/dbus-python/doc/tutorial.txt
確認したところ、OSに付属しているPythonのバージョンにはdbus
モジュールが含まれているので、有望なスタートのようです.
そのドキュメントは、firewalld が dbus インターフェイスを介して公開するものについてもっと学ぶ必要があることを示唆しています。そこで、さらに調査を行ったところ、 https ://www.mankier.com/5/firewalld.dbus が見つかりました。
最初のドキュメントでは、「よく知られている名前」から始める必要があると書かれています。そのようなことの彼らの例はorg.freedesktop.NetworkManager
. 2 番目のドキュメントのタイトルはfirewalld.dbus
です。このドキュメントでは他の場所に明示的に名前が付けられていないため、この名前を試すのに最適な名前であると考えました。
最初のドキュメントには、オブジェクト パスの名前が必要だとも書かれています。彼らの例は/org/freedesktop/NetworkManager
です。2 番目のドキュメントのオブジェクト パスは/org/fedoraproject/FirewallD1
です。
私はそれらをまとめて、最初のドキュメントが提案した最初の方法を使用してみましSystemBus
たget_object()
:
最初のパラメーターとしてもorg.fedoraproject.FirewallD1
試してみましたが、同様のエラー メッセージが表示されました。
これらが機能しないのはなぜですか? 適切な名前が何であるかを知る方法はありますか? エラーメッセージの最後に「.service ファイル」と記載されています...そのようなファイルはどこにありますか?
編集:を使用していくつかの「.serviceファイル」が見つかりましたfind / -name *.service
。そのうちの 1 つが/usr/lib/systemd/system/firewalld.service
... かなり有望なようですので、チェックしてみます。
編集 2 : かなり短いファイルです... 約 10 行しかありません。そのうちの1人は言いBusName=org.fedoraproject.FirewallD1
ます。したがって、名前が .service ファイルによって提供されなかったと言った理由がわかりません...何らかの理由でこのファイルを使用していない場合を除きますか?
python - dbus_to_python() は正確に 1 つの引数を取りますか?
firewalld
Pythondbus
モジュールを介して制御しようとしています。
現在のランタイムと永続的な構成の両方について、IP アドレスをトラスト ゾーンに追加したいと考えています。
firewalld
の dbus インターフェイスの
ドキュメントは次のとおりです。 http://manpages.ubuntu.com/manpages/wily/man5/firewalld.dbus.5.html
機能するもの: ランタイム構成
これで問題なくランタイム構成に追加できます。
ものすごく単純。
機能しないもの: 恒久的な構成
それを永続的な構成に追加することは、より困難であることが証明されています。これまでにインタラクティブに試したことは次のとおりです。
permanentProxy.getDescription()
また、説明を返す をチェックしてみましたが、 とpermanentProxy.setDescription('test')
まったく同じスタック トレースで失敗しましたpermanentProxy.addSource('aaa.xxx.yyy.zzz')
。
私は、バグが python モジュールにあるという結論に飛びつき、2 つの引数が関係し、完全に機能dbus
するという事実を除いて、どういうわけか引数を適切に処理していないと仮定します。PermanentProxy.addSource('aaa.xxx.yyy.zzz')` と同じ署名で、文字列は 1 つだけで、完全に機能します。runtimeProxy.addSource('trusted', ip)
config.getZoneByName('trusted')
それで、私が見逃している何か奇妙なことがあるのでしょうか?でも、それがどうなるかはわかりません...
成功せずに試したその他のこと
addSource
文字列引数なしで呼び出される可能性があり、おそらく何らかの形でカレーが呼び出される可能性があると考えたので、これを試しました:
これは今ではさらに奇妙です...別のトレースバック内に1つのトレースバックがあり、少なくとも2つの引数を渡す必要があると主張していますが、2つの引数を与えたと言っています(実際には1つしか与えなかったので、どのようにとにかく2つ思い付く?)
私が成功せずに試したいくつかのこと:
ガッ!
これは本当にバグのようdbus
です...どういうわけか、最初はaddSource
間違って解決され、必要な引数が少ないと考えられますが、必要な数の引数を与えると、その誤ったチェックに合格し、適切に解決され、引数が一致しないため失敗します。
とにかくそれが私の理論です。誰かが私ではない何かを見ていますか? 本当にバグがある場合、このバグを回避する方法はありますか? IE ...適切なメソッドを強制的に呼び出すdbusで使用できる内部メソッドはありますか?
salt-stack - どのようにsaltstackにfirewalldをリロードするように指示するのですか?
私はsaltstack状態ファイルを介してfirewalldを設定しようとしています(Centos7上)。サービスを永続的な構成に問題なく追加できますが、実際には、実行中の構成ではなく、「永続的な」構成になります。そのため、リロードが必要か、または (あまりオプションではありませんが) 実行中の構成にも同じサービスを追加する必要があります。
サービスを追加するために使用したもの:
public:
firewalld.present:
- name: public
- services:
- http
それは機能しますが、永続的です。
「時計」を追加しようとしましたが、まったく機能しません。
firewalld:
service.running:
- watch:
- file: /etc/firewalld/zones/public.xml
エラーは次のとおりです。
Comment: The following requisites were not found:
watch:
file: /etc/firewalld/zones/public.xml
それで、何ができるでしょうか?状態ファイルを介してサービスの再読み込みを指示するにはどうすればよいですか?
networking - Docker コンテナからローカルホストにトラフィックをリダイレクトする
でリッスンするトンネルを持つ Docker ホストがあり127.0.0.1
ます。トラフィックを送信するコンテナがあります。このトラフィックをトンネルに入れる必要があります。
Docker ホストは CentOS 7.2 を実行しており、Docker コンテナー内のサービスがすべてをインターフェイス172.17.42.1
の IP である に送信するようにしました。docker0
firewalld で、docker
次のようなゾーンを作成しました。
tcpdump で確認すると、ポートにトラフィックがありますが、ポートにはトラフィックがdocker0
あり514
ません。lo
514
私は何を間違っていますか?
routing - FirewallD 構成
FirewallDを有効にして、現在よりも少し安全にしようとしているCentOS 7マシンがあります。現在、単一のインターフェイスで構成されている 11 の異なるサブネット間のルーターとして使用されており、VPN への外部トラフィックを許可する 2 番目のインターフェイスです。ピング。以下は私の現在の設定です。
firewall-cmd --zone=internal --list-all
firewall-cmd --zone=public --list-all
firewall-cmd --direct --get-all-rules
IP アドレス ショー
VPN ルールは正常に機能し、172.16.0.10:81 の管理ページにアクセスできますが、eth0 のすべてが icmp 以外を介してパケットを取得しません。詳細を知りたい場合はお知らせください。
編集: eth0を信頼できるゾーンに移動しようとしたところ、トラフィックが許可されたため、インターフェイス構成エラーではないことがわかりました。
編集 2:さらにテストした結果、CentOS マシンは許可されたサービス (ssh、dns など) への直接接続を受け入れますが、ファイアウォールがオフの場合のように、トラフィックを他のサブネット上の宛先にルーティングしないことがわかりました。