問題タブ [iptables]
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.
linux - プログラムでiptablesルールをその場で管理するにはどうすればよいですか?
ルールを簡単に追加および削除できるようにするだけでなく、既存のルールをクエリする必要があります。これを行うためのAPIは見つかりませんでした。足りないものはありますか?
私が解決策に最も近いのは、iptables-save | iptables-xml
ルールを追加/削除するためにiptablesコマンド自体をクエリして手動で呼び出すために使用することです。私が検討したもう1つの解決策は、アプリケーションのデータベースからルールセット全体を再生成し、チェーン全体をフラッシュしてから、再度適用することです。しかし、これをアトミックに行う方法がない限り、パケットをドロップしたくないので、これを避けたいと思います。もっと良い方法があるのだろうかと思います。
CのAPIは素晴らしいでしょう。ただし、これをスタンドアロンのsuidプログラムに組み込むことを計画しているので、これを任意の言語で実行するライブラリも問題ありません。
linux - Linux で SYN パケットがドロップされることがある
iptables を有効にして、2.6.16 カーネルで Debian を実行しています。システムはカスタムメイドの HTTP プロキシを実行しており、負荷は軽度です (他のサイトでは同じ負荷で問題なく動作します)。このシステムは、4 つの ISA 2004 マシンのアレイが先行する仮想 IP を持つロード バランサーが先行する 4 つのサーバーで構成されるため、基本的なトポロジは次のようになります。
クライアント -> ISA [1-4] -> ロード バランサー -> 当社のプロキシ [1-4] -> インターネット
ISA が SYN パケットを送信することがありますが、SYN-ACK は送信されていません。3 秒後に再試行し、さらに 6 秒後に 3 回目の試行を行った後、プロキシがダウンしていることを報告し、直接接続に切り替えます。この間、つまりこれら 3 つの SYN の前、間、および後に、同じ ISA からの他の SYN が来て、正常に応答されます。
非常によく似た問題が他の人から報告されています (ただし、解決策はありません)。
すべては、CentOS と呼ばれる Linux のフレーバーから来ています。その特徴は、デフォルトで iptables が有効になっていることです。
http://www.linuxhelpforum.com/showthread.php?t=931912&mode=linear http://www.centos.org/modules/newbb/viewtopic.php?topic_id=16147
ほとんど同じですが、少し異なります: http://www.linuxquestions.org/questions/linux-networking-3/tcp-handshake-fails-synack-ignored-by-system.-637171/
また、関連しているようです: http://groups.google.com/group/comp.os.linux.networking/browse_thread/thread/b1c000e2d65e0034
iptables が原因であると思われますが、追加のフィードバックがあれば歓迎します。
linux - RMI アクセス用に iptables でポートを開くにはどうすればよいですか
Java アプリケーションから、RMI に使用されるポート 8088 が閉じられている開発サーバーに接続しようとしています。そのポートを開く方法についての助けに感謝します。
linux - iptables を使用して宛先ポートを変更する
iptables を使用して UDP パケットの宛先ポートを変更することは可能ですか?
162 ではなく 1620 でトラップを送信するように SNMP エージェントを取得しようとしています。残念ながら、これまでのところ、送信元ポートを変更することしかできませんでした。
iptables -t nat -A ポストルーティング -p udp --dport 162 -j SNAT --to :1620
linux - SNMP ペイロード アドレス変換
iptables
LinuxでNAT SNMPトラフィックを使用しています。一部の SNMP パケットには、それらを生成したデバイスの (実際の) IP アドレスを含む VARBIND があります。これは、VARBIND で NAT されたアドレスを確認する必要がある標準の管理ツールを混乱させます。そのため、ヘッダーのアドレスに加えて、ペイロードのアドレスも変換する必要があります。
標準ツールはnf_nat_snmp_basic.ko
カーネル モジュールですが、元のバージョンはアドレスの最初のオクテットのみを変換し、最新バージョンは単にパケット全体を破損します。これは明らかに、Web (www.netfilter.org) の「常識」であり、私自身の機器で確認しました。
カーネルに飛び込む前に、他の誰かがこの問題に取り組み、適切な解決策を思いついたことがありますか? 現時点では、OID がタイプを IP アドレスとして指定している VARBIND のみを変換するだけで十分です。つまり、文字列データに埋め込まれたアドレスを変換する必要はありません。これははるかに困難です。
ご提案いただきありがとうございます。
firewall - Fedora Core 8 でポートを開く (VMWare サーバー用)
Fedora Core 8 の新規インストールに VMWare Server 2.0 をインストールしました。VMWare の Web アクセス コンソールのポートは、デフォルトと同様に 8222 と 8333 です。
myserver:8222 へのリモート http アクセスを試みると失敗します。しかし、私が走るとき
アクセスが可能になります(あまり満足できませんが)。したがって、次のようにconfファイルを更新しました
それでも、iptables設定をリロードした後でも、まだ機能していません。私が間違っていることを誰かが知っていますか?
linux - iptables 以外のパケット マングリング ユーティリティ?
一連のルールに基づいてネットワーク パケットのペイロードを変更できる Linux ユーティリティを探しています。理想的にはiptables
、netfilter
カーネル モジュールを使用しますが、それらは一般的なペイロード マングリングをサポートしていません。iptables
さまざまなヘッダーフィールド (アドレス、ポート、TOS など) を変更し、パケット内の任意のバイトに一致させることができますが、明らかにパケット内の任意のデータを変更することはできません。
効率性が懸念されるため、カーネル モジュールは大きなプラスになりますが、仕事を成し遂げる他のオプションを喜んで検討します。
アイデアをありがとう!
久々の更新:
このNFQUEUE
モジュールは、Robert Gamble が提案した QUEUE モジュールの最新の実装です。コードをカーネルではなくユーザースペースで実行できるようにするための安全ボーナスを備えた、かなり単純なように見えました。
サイズを変更せずにペイロードを変更するだけであれば、実装はほとんど簡単でした。iptables
その場合、 「関心のある」パケットを選択してNFQUEUE
ターゲットに送信するルールを定義します。からのパケットを検査し、NFQUEUE
必要に応じてデータを変更し、TCP および IP ヘッダーのチェックサムを再計算するコールバック関数を作成します。
ただし、私たちの使用例には、データ ストリームに追加の文字を挿入することが含まれます。これには、TCP ストリーム内の対応する SEQ/ACK 番号を増加させるというやや明白な副作用と、conntrack
NAT を完全に破壊するほどモジュールを混乱させるというそれほど明白ではない副作用があります。多くの調査、頭を悩ませ、実験を重ねた結果、最も適切な解決策は、これらの特定のパケット (テーブル NOTRACK
内のターゲットを含む) の接続追跡を無効にし、コールバックで処理することでした。raw
あなたのトマトと憎しみのメールを保存してください。ボンネットの下に入れることを誇りに思っているわけではありませんが、次の氷河期の前に信頼できる製品を顧客に届ける唯一の方法でした. そして、それは良い話です。しかし、私はあなたの心からの気持ちを本当に感謝し、共有します.
iptables
バージョン 2 では、コールバックといくつかのルールをカスタム NAT および/またはconntrack
ヘルパーに置き換えることで、新たに発見された啓発を活用します。今回の演習で、遭遇した問題を解決する netfilter アーキテクチャに有機的に適合するカーネル モジュールを作成するのに十分な経験が得られたと確信しています。
windows - VMware と iptables
Windows で VMware を使用して、iptables を実行する仮想 Linux ボックスをホストする際に問題はありますか? 物理ハードウェアでは動作するように見える構成がありますが、VMware では不安定です。
VMware を使用して、Windows 2003 Server ホストで仮想 Linux 2.6.24 マシンを実行しています。Linux アプリケーションは、基本的に .NET を実行する NATting ルーターですiptables
。表のルールは次のnat
とおりです。
を使用して 10.10.1.33:80 への着信パケットが表示されます。tcpdump
最初のLOG
メッセージはメッセージを生成しますがDNAT
、2 番目も 2 番目もLOG
パケット カウンターに登録されているパケットを表示せず、2 番目LOG
はメッセージを生成tcpdump
せず、へのパケットを表示しません。 192.168.0.33。
アダプタはeth0
10.10.0.0/16 ネットワーク上にあり、デフォルト ゲートウェイは 10.10.1.1 です。セカンダリ アドレスは 10.10.1.33/32 です。 /proc/sys/net/ipv4/config/eth0/forwarding
1に設定されています。
VMware が原因ですか、それとも何か不足していますか? ありがとう!
更新: テスト環境を簡素化しました。NAT ルールはまったくなく、Win2k3 サーバー ホストで実行されている Linux VM だけです。テスト手順:
VM はホスト NIC にブリッジされます。VM とホストは同じサブネット上にあり、上記と同じデフォルト ゲートウェイを使用します。
VM は、サブネット内外のデバイスと通信します: ICMP、TCP、UDP。通信は双方向です。どの機器が通信を開始するかは問題ではありません。
エンジニアは、システムを突っついている間にデフォルト ゲートウェイの電源を入れ直しました。
VM は、そのサブネット上のデバイスとのみ通信するようになりました。ステップ 2でゲートウェイを介して同じ機器に通信しようとしても、パケットを送信できません。 VM の eth0 の tcpdump は、応答のない発信パケットを示します。ホストの WireShark は、物理 NIC に何も表示しません。
VM を停止して再起動しても、その動作は変わりません。VM を停止し、適切な IP アドレスなどを持つ別の VM に置き換えても、動作は変わりません。
Win2k3 ホストは、サブネットの内外で正常に通信を続けます。
このことから、VM とホストの間、つまり VMware ドライバーまたはホストのネットワーク スタックで「何かが発生した」としか結論付けられません。私は再びウェブを精査するために出発します.... これを最初に観察したのは私たちだとは想像しがたいです.
彼らが来るように更新します。あなたの考えと議論をありがとう。
networking - 特定のポートのすべてのリクエストをネットワーク上の別のマシンに転送する最良の方法は何ですか?
2 台の専用サーバーがあり、ハードウェア ファイアウォールはありません。ポート 1008 のプライマリ サーバーに着信するすべての要求を転送して、同じネットワーク上の別の専用サーバーで処理したいと考えています。ある種の TCP プロキシをセットアップする必要があることは知っていますが、昨日 IPTables について初めて耳にしました。簡単なヒントはありますか?
scalability - 画像リクエストを別のウェブサーバーにリダイレクトする最良の方法は?
「画像サーバー」(画像リクエストを処理するための専用サーバー)を追加し、.gif、.jpg、.png などのすべてのリクエストをリダイレクトすることで、Web サーバーの負荷を軽減しようとしています。
私の質問は、リダイレクトを処理する最良の方法は何ですか?
- ファイアウォールレベルで?(iptables を使用してこれを実行できますか?)
- ロードバランサーレベルで?(ldirectord はこれを処理できますか?)
- Apache レベルで - 書き換えルールを使用していますか?
これを行うための最良の方法についての提案に感謝します。
- アップデート -
追加したいことの 1 つは、これらはサード パーティ向けにホストされているドメインであるため、すべての開発者がコードを変更してイメージを別のサーバーに向けることを期待することはできないということです。