IPアドレス表記の変換(iptables→ucspi-tcp tcpserver tcprules)

このQ&Aのポイント
  • iptables用に使用するIPアドレス一覧をtcprulesで使用できる形式に変換する方法を教えてください。
  • IPアドレス表記を変換するための簡易な関数やツールは存在しますか?
  • 詳細は以下のURLをご参照ください。
回答を見る
  • ベストアンサー

IPアドレス表記の変換(iptables→ucspi-tcp tcpserver tcprules)

iptables用に使用するIPアドレス一覧を持っています。 これは1つのアドレスをあらわす表記と、ネットワークアドレスを表す一般的な「/ビット」表記が可能です。 それを、tcprules で使用するためにアドレス表記を変換したいのですが、簡易な関数やツールはありますでしょうか。 (例)  iptables用   192.168.0.1   192.168.0.0/16   192.168.0.0/18  tcprules用   192.168.0.1   192.168.   192.168.0-63. (参考)  http://www.emaillab.org/djb/tools/ucspi-tcp/tcprules.html

質問者が選んだベストアンサー

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.1

ご希望の形式で出力されれものはないような気がします。 下記のようなコマンドイメージで実行して、その表示結果からご希望の形式に直すというのは駄目ですか? Perl(非標準モジュール Net::CIDR使用) ○192.168.0.0/16 %perl -e 'use Net::CIDR;print join("\n", Net::CIDR::cidr2octets("192.168.0.0/16"))."\n"' 192.168 ○192.168.0.0/18 %perl -e 'use Net::CIDR;print join("\n", Net::CIDR::cidr2octets("192.168.0.0/18"))."\n"' 192.168.0 192.168.1 192.168.2 192.168.3 192.168.4 192.168.5 192.168.6 192.168.7 192.168.8 192.168.9 192.168.10 192.168.11 192.168.12 192.168.13 192.168.14 192.168.15 192.168.16 192.168.17 192.168.18 192.168.19 192.168.20 192.168.21 192.168.22 192.168.23 192.168.24 192.168.25 192.168.26 192.168.27 192.168.28 192.168.29 192.168.30 192.168.31 192.168.32 192.168.33 192.168.34 192.168.35 192.168.36 192.168.37 192.168.38 192.168.39 192.168.40 192.168.41 192.168.42 192.168.43 192.168.44 192.168.45 192.168.46 192.168.47 192.168.48 192.168.49 192.168.50 192.168.51 192.168.52 192.168.53 192.168.54 192.168.55 192.168.56 192.168.57 192.168.58 192.168.59 192.168.60 192.168.61 192.168.62 192.168.63   Net::CIDRモジュールはCPANからダウンロード出来ます。  

参考URL:
http://search.cpan.org/~mrsam/Net-CIDR-0.10/CIDR.pm
helonpa
質問者

補足

iptables と tcprules でルール設定している例はある程度あるのではないかと思うのですが、知られたアドレス変換関数は無いのでしょうかねぇ。 教えて頂いたモジュールを使って以下のようにして実現できました。 どうもありがとうございました。 ---------------------------------------- $ echo $(./conv_ip_fw_tcp "192.168.0./17") 192.168.0-127. $ ---------------------------------------- #!/usr/bin/perl use strict; use Net::CIDR; my $addr_in = $ARGV[0]; # input my $addr_out; # output my @list1; # CIDR return eval{ @list1 = Net::CIDR::cidr2octets( $addr_in );}; die "CIDR ERROR:$@\n" if($@); my $list1_len = @list1; if($list1_len == 1){ $addr_out = $list1[0]; } elsif($list1_len > 1){ my $addr_fr = shift @list1; my @list_to = split(/\./, pop @list1); my $addr_to = pop @list_to; $addr_out = $addr_fr.'-'.$addr_to; } my @list2 = split(/\./, $addr_out); my $list2_len = @list2; $addr_out .= '.' if($list2_len != 4); print $addr_out; ----------------------------------------

