私は他の VPS プロバイダーに OpenVPN をインストールしましたが、Google を試してみたかったのです。Google の価格とパフォーマンスが気に入っています。特に、毎回ログインしなくても携帯電話からマシンを起動できるのが気に入っています。
クライアントは接続できるものの、インターネットに接続できない状態になっています。
OpenVPN ポートへのファイアウォールを開きました。
仮想マシンで IP 転送を有効にしました。
接続すると、クライアントは IP、ゲートウェイ、DNS など、必要な情報をすべて取得します。
パケットが OpenVPN インスタンスから世界に届くようにするには、ルーターやルートを構築する必要があると思います。ドキュメントをよく読みましたが、行き詰まっています。私はまだネットワークの専門家ではなく、今も学びながら進んでいます。読んでいくうちに、ネットワークを「レガシー」構造と呼ばれるものに変換できるようですが、この課題を克服して何が起こっているかを理解できるようにしたいと思います。これは、ファイアウォールの背後にある 1 つのネットワーク (つまりレガシー) と比較して、ネットワークが多くの異なるサブネットに分割されているためだと思います。
頭の中でマップを見ると、OpenVPN はデータをサブネットのゲートウェイに送信していますが、そこからパケットがドロップされると思います。サブネット ゲートウェイからインターネットへのルートが必要なのでしょうか? または、サブネットとインターネットの間に完全なルーターが必要なのでしょうか?
前述したように、私は以前 OpenVPN 仮想マシンを使用したことがありますが、問題はありませんでした。そのため、問題は Google Cloud ネットワークの構成にあると確信しています。
ヒントがあればよろしくお願いします。
答え1
これによって問題は解決しました:
iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
なぜそうしなければならなかったのかまだよくわかりませんが、おそらく Google の Debian イメージは標準の Diebian インスタンスよりもロックダウンされているのでしょう。
その他の Google Cloud ネットワークの変更は必要ありませんでした。
答え2
いくつかのことをチェックする必要があります。
/etc/sysctl.confに次のディレクティブがあるかどうかを確認します。
net.ipv4.ip_forward = 1
ファイアウォールがVPNインターフェース上のクライアントから受信したトラフィックを転送していることを確認します。
#OpenVPN interface=tun0 iptables -A FORWARD -i tun0 -j ACCEPT
送信トラフィックをマスカレードしていることを確認してください
#WAN Interface on OpenVPN server is eth1 iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE