もう少し検索した後、次のスレッドを見つけました:https://forum.linode.com/viewtopic.php?p=50114&sid=b440414422596bb7dbc96cf7c9ee511f#p50114
「ルートアップ」OpenVPN スクリプトを次のように変更したところ、ようやく機能するようになりました。他の厄介なルール (iptable PREROUTING、MASQUERADE など) はすべて削除しました。
これが私の最後の「ルートアップ」スクリプトです:
ip route flush table 100
ip route flush cache
ip rule add from x.x.x.x table 100
ip route add table 100 to y.y.y.y/y dev ethX
ip route add table 100 default via z.z.z.z
ここで、x.x.x.x はサーバーのパブリック IP、y.y.y.y/y はサーバーのパブリック IP アドレスのサブネット、ethX はサーバーのパブリック イーサネット インターフェイス、z.z.z.z はデフォルト ゲートウェイです。
これが他の人の助けになることを願っています。
私自身も同じ試練を経験した後、ルートアップ スクリプトに少なくとも 1 つの問題があることがわかりました。
iptables -t mangle -A PREROUTING ...
iptables -t mangle -A OUTPUT ...
理由についてはこちらをご覧ください:http://www.iptables.info/en/structure-of-iptables.html
IP 転送をオンにする必要はありませんでした。