関連するQ&A

  • TCP/IP(IPアドレス)について

    IPアドレスについて勉強しようと思っています。 最近、プライベートアドレスとグローバルアドレスの意味が分かってきたレベルです。(外部への接続となると、グローバルアドレスへ変換されていたんですね。) IPアドレスの設定値とかまったくわかりません。 クラスがA・B・Cあって、ネットワークアドレス、ホストアドレス・・ サブネットマスクについても??という状態。 本を買ってみたものの、10進数とか2進数への変換とか意味がさっぱり! この手のわかりやすいサイトとかありますでしょうか? そもそも、社内にサーバーがありこんな私でも一応管理者なんです。(小さな会社ですけど) いつも業者任せで、これでは・・と思い、IPアドレス(TCP/IP)については知識がなければと強く感じています。 お願いします。

  • TCP/IPのアドレスについて

    お世話になります。WinXPProでTCP/IPにアドレスを指定するとネットワーク接続できなくなります。アドレスの自動取得であれば問題なく接続できます。出来ればこのPCのアドレスを固定で行いたいと考えています。なぜアドレスを指定するとネットワークに接続できなくなるのか教えてください。

  • TCP/IPについて

    ネットワークのプロパティのTCP/IPを設定しよう と思ったのですが、それぞれのタブの中身が 英語表記になっており、しかもIPアドレスを 記入する欄にカーソルがあたりません! gatewayも同様です。 ホスト名などは記入できます。 ドライバーはきちんとしたものをいれているという 前提で何か他に原因があるのでしょうか?? またDHCPによるアドレス取得もできません。 何かわかることがありましたら教えてください! お願いします!! ちなみにOSはWin95でマシンはDellのGXIです。

  • TCP/IPのIPアドレス指定ができない

    Win98にて、TCP/IPの設定でIPアドレスを指定すると アドレスを入力する欄にカーソルが入らず、指定できなくなっています。 4つの数字を区切るドットが四角から飛び出ています。 ネットワークのインストールをやり直しても解決しません。 どうしたらなおりますか?

  • TCP/IPの追加

    間違ってWIN98の [ネットワーク]-[ネットワーク設定]の コンポーネント項目一覧を削除してしまい、 再起動で ・Microsoft ネットワーククライアント ・現在使用しているLAN名 ・TCP/IP の3つが復帰したのですが、 [追加]で[プロトコル]-[Microsoft]-[TCP/IP]を やっても[TCP/IP->現在使用しているLAN名]が 表示してくれません。 LANボードのインストールが悪かったのかと思い、 同じメーカーのCD-ROMで削除、インストールを 行い、ここまで出来たのですが、どうしても 追加で[TCP/IP->現在使用しているLAN名]が 表示できませんでした。 ここをクリアしないとネットができないので困ってます。 新しくLANボードを変えるべきなのか、 PCを再インストールしなくてはいけないのか、 それとも他に方法がないものかと悩んでいます。 アドバイスがあればお願いいたします。

  • TCP/IPだけが通らないのですが、、、

    IBM ThinkPad 240Z を使用しています。 元々PCの付属のイーサネットポートで社内LANに接続していたのですが、 あるときからインターネットに接続することができなくなりました。 但し、Microsoftネットワーク、Netwareネットワークは共に接続ができます。 Pingコマンドでサーバーに打つと返ってこず、自分のIPに打つと返ってきます。 勿論、IPアドレス、サブネット、ゲートウェイ、DNS等の設定は問題ありません。 恐らく、TCP/IPが正常に動作していないようなのですが、コンパネのネットワーク から、TCP/IPを一旦削除し再度インストールしてもダメです。 どうしてなのでしょうか?何を調べたらいいのでしょうか? どなたか至急に教えて下さい。大変困ってます。 

  • TCP/IPの追加ができません

    友人の話なのですが・・・。 自宅で使用しているPCを社内LANに接続しようとしたところ、IPアドレスが取れない(通常は自動取得)ので、システム管理者に教えてもらった固定のIPアドレスを設定しましたが接続できないとのこと。試しに、ネットワークコンピュータのプロパティでTCP/IPを再インストールしようと思いましたが、TCP/IPが表示されません。(OSはWin-ME) 解決方法をご存知の方がおりましたらよろしくお願いします。 ネットワーク製造元:Microsoft ネットワークプロトコル:TCP/IP←←←これが表示されません!                    他のプロトコルはあります

  • TCP/IP

    TCP/IPとは、何でしょう?プロトコルということは分かるのですが、辞書などを見ても今ひとつピンときません。 TCP/IPを設定するということは、なんのためにするのでしょうか?XPだと、ネットワークの画面でLANカードの品番のようなものを選択したり、IPアドレスを自動取得したりしますが、やってることの意味がよく分からないのです。 概要が知りたいので、PCに詳しくない人間にもわかるように教えていただけると助かります。

  • IPアドレスの競合について

    私は現在、WindowsCEにてTCP通信アプリの作成を行っているのですが、ネットワーク上に同様のIPアドレスを使用したPCが有ると、PCには『IPアドレスが競合している』とダイアログが出るのですが、WindowsCE側には出てきません。なにかEmbededVC++の関数などで、IPの競合を検知する方法は有りませんでしょうか?

  • ネットワークのTCP/IPとダイヤルアップ接続のTCP/IPの違い

    ネットワークのTCP/IPと ダイヤルアップ接続のTCP/IPとどう違うのでしょうか。 また後者の方は、サーバーが割り当てたIPアドレス、 サーバが割り宛てたネームサーバアドレスはデフォルトで設定しなくて もOKになってますが、これは指定しないとよくないのでしょうか。 ただ、よくプロバイダのマニュアルには、設定するように入力案内 されてますが、、、。 指定する場合はどういうときでしょうか。 ネットワークでTCP/IPを自動取得にすると、プロバイダーより割り当てられた IPアドレスが取得するってことで、Winipcfgで表示されるIPアドレスのことで よろしいのでしょうか。。 初心者です。回答よろしくお願いします