NATの背後でテストサーバーを運営しています。以下のように、2222
他の認定IPサーバー(example.com
)のリモートポートを22
NATの後ろのサーバーポート()に転送してくれました。localhost
autossh -f -N -i /root/.ssh/id_rsa -R 2222:localhost:22 [email protected]
ssh
NATの背後にあるローカルサーバーは、::1
クライアントの実際のIPアドレスに関係なく、すべてのクライアントのIPアドレスのみを取得します。
w
inの出力はlocalhost
次のようになります。
22:27:37 up 8:03, 2 users, load average: 0.03, 0.03, 0.09
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user tty7 :0 14:24 8:03m 1.27s 0.33s /usr/bin/lxsession -s LXDE-pi -e LXDE
user pts/0 ::1 22:27 1.00s 0.34s 0.03s w
/var/log/auth.log
localhost
このような記事があります。
Feb 28 22:27:32 localhost sshd[5201]: Accepted password for user from ::1 port 55168 ssh2
fail2ban
スパムIPアドレスをブロックするためにファイアウォールを実行したいと思いますcsf
。だから、クライアントの実際のIPアドレスが欲しいです。どうすればいいですか?iptables
NAT
ルールを書き換えるのは役に立ちますか?
答え1
これSSHプロトコルメッセージTCP転送セッションを開くために使用されるIPアドレスとポートには、転送ポートに接続するクライアントが含まれます。 OpenSSHssh
ユーティリティは情報のみを記録し、他の操作は実行しません。
$ ssh -v -R 2048:localhost:22 localhost
...
debug1: client_request_forwarded_tcpip: listen localhost port 2048, originator ::1 port 49341
^^^^^^^^^^^^^^^^^^^^^^^^^
この情報を活用して役に立つタスクを実行するには、次のいずれかを実行する必要があります。
- デバッグモードで実行し、
ssh
関連するデバッグ出力をキャプチャして解析します。 - 調整
ssh
情報を記録したり、必要な操作を行うユーティリティです。 - 別のSSHクライアントを使用するか、自分で作成してください。ほとんどの最新のプログラミング言語用のSSHライブラリがあります。