web-dev-qa-db-ja.com

ポート22のSSHを除くすべてをVPN経由でルーティングする

サーバーがあり、すべてのトラフィックをルーティングするためにサーバーにVPNをセットアップしたいと考えています。

もちろん、OpenVPN接続を確立するときに自分自身をブロックしたくない(すでにそうしている!)ので、ポート22が影響を受けず、通常どおりアクセスできるようにします。

これは可能ですか?もしそうなら、これをどのように設定できますか?

5
b-m-f

SshパケットがvpnではなくサーバーのパブリックIP経由でルーティングされるように、サーバーにルーティングを追加する必要があります。これを行わないと、ssh返信パケットがopenvpn経由でルーティングされます。これが、openvpnクライアントセッションを開始した後、サーバーからロックアウトされる理由です。

あなたのサーバーを仮定しましょう:

  • パブリックIPはa.b.c.d
  • パブリックIPサブネットは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のフォーラムでこれについて最初に学んだことを思い出します-グーグルそれとあなたはこれに関する投稿を見つけることができるはずです。

11
hcb

VPSサーバーのパブリックIPが1.2.3.4で、VPNパブリックIPが5.6.7.8であると仮定します

ファイルを編集します/etc/ssh/sshd_configと行を追加します。

ListenAddress 1.2.3.4

したがって、SSHdはVPN接続の外部からアクセスできます。

0
deepred