説明されている同じ問題 VPNクライアントを使用したポート転送 に遭遇しましたが、失敗しました。
OpenVPNアクセスサーバーバージョン2.5と、サイト間ルーティングで構成されたクライアントがあります。クライアントとサーバーはどちらも、プライベートIPアドレスを使用して相互に通信できます。クライアントには、ポート8081でリッスンするApacheサーバーがあります。
目標は、OpenVPNサーバーのパブリックIPに接続し、接続をクライアントに転送して、ユーザーが背後のApacheサーバーにアクセスできるようにすることです。
私の現在のセットアップは:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -d 50.xxx.xxx.xxx -p tcp --dport 8081 -j DNAT --to-dest 192.168.2.86:8081
iptables -t nat -A POSTROUTING -d 192.168.2.86 -p tcp --dport 8081 -j SNAT --to-source 10.0.2.42
私が間違ってやっている簡単なことはありますか?ありがとうございました。
この問題は、iptablesルールに関連していました。次のルールを追加すると、すべてが期待どおりに機能します。
iptables -t nat -I PREROUTING 1 -d {SERVER_LOCAL_IP_ADDRESS} -p tcp --dport {CLIENT_PORT} -j DNAT --to-dest {CLIENT_LOCAL_IP_ADDRESS}:{CLIENT_PORT}
iptables -t nat -I POSTROUTING 1 -d {CLIENT_LOCAL_IP_ADDRESS} -p tcp --dport {CLIENT_PORT} -j SNAT --to-source {VPN_GATEWAY_IP}
iptables -I FORWARD 1 -d {CLIENT_LOCAL_IP_ADDRESS} -p tcp --dport {CLIENT_PORT} -j ACCEPT
SNATがDNATの異なるポート番号と一致し、図がこのように機能するため、OpenVPNクライアントがOpenVPNサーバー経由でインターネットに戻るルーターとして機能する場合にのみ機能します。
32400を8081に置き換える必要があります。