iptablesを使用してipv6をipv4に転送しますか?


15

現在、設定には、修正に永遠に時間がかかる設定があるため、ipv4のみがアクセスできるサーバーがあります。ただし、ipv6からアクセスできるサーバーもあります。iptablesを使用して、特定のポート上のipv6トラフィックをサーバーの1つからipv4トラフィックを使用する別のサーバーに転送できるかどうか疑問に思っていました。


2
あなたが探しているのはNAT64と呼ばれるもので、iptablesで(まだ)できるとは思いません。
クリスS

Chrisは正解です。NAT64RFCが公開されたばかりで、何かが実際にサポートするまでしばらくお待ちください。とはいえ、別の方法で目標を達成できる場合もありますが、確実に知るには十分な詳細がありません。たとえば、HTTPサーバーの場合、プロトコル間でリクエストをリバースプロキシできます。
シェーンマッデン

回答:


16

IPtablesは現在これを行うことができないため、接続をプロキシするにはユーザー空間プロセスが必要です。socatはこれに適したツールです。

socat TCP6-LISTEN:1234,fork TCP4:1.2.3.4:1234

1
おかげで、これは役に立ちました!誰かがUDPソリューションを探している場合:socat UDP6-RECVFROM:64444、fork UDP4-SENDTO:localhost:64443は私のために働いた
アレクサンダー14

10

で述べたようにあなたの質問のコメント、NAT64は遠くでも3年後、準備ができているからです。

ただし、6tunnel困惑によって示唆されたように、試すことができます。

幸い、DebianおよびUbuntuリポジトリに存在するため、を使用して非常に簡単にインストールできますsudo apt-get install 6tunnel。別のシステムを使用している場合は、sourceから構築する必要があります。

ソースからビルドするのは本当に難しくはなく、いくつかのコマンドを(rootとして)実行するだけです:

git clone https://github.com/wojtekka/6tunnel && cd 6tunnel && ./autogen.sh && make && make install

構文は次のとおりです。

6tunnel [-4|-6] [-l local-host] original-port destination-host destination-port
  • [-4|-6]オプションで、あなたはあなたが(それぞれ)IPv4またはIPv6上で(聞く)と結合ますかどうかを指定できます。
  • -lオプションです。バインドするアドレス(IPv4またはIPv6)を選択できます。
  • 元のポートは、あなたがバインドうしているポートです。
  • 宛先ホストはあなたにトラフィックを転送するだろう場所です。どこでも構いません:localhost、またはネットワークまたはインターネット上の他の場所。
  • 宛先ポートは、あなたの転送されたトラフィックを受信します宛先ホスト上のポートです。

たとえば、ポート1337でリッスンしているIPv4専用サーバーがIPv6経由でアクセスできるようにするには、次を使用します。

6tunnel -6 1337 localhost 1337

上記のコマンドは、IPv6のポート1337でリッスンし、IPv4経由で同じマシンのポート1337にトラフィックを転送します。その後、バックグラウンドで実行されるので、心配する必要はありません。

実際には、cronジョブをセットアップして、それがまだ実行されていることを確認する必要があります。あなたの便宜のために6tunnel提供します!起動時に実行することも悪い考えではありません。

詳細なドキュメントについては、6tunnel -hまたはを実行してくださいman 6tunnel


パズルで現在の回答を編集するとあまりにも多くの変更が行われ、編集案として拒否される可能性があるため、新しい回答として投稿してください!
レオラム

5

最近のバージョンのxinetd缶も前方その後、IPv4アドレスへの接続をIPv6を聞くと。

ポート3389でIPv6接続をリッスンし、内部IPv4アドレスのポート3389に転送するサンプル構成:

service rdp_port_forward
{
    flags           = IPv6
    disable         = no
    type            = UNLISTED
    socket_type     = stream
    protocol        = tcp
    user            = nobody
    wait            = no
    redirect        = 10.187.20.42 3389
    port            = 3389
}

これはxinetd、ベースシステムと共にインストールされるか、承認されたベンダーリポジトリで利用できる可能性が高いため、より制限された環境で役立つ場合があります。


3

レオ・ラムズの回答と賛成についてコメントしたかったのですが、評判が十分ではありません。まず第一に:ありがとう、レオ・ラム!

このスレッドに沿って来ている人の場合:私のISPは、Dual Stack Liteを使用してIPv4からIPv6に接続を変更しました。つまり、自分のIPv4アドレスはもうありません。IPv6をサポートしていないanyhwereからIPカメラにアクセスしたいので、これは問題でした。これを解決するために、次のことを試しました。

  1. ルーターのUbuntu 99マシンのポート99でIPv6転送を有効にします。
  2. Ubuntuマシン(ホームネットワーク): sudo 6tunnel -6 99 192.168.178.35 80
  3. 静的IPv4およびIPv6アドレスを持つvServer Debian: sudo 6tunnel -4 99 IPV6PREFIXROUTER:IPV6INTERFACEIDUUBUNTUMACHINE 99
  4. vServer Debian:iptablesのポート99で着信TCP接続を許可

ルーターでipv6プレフィックスが示され、IPv6転送プロセスでインターフェイスIDがマップされました。

これで、vServerドメインexample.com:99を使用して、どこからでもカメラにアクセスできます。私は、この仕事を果たすラズベリーまたは他のタスクのためのバナナpi m3を入手する予定です。


1
これで、別のIPカメラが必要になったときの対処方法がわかりました。2015年です。IPv6をサポートしていないものを購入するのは、まったくお金の無駄です。
マイケルハンプトン

カメラが数年前のものではない:p
クルマー

2

必ずOPよりもこのページを見つける人々の利益のために(私はここでIPv4(ツイスト)アプリケーションのIPv6接続のソリューションを探して来ました)、1つの可能性はアプリケーション6tunnelで、IPv6でリッスンし、リクエストを別のインターフェイスに転送し港。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.