私の設定では、まず VPN に接続し、次にサーバーに SSH で接続する必要があります。
現在、私はこれが好きです:
openvpn myconfig.ovpn
ssh myuser@myserver
これにより、すべてのネットワーク トラフィックがその VPN を経由するようになります。
しかし、私はないすべてのデータ トラフィックをこの VPN 経由で送信したいです。GNU/Linux を使用して、特定の 1 つの SSH 接続でのみ VPN を使用するにはどのツールを使用すればよいですか?
つまり、次の操作を実行するために、bash スクリプトでどのツールを使用できますか。
ssh-over-vpn.sh myuser.ovpn [email protected]
そして、SSH接続にのみVPN設定を使用する[メールアドレス]?
現在の myuser.ovpn 構成ファイルには次の内容が含まれています。
client
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote 200.200.200.18 443
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-GCM
setenv opt block-outside-dns
key-direction 1
verb 3
<ca> ... </ca> <cert> ...<key> ...<tls-auth> ...
答え1
ただし、すべてのデータ トラフィックがこの VPN を通過することは望ましくありません。GNU/Linux を使用して、特定の 1 つの SSH 接続でのみ VPN を使用するには、どのツールを使用すればよいですか。
OpenVPNクライアントの設定を次のように変更しますないサーバーから「デフォルト」ルートを取得します。代わりに、必要なルートのみを指定します。
route-nopull
route 10.0.0.66 255.255.255.255 vpn_gateway
つまり、次の操作を実行するために、bash スクリプトでどのツールを使用できますか。
選択肢はあまりありません。SOCKSプロキシ(例:torify)では、トランスポート層トンネルがラップされたプログラムが作成するソケットに直接マップされるため、同様のツールが比較的簡単に使用できます。少しIP 層トンネル (VPN) の場合は、ラッピング ツールで実際の OpenVPN プロトコルの再実装に加えて、オペレーティング システムのネットワーク スタックの大部分 (IP パケットの生成、受信したパケットのエミュレートされたソケットへのマッピングなど) を再実装する必要があるため、より困難になります。
一番使えるものはネットワーク名前空間(コンテナの構成要素の 1 つ) は、プログラムに完全に分離された一連のインターフェイスとルーティング テーブルを提供します。unshare
またはを使用してネットワーク名前空間を作成しip netns
、その中でプログラムを実行するのは簡単ですが、デフォルトでは切断されているため (openvpn クライアントはサーバーにアクセスできません)、veth などを使用して「メイン」名前空間にリンクする必要もあります。
この名前空間の設定はすべて、Docker/nspawn などの一部を再実装することになるので、OpenVPN クライアントと SSH クライアントを実行する Docker コンテナを起動するだけで済む可能性があります。
答え2
つまり、VPNは本質的に、ネットワークの第3層より上の層を認識しない。OSIモデルつまり、どのポートやプロトコルが使用されているかを確認できません。ファイアウォールの魔法を使って目的の効果を得ることも可能かもしれませんが、SSH を直接使用することをお勧めします。
関連するすべてのシステムとネットワークはあなたが所有し管理しているものと仮定します。SSHは適切に設定すれば非常に安全なプロトコルであり、インターネット上で使用してもopenvpnと同じくらい安全です。ガイドOpenSSH を「強化」するための方法があります。セキュリティに関するその他の推奨事項:
- サーバー ポートをわかりにくいものに変更します。これによって、実際には「セキュリティ」が強化されるわけではありませんが、失敗したログイン試行でログを大量に記録する Web スクレイピング ボットの数は減ります。私は数年前にこれを実行しましたが、それ以来、1 回の試行も見ていません。
- fail2banを調べてください。これは、ログイン試行を監視し、一定回数失敗した後に iptables にファイアウォール ルールを追加して IP アドレスによるサーバーへのアクセスを「禁止」する便利なソフトウェアです。素晴らしいソフトウェアです。
これを実行すると、openssh の ProxyJump 構成オプションを使用して、その接続を LAN 上の他の接続のトンネルとして使用できるようになります。
お役に立てれば!