すべてのトラフィックをルーティングするためにVPNを設定するサーバーがあります。
もちろん、OpenVPN接続を確立するときに自分自身を除外したくないので(すでにそうしました!)、ポート22が影響を受けずにいつものようにアクセスできることを願っています。
可能ですか?では、どのように設定しますか?
答え1
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フォーラムでこれについて初めて学んだことを覚えています。 Googleでこれに関する投稿を見つけることができます。
答え2
VPSサーバーのパブリックIPが1.2.3.4で、VPNパブリックIPが5.6.7.8であるとします。
ファイルを編集し/etc/ssh/sshd_config
て次の行を追加します。
ListenAddress 1.2.3.4
したがって、VPN接続の外部からSSHdにアクセスできます。