いくつかのRaspberry Piをいくつかのホームネットワークにインストールし、ポート転送なしでリモートクライアントからSSH経由でアクセスできるようにしたいと思います。
クライアントは固定されていないため、すべてのクライアントがすべてのRaspberry Piに接続できる必要があります。
私の考えは、各RPIが既知のIPを使用して中央サーバーへのリバースSSH接続を開くようにして、クライアントがC&Cサーバーに接続できるようにすることです。次に、何らかの方法で接続をRPIの1つに転送します(どのRPIを選択できるか)。クライアントがC&Cサーバーに接続するポート)
これまで、私は次のようにRPIポート22をC&Cサーバーに提供する必要があることを知っています。
RPIで実行:
ssh -R 127.0.0.1:2222:127.0.0.1:22 user@[c&c ip]
C&Cは理論的にはローカル2222ポートに接続してRaspiの1つに接続できますが、これまでC&Cを介して外部からRPIの1つに接続する機能はありません。
編集:解決策が見つかりました:
C&Cサーバーで/etc/ssh/sshd_configを編集しgatewayports
ますyes
。
これで、C&C サーバーのポート 2222 に接続して RPI に到達できるようになります。
ベストアンサー1
ポートフォワーディングがありません。
しかし、あなたがやっていることは(SSHトンネルを介した)ポート転送です!
したがって、これを達成するには、各RPiにサーバーに独自のポートを提供するのではなく(迅速に混乱する可能性があります)、各クライアントが固定IPアドレスを持つ内部ネットワークを持つことが直感的に見えます。パブリックIPネットワークを介してトンネリングされます。 VPN!
これにより、クライアントとRaspberry Piの間に実質的な違いはありません。どちらも固定パブリックアドレスを持たないVPNのシステムです。
最近は設定がとても簡単です。関連するすべてのシステムにwireguardツールをインストールし、各システムに公開/秘密鍵のペアを作成するだけです(wg genkey | tee private_key | wg public_key
)。
各クライアントとRPに、次の内容を含む構成ファイルを提供します。
[Interface]
PrivateKey = {Private key as generated on this machine}
# Pick an different individual address for each machine from the
# networks described below as allowed:
Address = 10.0.123.101, fd42:42:42:0:0101::
# ^^^ ^^^^^^
# Parts of the addresses to modify; I just randomly chose to
# give 10.0.123.101 – 10.0.123.199 to your RPis, and
# give 10.0.123.201 – 10.0.123.254 to your clients
DNS = {IP address of the DNS resolver to use}
[Peer]
PublicKey = {The public key from the server}
Endpoint = {The public IP address of the server}:{Port on the server}
# Allow addresses from the private networks:
# IPv4: 10.0.123.0
#through 10.0.123.255
#
# IPv6: fd00:1111:2222:1:0000:0000:0000:0000
#through fd00:1111:2222:1:ffff:ffff:ffff:ffff
AllowedIPs = 10.0.123.0/24,fd00:1111:2222:1::1/64
そしてサーバーではほとんど同じですが、すべてのクライアントコンピュータをPeer
sとして一覧表示します。
[Interface]
PrivateKey = {Private key as generated on this machine (the server)}
Address = 10.0.123.0, fd42:42:42:0::
DNS = {IP address of the DNS resolver to use}
[Peer]
PublicKey = {The public key from the 1. RPi}
AllowedIPs = 10.0.123.101/32, fd42:42:42:0:0101::/128
[Peer]
PublicKey = {The public key from the 2. RPi}
AllowedIPs = 10.0.123.102/32, fd42:42:42:0:0102::/128
# all the other RPis…
# … and all of the "clients":
[Peer]
PublicKey = {The public key from the 1. client}
AllowedIPs = 10.0.123.201/32, fd42:42:42:0:0201::/128
[Peer]
PublicKey = {The public key from the 2. client}
AllowedIPs = 10.0.123.202/32, fd42:42:42:0:0202::/128
# …
はい(/etc/wireguard/
たとえば、これらの設定ファイルをとして保存し、wgvpn0.conf
それを使用して有効にします。IPv4systemctl enable --now wg-quick@wgvpn0
を使用するかv6を使用するかによって異なります)ssh 110.0.123.101
。