
無線セルラーデータネットワークを介して単一のクライアント装置にインターネット接続を提供するルータがある。このネットワークは限定されたプライベートIPアドレスを提供します。すべてをセルラーネットワークのデバイスに再ルーティングできるように、ネットワークの外部から静的IPアドレスを取得したいと思います。
組み込みデバイスなので、スペースが限られています(ここでは約500kBが必要です)。インターネットは価格が非常に高価なので、トラフィックをあまり消費することはできません。
まず、iproute2を使用してIPIPトンネルを作成しました。サーバーは、ルーターが受信するプライベートアドレスではなく、ルーターの送信IPをリモートIPとして使用します。ルーターがトンネルを介してサーバーと通信すると、サーバーが応答できることを願っています。そうではありません。
私はdropbear SSHを試してみて、汎用トンネリングを行うことができないことを知っていましたが、iptablesを使用するとこの問題を解決できるようです。しかし、SSHリンクを開くだけで毎秒約150バイトを消費するようです。
ncも試しましたが、通信は一方向にのみ進行するため、サーバーへの接続を開始できますが、情報を返すことはできません。
OpenSSHとOpenVPNは大きすぎてデバイスにインストールできません(両方とも約1MB)。
次の試みは、サーバーの永続ソケットを開いたままにし、iptablesを使用してトラフィックをプログラムにルーティングするプログラムを作成することです。まず、別のアイデアがあるかどうかを確認したかった。
では、どう思いますか?
答え1
IPIPトンネルで使用できる唯一のNATは1対1のNATであり、これは明らかにセルラーの場合には該当しません。
この「1秒あたり150バイトのSSH接続を開く」状況は非常に奇妙なので、調査する必要があります。私には、OpenSSH -> OpenSSHセッションではこのようなことは起こらず(避けられない接続を維持していますが、実際にはNATの後ろにある場合はそれを望む)、実際にトラフィックが転送されない限り、そうする理由はありません。
netcatは一方向であり、netcatで始まるTCPセッションは双方向であると誤って考えています。
何らかの方法で(おそらくサーバーにnetcatとTCPリスナーがあるかもしれません)、双方向ストリームを取得してそこからPPPを実行することをお勧めします。あなたはすべてを得る一般的な欠点TCP経由でIPを実行しますが、まったく接続されていないよりも優れています。
サーバーでクイックテストを実行したときに効果があった方法は次のとおりです。
server:~$ sudo pppd noauth passive pty "nc -lp 9999" debug nodetach
クライアント側から:
client:~$ sudo pppd noauth pty "nc server 9999" debug nodetach
ダイヤルアップセマンティクスは、携帯電話デバイスに簡単にアクセスできない状況にも役立つモデルを提供すると思います。
IP接続を実行したら、IPIPまたは1:1 NATを使用してプレイすることを検討できます。