専用のubuntuサーバーにファイアウォール(iptablesに基づく)があります。私はいくつかのLANクライアントを持っています。
LANクライアントの1つで、IPに基づいてアクセスを制限できるソフトウェアを実行しています。私にとって重要なのは、LANIPではなくWANIPを使用してそれを制限できることです。
ファイアウォールを構成して、1つのポートが正常に機能するLANクライアントに転送されるようにしました(解決策はstackoverflowで見つかりました)。これまでのところ問題はありません。
ただし、LANクライアントでは、外部送信者のIPは表示されませんが、転送が原因で、クライアントはパケットがLANサーバーから送信されていることを確認します。
問題は、サーバー上のポートを別のポートを持つ別のLAN IPに転送する方法ですが、LANクライアントがパケットの外部IPを認識できるようにする方法です。
それをより明確にしましょう:
サーバーLANIP:192.168.1.10サーバーポート:8080
転送先:クライアントLAN IP:192.168.1.20クライアントLANポート:8000
iptablesで私は持っています:
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -d 192.168.1.10 -j DNAT --to 192.168.1.20:8000
iptables -A FORWARD -p tcp -d 192.168.1.20 --dport 8000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp --dport 8000 -d 192.168.1.20 -j SNAT --to 192.168.1.10
書かれているように、それは機能しますが、IP 88.77.66.55の誰かがパケットを送信すると、私のLANクライアント(192.168.1.20)は、パケットが私のLANサーバー(192.168.1.10)からのものであり、残念ながら88.77.66.55からのものではないことを認識します。
直せますか…?