サーバーがあり、すべてのトラフィックをルーティングするためにサーバーにVPNをセットアップしたいと考えています。
もちろん、OpenVPN接続を確立するときに自分自身をブロックしたくない(すでにそうしている!)ので、ポート22が影響を受けず、通常どおりアクセスできるようにします。
これは可能ですか?もしそうなら、これをどのように設定できますか?
SshパケットがvpnではなくサーバーのパブリックIP経由でルーティングされるように、サーバーにルーティングを追加する必要があります。これを行わないと、ssh返信パケットがopenvpn経由でルーティングされます。これが、openvpnクライアントセッションを開始した後、サーバーからロックアウトされる理由です。
あなたのサーバーを仮定しましょう:
a.b.c.d
a.b.c.0/24
x.x.x.1
eth0
はゲートウェイへのデバイスですiproute2
はここにあなたの友達です。以下をせよ:
ip rule add table 128 from a.b.c.d
ip route add table 128 to a.b.c.0/24 dev eth0
ip route add table 128 default via x.x.x.1
行う route -n
新しいルーティングテーブルが表示されることを確認します。サーバーを再起動すると、上記のコマンドは保持されません。それらをネットワークインターフェース設定ファイルに追加する必要があります。
次に、openvpnクライアント設定を実行しますopenvpn --config youropenvpn-configfile.ovpn &
また、パブリックIPへのトラフィックをsshとsshのみに制限する場合は、次のようにiptables
フィルタリングを追加する必要があります。
iptables -A INPUT -d a.b.c.d -p tcp --dport <*ssh port number*> -j ACCEPT
iptables -A INPUT -d a.b.c.d -j DROP
ps:私はLinodeのフォーラムでこれについて最初に学んだことを思い出します-グーグルそれとあなたはこれに関する投稿を見つけることができるはずです。
VPSサーバーのパブリックIPが1.2.3.4で、VPNパブリックIPが5.6.7.8であると仮定します
ファイルを編集します/etc/ssh/sshd_config
と行を追加します。
ListenAddress 1.2.3.4
したがって、SSHdはVPN接続の外部からアクセスできます。