Debian で IPtables を使用して OpenVPN トンネルのポートを LAN に転送する

Debian で IPtables を使用して OpenVPN トンネルのポートを LAN に転送する

2 台の Debian 9 x64 マシンを OpenVPN で接続しています。

Server
(ens3 public-ip x.x.x.222)
tun0 10.8.0.1
-> Services:
   * Samba - udp137, udp138, tcp139, tcp445
   * Webserver - tcp80

Client
ens33 192.168.162.157
tun0 10.8.0.6

だから私はフォワードSamba と Web サーバークライアントLAN-IP192.168.162.157192.168.162.x 内の他の LAN クライアントがこのサービスにアクセスできるようにします。

インターネットで見つけたすべての情報を使用して、クライアント上の iptables で NAT ルールを定義しようとしましたが、成功しませんでした。

sysctl -w net.ipv4.ip_forward=1

iptables -t nat -A PREROUTING -i ens33 -p udp --dport 137 -j DNAT --to 10.8.0.1:137
iptables -t nat -A PREROUTING -i ens33 -p udp --dport 138 -j DNAT --to 10.8.0.1:138
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 139 -j DNAT --to 10.8.0.1:139
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 445 -j DNAT --to 10.8.0.1:445

iptables -A FORWARD -i ens33 -p udp --dport 137 -d 10.8.0.1 -j ACCEPT
iptables -A FORWARD -i ens33 -p udp --dport 138 -d 10.8.0.1 -j ACCEPT
iptables -A FORWARD -i ens33 -p tcp --dport 139 -d 10.8.0.1 -j ACCEPT
iptables -A FORWARD -i ens33 -p tcp --dport 445 -d 10.8.0.1 -j ACCEPT

iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to 10.8.0.1:80
iptables -A FORWARD -i ens33 -p udp --dport 80 -d 10.8.0.1 -j ACCEPT

クライアントで直接 10.8.0.1 に接続すると、Web サーバーと Samba の両方に到達できますが、192.168.162.157 経由の LAN では到達できません。

誰かiptablesについて手伝ってくれませんか? :)

答え1

問題はおそらく帰り道です。

サーバーは、VPN クライアントを介してパケットをクライアント サブネットにルーティングすることを認識していますか? 認識していない場合は、SNAT/マスカレードも必要になります (または、サーバー上の一致するルーティング エントリ)。

そうすると、サーバーでは、パケットは VPN クライアントから発信され、戻ってくることになります。

関連情報