まずインターネットでこのソフトウェアを購入した会社まで検索してから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」で以下を行いました。
net.ipv4.ip_forward=1 以前のコンテンツを編集し
/etc/sysctl.conf
てコメントを削除します。#
修正する
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
再起動時にエントリを保存するには、上記のテーブルを保存するかどうかを確認するメッセージが表示され、[はい]と答える必要があります。
sudo apt install iptables-persistent
MX「ファイアウォールの設定」と入力し、「パブリック、プライベート、オフィス」をオフにし、デフォルトでファイアウォールをオフにします。
コンピュータを再起動してください
いいですね。それでは、次のように再起動後の状況を一覧表示しましょう。ネットワーク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つの引数のセットがあります。
リスニングアドレス
LISTEN:1025
- このポートで聞くfork
- 各インバウンド要求を処理するために子プロセスをフォークします。range=192.168.10.0/24
- このネットワーク範囲内のデバイスからの要求を受け入れます。reuseaddr
- アドレス/ポートタプルをすばやく再利用できます。bind=192.168.10.106
eth0
- この住所(あなたの住所)を聞いてください。
転送/中継アドレス
TCP4:127.0.0.1:1025
- このアドレスに中継:ポート