Works fine for me (but I've disabled local firewall on the PC, otherwise it blocks external traffic):
Code:
[root@wl500g root]$ iptables -vnL -t nat
Chain PREROUTING (policy ACCEPT 431 packets, 31992 bytes)
pkts bytes target prot opt in out source destination
3 180 DNAT tcp -- ppp0 * 0.0.0.0/0 0.0.0.0/0
tcp dpt:443 to:192.168.1.4:3389
Chain POSTROUTING (policy ACCEPT 4097 packets, 246K bytes)
pkts bytes target prot opt in out source destination
314 18385 MASQUERADE all -- * ppp0 0.0.0.0/0 0.0.0.0/0
84 16982 MASQUERADE all -- * br0 192.168.1.0/24 192.168.1.0
/24
Chain OUTPUT (policy ACCEPT 4206 packets, 264K bytes)
pkts bytes target prot opt in out source destination
[root@wl500g root]$ iptables -vnL FORWARD
Chain FORWARD (policy ACCEPT 16612 packets, 11M bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
state INVALID
0 0 ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0
557 32224 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0
tcp flags:0x06/0x02 tcpmss match 1453:65535TCPMSS set 1452
223 12744 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0
tcp flags:0x16/0x02 limit: avg 1/sec burst 5
73 2920 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0
tcp flags:0x17/0x04 limit: avg 1/sec burst 5
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
limit: avg 1/sec burst 5 icmp type 8
2 112 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.4
tcp dpt:3389
Also, looks like ACCEPT in the FORWARD chain is not needed at all.