sshdに特定のインターフェイスをリッスンさせる


15

私のマシンでは、tun0インターフェイスを使用するOpenVPNを使用しています。sshdがこのインターフェースでのみリッスンするようにします。

IPアドレスを指定して、リッスンすることができます。

/etc/ssh/sshd_config

とともに

ListenAddress 0.0.0.0

指令。しかし、私のIPアドレスは変更されるため、ここで常に有効なIPを選択することはできません。私は、VPNが起動しているときにのみデーモンを起動できることを知っています-それは問題ではありません。

特定のインターフェイス(tun0)でのみsshdをリッスンさせるにはどうすればよいですか?


2
そうでないポート上のポート22からのファイアウォールtun0
NickW 14年

回答:


7

sshdはIPアドレスのみを理解するため、直接行うことはできません。openvpn upスクリプトを使用して何かを一緒にノックできる場合があります

-up cmd TUN / TAPデバイスを正常に開いた後に実行するシェルコマンド(--user UIDの変更前)。upスクリプトは、VPN接続のもう一方の端に存在するプライベートサブネット宛てのIPトラフィックをトンネルにルーティングするrouteコマンドを指定するのに役立ちます...

--downクリーンアップするオプションと、スクリプトのセキュリティなどを詳述したドキュメントの関連部分も参照してください。

tunデバイスのIPアドレスが環境変数としてスクリプトに渡されることがわかります。また、sshdは次の形式のコマンドラインのオプションを取ります。

-oSomeOption=SomeValue

-oオプション構成ファイルで使用される形式でオプションを指定するために使用できます。これは、個別のコマンドラインフラグがないオプションを指定する場合に便利です。オプションとその値の詳細については、sshd_config(5)を参照してください

だからあなたは使うことができます

-o ListenAddress=<some address>

おそらく、VPSと通信する帯域外の方法があるので、これが壊れたときにサーバーに接続できます。


1
試してください:-o ListenAddress=$(ip addr | awk '/inet/ && /tun0/{sub(/\/.*$/,"",$2); print $2}')
pjz 14年

@pjzデバイスのIPアドレスがupスクリプトの環境変数として利用可能であると確信しているので、あなたはそれをする必要はないと思います。私はそれをテストするために手に入れるものを持っていません。
user9517 14年

1
優秀な!IPは、ifconfig_local = 10.xx.xx.xxとしてupスクリプトに渡されます。他のデータ全体(dev_type = tun、common_name = myservername、ifconfig_remote、route_gateway_1、untrusted_ip、ifconfig_local、proto_1、tls_serial_1、tls_serial_0 ...)が渡されます。
フィリップ14年

はい、私は知っていますが、今もあなたもそうです:)
user9517 14年

3
答えを編集して、関連するenv変数名を追加したい場合がありますか?(将来の読者向け)
フィリップ14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.