私のサーバーはclientとしてVPNに接続する必要があります。 OpenVPNスクリプト(HMAから)を実行すると、ローカルマシンからSSHを介したサーバーへの接続が失われます。これ以上接続できなくなり、VPNプロセスを手動で強制終了する必要があります。また、その時点では非表示のTORサービス(.onionページ)は使用できません。
TORページが利用可能であり、サーバーがVPNに接続されている間にSSHで接続できることはどういうわけですか?
同様の問題があります。私のUbuntuデスクトップはVPN上にあり、通常のSSH接続はホームネットワークの外部からは機能しません。
でも、私が考えたことがあります。そのコンピューターにまだポートが転送されていますか?
VPNは、VPNサイトから新しいIPアドレスを割り当てるため、ルーターは接続先のIPアドレスを見つけることができなくなります。
接続するアドレスを知るには、VPNホストによって割り当てられた新しいIPアドレスを知る必要があると思います。
私は知識のある推測だけを提供し、既知の修正ではありません。動作しない場合は、私を悪用しないでください。 :)
さらに調査すると、VPNはポート80をリダイレクトし、SSHトンネルは通常ポート22を使用するため、VPN経由でポートを転送する必要があることを発見しました(VPN経由でポート22を転送する必要があると思います)ポート80でVPNに接続すると、SSHトンネルに必要な転送ポートにリダイレクトされます。パテ。
私はまだこれがそれを行う方法であることを100%確信していません。誰かがそれを確認できれば、それは素晴らしいことです。
問題は、デフォルトゲートウェイがOpenVPNによって変更され、それが非VPNインターフェースで着信する接続を切断することです。 Linuxは、VPNインターフェースから実際のインターフェースに着信したパケットに応答を送信します! OpenVPNを起動する前に、適切なルートを設定する必要があります。
続くものは私のために働く。 iptablesとip(iproute2)を使用します。以下では、OpenVPNが開始される前のデフォルトゲートウェイインターフェイスは「eth0」であると想定されています。これは、eth0への接続が確立されたときに、eth0がデフォルトゲートウェイインターフェイスでなくなった場合でも、その接続の応答パケットがeth0に再び戻るようにするという考え方です。
接続マーク、ファイアウォールマーク、およびルーティングテーブルに同じ番号を使用できます。明確な数字を使用して、それらの違いをより明確にしました。
# set "connection" mark of connection from eth0 when first packet of connection arrives
Sudo iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234
# set "firewall" mark for response packets in connection with our connection mark
Sudo iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321
# our routing table with eth0 as gateway interface
Sudo ip route add default dev eth0 table 3412
# route packets with our firewall mark using our routing table
Sudo ip rule add fwmark 4321 table 3412
===
更新:
上記はDebian Jessieでうまく機能します。しかし、古いWheezyシステムでは、ルーティングテーブルエントリに「経由」を追加する必要があることがわかりました。
# our routing table with eth0 as gateway interface
Sudo ip route add default dev eth0 via 12.345.67.89 table 3412
そこでは、「12.345.67.89」が元の非VPNゲートウェイでなければなりません。