web-dev-qa-db-ja.com

NAT

ワイヤレスセルラーデータネットワークを介して単一のクライアントデバイスにインターネット接続を提供するルーターがあります。このネットワークは、非公開のIPアドレスを提供します。ネットワークの外部で静的IPアドレスを取得して、すべてをセルネットワーク上のデバイスにルーティングして戻したいのですが。

これは組み込みデバイスであるため、スペースが限られています(ここで使用するには約500kB)。ネットワークは高価であるため、トラフィックを過度に消費する必要はありません。

まず、iproute2を使用してIPIPトンネルを作成してみました。サーバーから、ルーターが受信したプライベートアドレスではなく、ルーターの出力IPをリモートIPに使用しました。ルーターがトンネルを介してサーバーと通信すると、サーバーが通信できるようになることを期待していました。これはそうではありませんでした。

Dropbear SSHを試してみたところ、一般的なトンネルを実行できないことがわかりましたが、iptablesを使用してそれを回避できると思いました。ただし、sshリンクを開くだけで約150バイト/秒を消費するようです。

Ncも試しましたが、通信が一方向しかないため、サーバーへの接続を開始できますが、何も返されません。

OpenSSHとOpenVPNは大きすぎてデバイスに収まりません(どちらも約1MB)。

私の次の試みは、永続ソケットをサーバーに対して開いたままにするプログラムを作成し、iptablesを使用してトラフィックをそのプログラムにルーティングすることです。最初に他のアイデアがあるかどうかを確認したかったのです。

それで、何かアイデアはありますか?

4
Shawn J. Goff

IPIPトンネルが機能する可能性がある唯一のNATは1対1のNATであり、これは明らかにセルラーの場合とは異なります。

この「オープンSSH接続の150バイト/秒」ビジネスは非常に奇妙であり、調査する必要があります。 OpenSSH-> OpenSSHセッションではそのようなことは起こりません(避けられないキープアライブがありますが、NATの背後にいるときに実際にキープアライブが必要です)。実際にトラフィックを通過させない限り、そうすべき理由はありません。

Netcatが単方向であると誤解されています。netcatで開始されたTCPセッションは双方向で機能します。

可能な方法で双方向ストリームを取得し(おそらくnetcatとサーバー上のTCPリスナー))、その上でPPP)を実行することをお勧めします。 通常の欠点 IP over TCPを実行することですが、接続がまったくないよりはましです。

簡単なテストで私に役立つものは次のとおりです-サーバー上で:

server:~$ Sudo pppd noauth passive pty "nc -lp 9999" debug nodetach

クライアントの場合:

client:~$ Sudo pppd noauth pty "nc server 9999" debug nodetach

ダイヤルアップセマンティクスを持つことは、セルデバイスに到達できない場合の便利なモデルにもなると思います。

IP接続を実行した後、IPIPまたは1:1NATの再生を検討できます。

4
Thomas Themel