サービスは127.0.0.1ポート1025でのみリッスンします。ローカルネットワーク上のすべてのコンピュータがこのサービスと通信できるようにするにはどうすればよいですか?

サービスは127.0.0.1ポート1025でのみリッスンします。ローカルネットワーク上のすべてのコンピュータがこのサービスと通信できるようにするにはどうすればよいですか?

まずインターネットでこのソフトウェアを購入した会社まで検索してから5ヶ月が経ちました!だから私はあまりにも長い間読んでみましたが、何も見つからず、私の目と脳が血を流していたので、コミュニティに目を向けました。簡単に言えば、大丈夫ですか?明らかに私はこれを行うにはあまりにも愚かですが、少なくとも私は今iptablesに関する多くの知識を持っています:-)

私の要件:電子メールにprotonmailを使用してください。知らなかった場合は、電子メールを送受信するために必要なすべてのコンピュータで「ブリッジソフトウェア」を実行するのに十分安全です。スマートホーム、カメラ、アラームなどのメールを送りたいです。想像できるように、カメラはもちろん、20台のデバイスにこのソフトウェアをインストールすることはできませんでした!したがって、電子メール「ハブ」として機能するには、このソフトウェアを実行しているLinuxサーバーが必要です。

私のネットワークは192.168.10.0/24です。 VLANもなく複雑もありません(pfsenseはルーター/ファイアウォールとして機能します)。

私はmxlinux / debianを「電子メールホスト」として使用しています。 192.168.10.106 IMAP はポート 1143 で受信中です。 SMTP はポート 1025 でリッスンしています。

私が望むのは、私のネットワーク上のすべてのデバイスが192.168.10.106を使用してポート1025でSMTPを使用して電子メールを送信できるようにすることです。簡単だと思いましたが…しかしそうではありません。クソソフトウェアが127.0.0.1でのみリッスンするため、0.0.0.0などに変更できません。

まず、私がprotonmailに直接連絡したことを知る必要があります。 Protonmailは有料の電子メールサービスであり、実際に自分がしていることを知っていて、あなたと話す技術者がいるからです。ただし、彼らはサービスが0.0.0.0でリッスンすることを許可することを「セキュリティリスク」と見なすため、コードはそれを変更できません。 「email server/192.168.10.106」で以下を行いました。

  1. net.ipv4.ip_forward=1 以前のコンテンツを編集し/etc/sysctl.confてコメントを削除します。#

  2. 修正するiptables

    sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.10.0/24 --dport 1025 -j DNAT --to-destination 127.0.0.1:1025 
    sudo iptables -t nat -A POSTROUTING -o lo -p tcp --dport 1025 -j SNAT --to-source 192.168.10.106
    sudo iptables -A FORWARD -i eth0 -o lo -p tcp --dport 1025 -j ACCEPT
    
  3. 再起動時にエントリを保存するには、上記のテーブルを保存するかどうかを確認するメッセージが表示され、[はい]と答える必要があります。

    sudo apt install iptables-persistent
    
  4. MX「ファイアウォールの設定」と入力し、「パブリック、プライベート、オフィス」をオフにし、デフォルトでファイアウォールをオフにします。

  5. コンピュータを再起動してください

いいですね。それでは、次のように再起動後の状況を一覧表示しましょう。ネットワーク192.168.10.50のWindowsシステムでTelnetを試してみましたが、ご覧のようにパケットを表示できますが、機能しません。 :-( :-( :-( :-( :-( :-( :-( :-( )-( :-( :-( ))

sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 15748 packets, 1719K bytes)
 pkts bytes target     prot opt in     out     source               destination
    5   260 DNAT       tcp   --  eth0  *       192.168.10.0/24      0.0.0.0/0 tcp dpt:1025 to:127.0.0.1:1025

Chain INPUT (policy ACCEPT 15748 packets, 1719K bytes)
 pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 730 packets, 73256 bytes)
 pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 730 packets, 73256 bytes)
 pkts bytes target     prot opt in     out     source               destination

    0     0 SNAT       tcp  --  *      lo      0.0.0.0/0            0.0.0.0/0 tcp dpt:1025 to:192.168.10.106

これが私のlocalhostの電子メールシステムでサービスをテストするところです。

$ telnet 127.0.0.1 1025
Trying 127.0.0.1... Connected to 127.0.0.1.
Escape character is '^]'.
220 127.0.0.1 ESMTP Service Ready

eth0受信者が破棄したパケットに注意してください。

$ uname -a
Linux email 5.10.0-23-amd64 #1 SMP Debian 5.10.179-2 (2023-07-14) x86_64 GNU/Linux

bob@email:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.10.106 netmask 255.255.255.0 broadcast 192.168.10.255
        ether 00:0c:29:63:d5:4f txqueuelen 1000 (Ethernet)
        RX packets 126620 bytes 24077186 (22.9 MiB)
        RX errors 0 dropped 6447 overruns 0 frame 0
        TX packets 30080 bytes 3728557 (3.5 MiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
        inet 127.0.0.1 netmask 255.0.0.0
        loop txqueuelen 1000 (Local Loopback)
        RX packets 57 bytes 4931 (4.8 KiB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 57 bytes 4931 (4.8 KiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

上記のどれも効果がなかったので、さまざまなバリエーションを試しました。また、役に立たなかったようですが、使用するように提案されたコマンドを見つけましたが、とにかく試してみました。

sysctl -w net.ipv4.conf.eth0.route_localnet=1

ベストアンサー1

別の方法は、アプリケーションフォワーダを使用することです。必要ではないか、iptablesカーネルレベルの転送は必要ありません。この例ではこれを使用しましたが、socat他の可能性がある可能性があります。ここで許可される一連のソースIPアドレスは、アプリケーションパラメータとして定義されます。

socat TCP-LISTEN:1025,fork,range=192.168.10.0/24,reuseaddr,bind=192.168.10.106 TCP4:127.0.0.1:1025

これには2つの引数のセットがあります。

  1. リスニングアドレス

    • LISTEN:1025- このポートで聞く
    • fork- 各インバウンド要求を処理するために子プロセスをフォークします。
    • range=192.168.10.0/24- このネットワーク範囲内のデバイスからの要求を受け入れます。
    • reuseaddr- アドレス/ポートタプルをすばやく再利用できます。
    • bind=192.168.10.106eth0- この住所(あなたの住所)を聞いてください。
  2. 転送/中継アドレス

    • TCP4:127.0.0.1:1025- このアドレスに中継:ポート

おすすめ記事