I wanted to share that my UPnP works with the original firmware on my TP-Link Archer C6 v3, even though I am behind a CGNAT from my ISP. However, I can't get it to work on OpenWrt. Can anyone help me out? I'll share my current configuration below.
Are you certain that you are behind CG-NAT in general?
CG-NAT (assuming no special provisions/allowances from the ISP) will not allow you to have any inbound ports from the internet due to the fact that you share one or many public IP addresses with many subscribers (often it is a pool of many, but it is not a 1:1 subscriber:publicIP arrangement). Therefore, unpn should not have worked ever, regardless if you were using the original firmware or now OpenWrt?
How did you determine that:
you're behind CG-NAT
that were behind CG-NAT with the original firmware
that upnp was actually working while behind CG-NAT (with the original firmware).
For starters, though, let's see the first two octets of your current wan IP address (in bold: aaa.bbb.ccc.ddd) from this command: ifstatus wan | grep address.
Is it possible that you were issued a true public IP when you were using the previous firmware (this change could happen if the MAC address the router uses on its wan is different based on the firmware in use)?
Alternatively, could your result previously have been IPv6 based?
but how could I have received a public address in the original Tp-link firmware, that wouldn't make sense, what would be the solution for this, should I get the tp-link mac and put it here in openwrt? Could you please give me more details.
If the MAC address presented to the ISP was different when it was running the vendor firmware, that could possibly explain it.
(that said, I've never used PPPoE and I might be wrong here -- with DHCP this is certainly a thing, but maybe not PPPoE).
How did you determine that upnp was working previously? And for that matter, what address did you use as your public address such that you could access your internally hosted services?
I don't know what the original firmware looks like...
But importantly, how did you know that upnp was working? What was the method you used to test previously? Or what services were you hosting that used upnp for inbound connections?
When I activate upnp, I checked in call of duty, my nat was open, and in the original tp link firmware it displays the log of the open port, I only need upnp to open game ports.
I know I can forward port 3074 manually in Port Forwards, and I’ve done this several times on OpenWrt. When I do, my NAT type becomes open instead of moderate, which allows me to find matches faster. However, I really want UPnP to work on OpenWrt.
Two weeks ago, my ISP gave me a public IP for testing, and the UPnP on OpenWrt worked perfectly. But when they reverted to CGNAT, it stopped working again.
As I stated previously, upnp doesn't work with CG-NAT. This is not an issue with OpenWrt. To be clear, upnp can be up and running and doing its thing, it will just have no effect because there is no inbound path from the internet > ISP > you (it's the ISP that is the limiting factor here).
This is my point, exactly... you need a public IP if you want this capability. This is not within your control if you have a CG-NAT. It doesn't matter what firmware you are running, this will always be true.
As an aside... upnp is actually not recommended because it actually creates potential security vulnerabilities in your network. This is because it operates silently without user/admin interaction/knowledge/notification. Although irrelevant in the case of CG-NAT, in general the recommendation is to manually configure port forwards so that you (as the administrator) know exactly what ports have been opened and for what purpose.