Plenty of ISPs don't offer IPv6 (sadly).deploy ipv6 and free of headache
PS4/PC Games like MONSTER HUNTER: WORLD not support IPv6deploy ipv6 and free of headache
Yes. Good Idea. Sell everything and move to another town or city where there is more than one ISP available. Or maybe even another country.Then you as a customer, together with other customers, should say "no" and demand IPv6, or you'll go elsewhere. The tricky part is how to increase your numbers above around five people. And then there's the tough decision, if you're really prepared to live without internet, when ISP also says "no".
Don't get me wrong, I actually like IPv6, but...
The issue is a lot of ISPs don't NEED IPv6 and it provides no real advantage for an average customer. If an ISP offers a cheap fiber and subsells its resources to other smaller ISPs you have no choice really...Then you as a customer, together with other customers, should say "no" and demand IPv6, or you'll go elsewhere.
then I think it's clear that I'm aware how frustrating current state of things is. If not, then I'm stating it explicitly, it's very bad.The tricky part is how to increase your numbers above around five people. And then there's the tough decision, if you're really prepared to live without internet, when ISP also says "no".
I don't think so. If you want "one button" solution then buy other SOHO brands....
More and more home routers are starting to support Full Cone NAT, and users only need to turn on this option to solve the online gaming problem. I think RouterOS should also follow this....
So "one button" should open the security Pandora's box?Some games need Full Cone NAT because your online gaming is not through a server, but is peer-to-peer.
Off course we are, We the ISP, buy the Mikrotik gear precisely BECAUSE it fixes the ISP issues, like:It looks a lot like you are tasking MikroTIk with solving problems that actually are the problem of your game and/or the ISP.
I guess that will not fly.
But at least you can give every customer IPv6.we cannot fix the game
cannot fix the customer's internal network
cannot force them to only buy good gear properly configured by us
Lack of PCP support breaks Upnp at the CGN level.Any modern competitive game uses client-server approach, for others mostly uPnp is enough, so it is only some edge cases that would benefit from cone NAT.
Well we do!But at least you can give every customer IPv6.
100% Agreed on principleWhen games want to have peer-to-peer communication between devices, they should support IPv6.
Even when MikroTik would support the required NAT, part of the customers would be out of luck because they are behind another NAT layer (at the ISP).
In 99% of all Home-Users, they have only one public IP. So thats what the basic SNAT/Masquerade-Rule does.A full-cone is one where all packets from the same internal IP address are mapped to the same NAT IP address. This type of address translation is also known as One-to-One.
I understand this that way, if you request the public IP (from any public IP) with any random port (high-port?), it will gets DNATed to the specified internal IP.Additionally, external hosts can send packets to the internal host, by sending packets to the mapped NAT IP address.
Even when MikroTik would support the required NAT, part of the customers would be out of luck because they are behind another NAT layer (at the ISP).
Fortunately I live in the developed part of the world, where everyone has (or can get, if they enable it) IPv6, and it works without issue.I am not supporting or poo pooing the idea of full cone nat, but I do challenge the so called experts to stop with ipv6 BS, and provide a config approach that will work withe RoS.
It is time that the ISPs that are still in the dark ages get their act together.
So full cone-nat = slow ass speeds and poor security ???
So full cone config on MT is:Full Cone: A full cone NAT is one where all requests from the
same internal IP address and port are mapped to the same external
IP address and port. Furthermore, any external host can send a
packet to the internal host, by sending a packet to the mapped
external address.
/ip firewall nat
add chain=srcnat out-interface=wan action=src-nat to-address=wan_ip
add chain=dstnat in-interface=wan action=dst-nat to-address=local_ip
The idea of full cone NAT is that a device can send a packet to a server with some source port number, and then ANYONE with knowledge of that source port number as it arrived at the server can reach that same client on that same portnumber.So full cone-nat = slow ass speeds and poor security ???
Well, not really. It all comes down to how you configure your firewall (ie connection tracking is still valid) and in terms of speed it all depends on the implementation. Most consumer products are not as flexible as RoS, thus in some cases there might be som security gaps in their semi-automatic management of the firewall if changes are made to the nat settings.
Full cone is just a basic src and dst nat that does not restrict anything and achievable by two rules provided earlier.Restricted Cone: A restricted cone NAT is one where all requests
from the same internal IP address and port are mapped to the same
external IP address and port. Unlike a full cone NAT, an external
host (with IP address X) can send a packet to the internal host
only if the internal host had previously sent a packet to IP
address X.
So by definition, given this NAT table:The idea of full cone NAT is that a device can send a packet to a server with some source port number, and then ANYONE with knowledge of that source port number as it arrived at the server can reach that same client on that same portnumber.
Well, not really. It all comes down to how you configure your firewall (ie connection tracking is still valid) and in terms of speed it all depends on the implementation. Most consumer products are not as flexible as RoS, thus in some cases there might be som security gaps in their semi-automatic management of the firewall if changes are made to the nat settings.
IPV4 TCP 192.168.70.5:45596 188.x.x.163:443
IPV4 TCP 192.168.70.5:46222 185.x.x.153:443
IPV4 TCP 192.168.70.122:35542 63.x.x.172:443
IPV4 TCP 192.168.70.122:35868 213.x.x.164:443
IPV4 TCP 192.168.70.122:40152 54.x.x.132:443
IPV4 TCP 192.168.70.122:40750 54.x.x.170:443
IPV4 TCP 192.168.70.122:41408 52.x.x.118:443
IPV4 TCP 192.168.70.122:53382 54.x.x.93:443
IPV4 TCP 192.168.70.122:53542 82.x.x.205:443
IPV4 TCP 192.168.70.122:53696 35.x.x.102:443
IPV4 TCP 192.168.70.140:41402 139.x.x.24:5094
IPV4 TCP 192.168.70.140:49126 142.x.x.188:5228
IPV4 TCP 192.168.70.140:51256 80.x.x.132:5223
IPV4 TCP 192.168.70.155:37450 34.x.x.49:443
IPV4 TCP 192.168.70.155:38418 3.x.x.174:5222
IPV4 TCP 192.168.70.155:45968 173.x.x.188:5228
IPV4 TCP 192.168.70.155:48724 54.x.x.17:443
IPV4 TCP 192.168.70.155:57452 149.x.x.91:5222
IPV4 TCP 192.168.70.181:38288 35.x.x.252:6179
IPV4 TCP 192.168.70.181:58246 142.x.x.227:80
IPV4 TCP 192.168.70.181:58756 173.x.x.188:5228
IPV4 TCP 192.168.70.183:10101 79.x.x.200:31337
IPV4 TCP 192.168.70.183:10103 79.x.x.200:31337
IPV4 TCP 192.168.70.183:10106 79.x.x.200:31337
IPV4 TCP 192.168.70.183:10124 79.x.x.200:31337
IPV4 TCP 192.168.70.183:54147 20.x.x.85:443
IPV4 TCP 192.168.70.183:62352 140.x.x.26:443
IPV4 TCP 192.168.70.183:62360 54.x.x.153:443
IPV4 TCP 192.168.70.183:62370 140.x.x.3:443
IPV4 TCP 192.168.70.184:36542 18.x.x.119:443
IPV4 UDP 192.168.70.5:55826 93.x.x.19:123
IPV4 UDP 192.168.70.108:54321 52.x.x.77:8053
IPV4 UDP 192.168.70.155:33530 82.x.x.212:4500
TCP wan_ip:10101 > 192.168.70.183:10101
TCP wan_ip:10103 > 192.168.70.183:10103
TCP wan_ip:10106 > 192.168.70.183:10106
TCP wan_ip:10124 > 192.168.70.183:10124
TCP wan_ip:35542 > 192.168.70.122:35542
TCP wan_ip:35868 > 192.168.70.122:35868
TCP wan_ip:36542 > 192.168.70.184:36542
TCP wan_ip:37450 > 192.168.70.155:37450
TCP wan_ip:38288 > 192.168.70.181:38288
TCP wan_ip:38418 > 192.168.70.155:38418
TCP wan_ip:40152 > 192.168.70.122:40152
TCP wan_ip:40750 > 192.168.70.122:40750
TCP wan_ip:41402 > 192.168.70.140:41402
TCP wan_ip:41408 > 192.168.70.122:41408
TCP wan_ip:45596 > 192.168.70.5:45596
TCP wan_ip:45968 > 192.168.70.155:45968
TCP wan_ip:46222 > 192.168.70.5:46222
TCP wan_ip:48724 > 192.168.70.155:48724
TCP wan_ip:49126 > 192.168.70.140:49126
TCP wan_ip:51256 > 192.168.70.140:51256
TCP wan_ip:53382 > 192.168.70.122:53382
TCP wan_ip:53542 > 192.168.70.122:53542
TCP wan_ip:53696 > 192.168.70.122:53696
TCP wan_ip:54147 > 192.168.70.183:54147
TCP wan_ip:57452 > 192.168.70.155:57452
TCP wan_ip:58246 > 192.168.70.181:58246
TCP wan_ip:58756 > 192.168.70.181:58756
TCP wan_ip:62352 > 192.168.70.183:62352
TCP wan_ip:62360 > 192.168.70.183:62360
TCP wan_ip:62370 > 192.168.70.183:62370
UDP wan_ip:33530 > 192.168.70.155:33530
UDP wan_ip:54321 > 192.168.70.108:54321
UDP wan_ip:55826 > 192.168.70.5:55826
Your two rules implement more than what a "full cone NAT" would do. What you describe is called "DMZ host" in consumer routers.Full cone is just a basic src and dst nat that does not restrict anything and achievable by two rules provided earlier.
Sure you run out of ports... but that is a common problem with every NAT solution.I'm gonna run out of ports fast (well, unlikely for a home user, but the CG-NAT scenarios posted above ¯\_(ツ)_/¯). What happens when there are two clients using the same src port? who wins? first come, first served?
And this is a pretty "quiet" router regarding the number of clients behind it.
Or I misunderstood it?
And this will create a whole lot of holes in my network, for what?
The question I've asked above remains, aren't the services/games that rely on "Full Cone NAT" meant to have some functionality to open random ports via UPnP or similar when needed instead of me butchering the NAT table opening ports that the app might not even need?[...]
Regarding security concerns, Fullcone NAT now comes with a device list feature, similar to a DMZ list. This means that only devices on the list will be subjected to Fullcone NAT. Of course, if there is malicious software on your computer, it will increase security risks. However, this is no different from the security risks of UPnP and is considered a disclaimer.
My English might be rusty but I wrote no such thing.
What do you mean? Are you talking about the implementation on some other NAT router here?Regarding security concerns, Fullcone NAT now comes with a device list feature, similar to a DMZ list. This means that only devices on the list will be subjected to Fullcone NAT.
@Larsa - Fair point!As for the other suspects, well show me the real problem! ;- )
Well, here there are no such additional restrictions or fees, nearly everyone gets a static address on home internet connections and ports like 80 or 443 are open, there are only some ISPs who block ports that are or have been widely abused (123, 135-139, 161, 3306 for example).Furthermore, all ports can be accessed from the outside except for specific ports that are forbidden by the ISP, such as TCP ports 80/443,
unless you apply for a fixed IP address and pay the required fees.
Why did you do that??? RouterOS is not targeted towards gamers, they would probably be better off with their standard ISP router which supports your "full cone NAT" feature.Many people around me use this type of internet access, including gaming friends.
Most of them have switched their DSL modem router from router mode to bridge mode after my persuasion and have adopted RouterOS as their router.
rofl, stroke of genius right there."Don't connect MikroTik's AP to MikroTik's RouterOS if you don't want your AP's performance to deteriorate."
Not me, too old for such things LOL, I think its hockey or something........ I have a public IP yes...........
Somehow the text above screams at me WRONG.[...]when I help them configure their routers, I prefer to disable insecure options by default (like UPnP, or WPS) so I'm not the one to blame when they get hacked.
So the "full cone NAT" option would be a nice middle ground (easy to enable with no special configuration unlike port forwarding, and less insecure than UPnP).
[...] another benefit could be reduced size of conntack table - instead of many (src-address, dst-address, reply-src-address, reply-dst-address) entries, just one (src-address, ANY, ANY, reply-dst-address) for one local UDP socket (IP:port) talking to many remote ones.[...]
No, that is not correct.Full cone nat is just a fancy name for 1:1 nat or static nat or whatever you want to call it. It is achievable in ROS by adding one srcnat and one dstnat rule, thats it.
Obviously I have nothing to say in the matter (I dislike gaming but that's a personal choice) but this sounds like a very VERY bad idea ... simply an accident waiting to happen.1. that 1:1 mapping is not called "full cone NAT", it is called "DMZ host". that is a different thing, maybe you want to put a config item for it in Quick Set (additional to the port mapping button).
If we look at RFC 3489 in section: 5. Variations, the Full Cone NAT means that the private IP and port of an internal host are always mapped or translated to the same public IP and port when going to internet, this means that from this point of view, this internal host is reachable from internet using its own public IP and Port. In vendor’s language, this type of NAT behavior is called Static NAT.
From, let’s say Cisco vendor a Static NAT allows the mapping of public IP Addresses to hosts inside the internal network. In simple english, this means you can have a computer or a server on your private network that exists on the Internet with its own real IP. It is one-to-one mapping of a private IP address to a public IP address, or private IP/Port to a public IP/Port.
So we can conclude that the Full Cone NAT is defintely a Static NAT people traditionally used with many vendors.
NO NO NO that is not true! You misunderstand the matter.Which means It is not supposed to work with more than one host behind NAT, because it is literally a 1:1 mapping.
Read the RFC again slowly.NO NO NO that is not true! You misunderstand the matter.Which means It is not supposed to work with more than one host behind NAT, because it is literally a 1:1 mapping.
[...]
Agree.[...]
You wrote lawn mower wrong.[...] but as an MT homeowner [...]
At least one other vendor already uses the Full Cone / Restricted Cone / Port Restricted Cone / Symmetric NAT terms.We can implement it and maybe call it "tetrahedron nat" to avoid confusion.
You kinda shot yourself in the foot with those links.here is fullcone NAT from cisco and juniper
https://www.cisco.com/c/en/us/support/d ... er-co.html
https://www.juniper.net/documentation/s ... guring.pdf
From that cisco manual:
Cisco IOS® routers' NAT implementation when it performs PAT is symmetric by default. Therefore, you are expected to see UDP connection issues with these routers that perform NAT.
However, the Cisco IOS-XE routers' NAT implementation when it performs PAT is not symmetric. When you send two different streams with the same source IP and port but to different destinations, the source gets NATED to the same inside global IP and port.
As per RCFC 4787: With Endpoint-Independent Mapping (EIM), the NAT reuses the port mapping for subsequent packets sent from the same internal IP address and port (X:x) to any external IP address and port.
From a client, when the endhost runs the commands nc -p 23456 10.0.0.4 40000 and nc -p 23456 10.0.0.5 50000, on two different terminal windows, here are the results of the NAT translations if you use EIM:
Pro Inside global Inside local Outside local Outside global
tcp 10.0.0.1:23456 192.168.0.2:23456 10.0.0.4:40000 10.0.0.4:40000
tcp 10.0.0.1:23456 192.168.0.2:23456 10.0.0.5:50000 10.0.0.5:50000
Here you can see that different traffic flows that have the same source address and port get translated to the same address/port regardless of the destination port/address.
as you can see RouterOS also maps to the same inside global ip and port for all streams.[test@MikroTik] /ip firewall connection> print detail interval=2 where dst-address="1.1.1.1:11111" || dst-address="2.2.2.2:21111"
Flags: E - expected, S - seen-reply, A - assured, C - confirmed, D - dying, F - fasttrack, s - srcnat, d - dstnat
1 C s protocol=tcp src-address=192.168.88.115:12345 dst-address=1.1.1.1:11111 reply-src-address=1.1.1.1:11111
reply-dst-address=x.x.x.x:12345 tcp-state=syn-sent timeout=0s orig-packets=3 orig-bytes=192 orig-fasttrack-packets=0
orig-fasttrack-bytes=0 repl-packets=0 repl-bytes=0 repl-fasttrack-packets=0 repl-fasttrack-bytes=0 orig-rate=0bps repl-rate=0bps
2 C s protocol=tcp src-address=192.168.88.115:12345 dst-address=2.2.2.2:21111 reply-src-address=2.2.2.2:21111
reply-dst-address=x.x.x.x:12345 tcp-state=syn-sent timeout=3s orig-packets=2 orig-bytes=128 orig-fasttrack-packets=0
orig-fasttrack-bytes=0 repl-packets=0 repl-bytes=0 repl-fasttrack-packets=0 repl-fasttrack-bytes=0 orig-rate=0bps repl-rate=0bps
Yes. But now when 3.3.3.3 tries to connect to x.x.x.x:12345, will it reach 192.168.88.115:12345? No, because RouterOS will correctly see it as new unsolicited connection. But this <whatever_it_would_be_called> NAT would allow it.as you can see RouterOS also maps to the same inside global ip and port for all streams.
¡Bonjour!You are most welcome!
Yeah I think Mikrotik skips the RFCs that have "Apple Inc." somewhere at the top. Just ask the 50K readers of mDNS thread.Apple introduced NAT-PMP in 2005 by as part of the Bonjour specification,
rfc3489 only describes some nat types (variations?), and it does not cover the automatic dstnat rule creation some of you keep mentioning here.Technically not a standard, but RFC 3489 was mentioned[...]
[...]There are various other ways around it, but they are either a bigger security risk (UPnP) [...]
No need for any "automatic dstnat rule" creation if NAT code is modified to add a single entry to the connection table (map internal ip1:port1 <-> public ip2:port2 for any remote ip:port), then any packets reaching public ip2:port2 from outside will find their way to internal ip1:port1 and just refresh the timer to keep the mapping alive, without creating any new one.rfc3489 only describes some nat types (variations?), and it does not cover the automatic dstnat rule creation some of you keep mentioning here.
also rfc3489 was obsoleted by rfc5389 which in turn was obsoleted by rfc8489, which .. guess what, has no mention of such a thing.
Anything from the last decade that you can mention?
Also are you seriously considering UPnP/NAT-PMP/PCP a "bigger security risk" which only opens ports if an app wants/needs to open a port VS blindly opening ALL the ports that an app uses? IN WHAT WORLD is the "bigger security risk" in the first option?
But bruh, that's called a dst-nat rule, I mean, that's exactly what it does, here, we have a manual for it:No need for any "automatic dstnat rule" creation if NAT code is modified to add a single entry to the connection table (map internal ip1:port1 <-> public ip2:port2 for any remote ip:port), then any packets reaching public ip2:port2 from outside will find their way to internal ip1:port1 and just refresh the timer to keep the mapping alive, without creating any new one.
Then why have you chosen MikroTik? There are dozens of brands of typical home routers that fit that bill perfectly.As a small ISP (one person business for a few hundreds of customers) I'm just trying to find some middle ground to give people reasonably secured routers that don't cost me hours of support calls to configure properly, and also don't break their games (some of which want direct p2p communication with other users).
/ip firewall nat
add chain=srcnat src-address-list=consoles protocol=udp out-interface=WAN action=tetrahedronnat to-ports=60000-65000 comment="Gaming consoles in LAN"
add chain=srcnat protocol=udp out-interface=WAN action=masquerade to-ports=20000-59999 comment="everything else"
add chain=dstnat in-interface=WAN protocol=udp dst-port=60000-65000 action=tetrahedronnat
What did I do? I'm just explaining and discussing interesting technical thing. Because it's just that, interesting. I'm not saying that MikroTik should drop everything else and add this, not even necessarily add it at all. I even wrote it explicitly. English is not my native language, so it's possible that it could be expressed better, but I still think it was clear. Should I get some lawyer-approved disclaimer and stick it to every post? And it's not like anyone from MikroTik listens to me, I'm just random nobody, so if they happen to add this, it won't be because of me. And in case they would, I would blame myself so much for not using my talent to get something more useful.But why!? (@Sob!) Just because you can or is fun to have?? Bring us the real problem!
Sob: Should I get some lawyer-approved disclaimer and stick it to every post?
Amm0: In other words, what's going to make the Xbox, etc happy with a Mikrotik?
In the case of "tetrahedron-nat", the client doesn't really get confirmation and may expect that per one of these protocol. ICE/STUN can deduce the decision, but they can already do that with masquerade (and any ALG turned off).Automatic stuff, if it means that mapping created by outgoing connection also serves for new independent incoming connections, comes from this NAT type itself and doesn't need anything else.
There is no need for innovation in IPv4 NAT'ing.
As I wrote before, you do not understand it. What I wrote describes what is in RFC 3489 as well. You probably think "maps to the same address and port" means that the internal and external ports have to be the SAME, but it does not. It means that the translated port number does not depend on the external address, but only in the internal address.But that is what I am trying to say, what you describe does not match the definition of "full cone nat" in RFC 3489. It is something else.
Just because someone included there some NAT Variations with fancy names 20 years ago with short, interpretable descriptions, these are not the subject of that rfc.STUN - Simple Traversal of User Datagram Protocol (UDP)
Through Network Address Translators (NATs)
Simple Traversal of User Datagram Protocol (UDP) Through Network
Address Translators (NATs) (STUN) is a lightweight protocol that
allows applications to discover the presence and types of NATs and
firewalls between them and the public Internet. It also provides the
ability for applications to determine the public Internet Protocol
(IP) addresses allocated to them by the NAT. STUN works with many
existing NATs, and does not require any special behavior from them.
As a result, it allows a wide variety of applications to work through
existing NAT infrastructure.
So we're doing this in the weekend too then, ok.
Some people have to go to work on some times at weekdays and cannot reply immediately.So we're doing this in the weekend too then, ok.
rfc3489 is this:
Apparently @mrz thinks that this means that there must be a 1:1 mapping between internal and external address.5. NAT Variations
It is assumed that the reader is familiar with NATs. It has been
observed that NAT treatment of UDP varies among implementations. The
four treatments observed in implementations are:
Full Cone: A full cone NAT is one where all requests from the
same internal IP address and port are mapped to the same external
IP address and port. Furthermore, any external host can send a
packet to the internal host, by sending a packet to the mapped
external address.
[edit services]
nat {
pool static_nat_range {
address-range low 10.200.253.1 high 10.200.253.5;
}
rule static_nat_rule {
term sample-term {
nat-type full-cone;
from {
source-address-range {
low 10.100.136.1 high 10.100.136.5;
}
}
then {
translated {
source-pool static_nat_range;
translation-type {
source static;
}
}
}
}
}
}
If we look at RFC 3489 in section: 5. Variations, the Full Cone NAT means that the private IP and port of an internal host are always mapped or translated to the same public IP and port when going to internet, this means that from this point of view, this internal host is reachable from internet using its own public IP and Port. In vendor’s language, this type of NAT behavior is called Static NAT.
From, let’s say Cisco vendor a Static NAT allows the mapping of public IP Addresses to hosts inside the internal network. In simple english, this means you can have a computer or a server on your private network that exists on the Internet with its own real IP. It is one-to-one mapping of a private IP address to a public IP address, or private IP/Port to a public IP/Port.
So we can conclude that the Full Cone NAT is defintely a Static NAT people traditionally used with many vendors.
RFC 3489 has been obsoleted by RFC 5389 where it is stated in Section 2 :
"Furthermore, classic STUN's algorithm for classification of NAT types was found to be faulty, as many NATs did not fit cleanly into the types defined there."
You seem oddly confused about these terms.For Symmetric NAT, RFC 3489 explains this kind of NAT as follow: internal host’s IP/Port are translated to different public/port when going to different destination on the internet. And it add an interesting sentence: only the external host that receives a packet can send packet back to the internal host, this means that this internal host is not reachable directly from internet like the Full Cone NAT but after initiating a traffic then the response is sent back to this host.
To conclude Symmetric NAT is another term of PAT from Cisco's perspective and Full Cone NAT is equal to Static NAT from Cisco's perspective.
I am not that interested in Cisco (or Juniper) links. We are talking about home routers here, right?Oh, no. Symmetric NAT is explained right below what I've quoted previously from the same Cisco link.
Invented by cisco, right. But wasn't the marketing folks. cisco bought dozens of home routers as part of the work that went into development the STUN protocol, in the context of SIP standardization. Needing to classify the ways home router did NAT into a few simple categories, in circa 2000 – since many were problematic for SIP at the time. So the much discussed NAT modes in RFC3489 were used to describe the situations in which STUN protocol was designed to operate, that's it. It certainly wasn't an endorsement of them, rather a response to way NAT schemes that were already implemented.I should note, these dumb terms were invented by Cisco, so that back in the early 2000s they could sell their firewall appliances where NAT is marketed as a security tool.
You don't need UPnP/Manual port forwarding. If you have at least a /32 IPv4 public IP, netmap the RFC1918 range to that IP. STUN will take care of the rest. For video calls, WebRTC+ICE will take care of it.The so what? Does this mean for consoles to work as expected (including voice), all one needs is.........???
- nothing Ros 7.7 fixes all issues
- upnp only
- port forwarding only
- something else on RoS
- some combo of the above
- throw console in garbage ( and gamers have to get a life )
I’m aware of the history and well aware of PCP. But most Telcos and transits have moved to IPv6. Not even AT&T uses PCP. I worked with a few Telcos and none of them gave a damn about PCP.Invented by cisco, right. But wasn't the marketing folks. cisco bought dozens of home routers as part of the work that went into development the STUN protocol, in the context of SIP standardization. Needing to classify the ways home router did NAT into a few simple categories, in circa 2000 – since many were problematic for SIP at the time. So the much discussed NAT modes in RFC3489 were used to describe the situations in which STUN protocol was designed to operate, that's it. It certainly wasn't an endorsement of them, rather a response to way NAT schemes that were already implemented.I should note, these dumb terms were invented by Cisco, so that back in the early 2000s they could sell their firewall appliances where NAT is marketed as a security tool.
The underlying problem being of how to get a SIP phone to ring, when path to a PBX went through some 1999-era home router. Even in ~2000, conntrack still had timeouts. And perhaps like some games, SIP (at its core) really wants to use its own port.
Most consumer stuff (and IP NVR too) latched on UPnP as an alternative to STUN. Mikrotik supports that. And imagine a lot Steam games, which got us here, use it & favored by Windows. Apple went with NAT-PMP route, which they invented. PCP seem to be the combined result in RFC chain.
BUT, today the only thing that's arguable here is if Mikrotik should support the newer Port Control Protocol (PCP) in the RFC-6887 as an update to UPnP. But I'm not sure how widely it's used...
When I was in high school, networks weren't really a thing yet. And in the networks I maintain, NAT is normally not used except for the basic use in internet access.Full cone NAT is simply 1:1 IP:Port mapping between internal IP and external IP. Any half decent network engineer should know this. If they don't, they should go back to networking fundamentals in high school.
Google was helpful. Stream's forums had an @anav-ish 'How to change NAT type to Open [Updated 2021]', quite the tale:And yes, I'm a gamer too. Even CoD Warzone works fine with netmap at both NAT44 and NAT444. NAT Type moderate, sometimes open.
DarkNate: I stopped using UPnP/Port forwarding in home use years ago. Netmap makes the experience painless for gaming, VoIP etc.
/ip fi nat
add action=netmap chain=srcnat comment="netmap for egress" ipsec-policy=out,none out-interface-list=WAN src-address-list=lan_subnets to-addresses=1.1.1.1
Whoever you are in real life, I hope we do not meet at any networking event. I do not and cannot tolerate self-proclaimed network engineers, who can't even do high-school level NAT correctly and complying with the KISS principle in network engineering. I bet you probably still use MPLS in SP space. Unaware certain large-scale global Telcos dumped MPLS completely and migrated to Layer 3 up to the customer link termination—Hint: You will not find this information on Google or some cert book. This is real life.When I was in high school, networks weren't really a thing yet. And in the networks I maintain, NAT is normally not used except for the basic use in internet access.
I would never try to setup a system like the starter of this topic wants to have. I am not in gaming, and I consider the whole problem the responsibility of the end system developer, not of a magic router in between.
This whole discussion has deteriorated into name calling based on definitions of terms found in commercial manufacturer's documents. I am out of here!
At user level, use netmap and call it a day. If you can't do it correctly, get off the grid and move back to the cave you crawled out from:
I mean, I've shared the NAT rule example that would do netmap correctly. I use the same NAT rule in my home. P2P/Games/VoIP works fine, no need for UPnP/Manual port forwarding.Haha, maybe not exactly what I had in mind but you're on the right track! :- ) I intended a reasonably useful guide for gamers so we can finish the discussing about full cone NAT. You obviously have the skills but maybe it's too easy or consumer-friendly for your taste??
Dozens of brands of typical home routers - that's what my customers already have now. Each one with different bugs, most with no more firmware updates (one big advantage of MT is that even old hardware can still be upgraded to latest ROS), too risky to open for remote management, no or buggy IPv6 support, some (Phicomm) only support IPv4 but still break when IPv6 is enabled on my PPPoE servers. People sometimes ask me to support their various routers, so I plan to offer new pre-configured MT hAP ax-lite/2/3 rented as an additional paid service with remote management and full support, or "buy any home router, and configure it any way you want, but then you are on your own, don't ask me for support" as an alternative with no additional fees.Then why have you chosen MikroTik? There are dozens of brands of typical home routers that fit that bill perfectly.
Or is it a Wireless ISP where you give them e.g. LHG5 that function both as the link and the home router?
How is that example different vs using masquerade?[...]
At user level, use netmap and call it a day. If you can't do it correctly, get off the grid and move back to the cave you crawled out from:1.1.1.1 here is example for public IP.Code: Select all/ip fi nat add action=netmap chain=srcnat comment="netmap for egress" ipsec-policy=out,none out-interface-list=WAN src-address-list=lan_subnets to-addresses=1.1.1.1
lan_subnets contains all your RFC1918 space.
If you have dynamic IP, then use scripting.
Did you even read the official MikroTik docs and also Linux man page on what masquerade does? Do you not understand why it is different from modern src nat/netmap? No? Then keep using masquerade and don't expect P2P/VoIP to work correctly without TURN.How is that example different vs using masquerade?
I'm not getting paid to explain myself here. Either use netmap or don't. It's applicable to a /32 and also an entire /24 if you have one.You don't have to be a douche all the time.
Netmap makes sense when you have multiple public IP's, but using netmap for a whole internal subnet to just one public IP? how does that work in real world?
You don't port forward in the first place for apps such as VoIP/Gaming etc. Did you even read anything? Apparently not.Sure you don't, nobody is. Yet we're not douches all the time in this forum.
So how is netmap taking care of your port forwards?
@DarkNate, It seems that you may have some misunderstandings about the use of network for gaming consoles at home. I guess you don't play gaming consoles, so you may not be familiar with it. It's not your fault.1.1.1.1 here is example for public IP.Code: Select all/ip fi nat add action=netmap chain=srcnat comment="netmap for egress" ipsec-policy=out,none out-interface-list=WAN src-address-list=lan_subnets to-addresses=1.1.1.1
lan_subnets contains all your RFC1918 space.
If you have dynamic IP, then use scripting.
/ip firewall nat add action=netmap chain=srcnat out-interface-list=WAN src-address-list=LAN to-addresses=WAN
/ip firewall nat add action=netmap chain=dstnat dst-address=WAN in-interface-list=WAN to-addresses=192.168.88.0/24
I do not have any misunderstandings whatsoever. Of course netmap has limitations. That's why we have IPv6.@DarkNate, It seems that you may have some misunderstandings about the use of network for gaming consoles at home. I guess you don't play gaming consoles, so you may not be familiar with it. It's not your fault.
Firstly, in the home scenario, netmap can only solve part of the problems of srcnat, which is what I said, just part of it.
The reason is simple. When you have a host that initiates a stun connection request to 1.2.3.4:3478, and the IP of the game console is 192.168.88.10 and the external network IP is 3.4.5.6, then using netmap, it will look like this in the firewall-connection:
src-address=192.168.88.10:12345 dst-address=1.2.3.4:3478 reply-dst-addres=3.4.5.6:12345
At this time, your netmap has taken effect on srcnat, but if the second game console also initiates a stun connection request to 1.2.3.4:3478, and the IP of the game console is 192.168.88.20 and the external network IP is 3.4.5.6, according to the rules of netmap, it should be the following record:
src-address=192.168.88.20:12345 dst-address=1.2.3.4:3478 reply-dst-addres=3.4.5.6:12345
However, 3.4.5.6:12345 has already been used by 192.168.88.10:12345, and another random port other than 12345 will be used, which depends on which idle ports are available in the NAT table.
If the local bound port for 192.168.88.10 and 192.168.88.20 accessing 1.2.3.4:3478 is random, there will be two connections with different src-ports,
but in fact, many games will bind to a fixed UDP port when initiating requests, and different games will have a different initial port, unless this port is already in use on the game console.
src-address=192.168.88.10:12345 dst-address=1.2.3.4:3478 reply-dst-addres=3.4.5.6:12345
src-address=192.168.88.10:23456 dst-address=1.2.3.4:3478 reply-dst-addres=3.4.5.6:23456
In this case, how can I set up the dstnat mapping?
As we know, netmap mapping cannot point to an IP address range. Although the code can be setup, the function is incorrect. When it is written as "to-address=192.168.88.0/24", the data will be mapped to 192.168.88.193.
Here is the code to set up the srcnat/dstnat mapping:address-list LAN=192.168.88.0/24Code: Select all/ip firewall nat add action=netmap chain=srcnat out-interface-list=WAN src-address-list=LAN to-addresses=WAN /ip firewall nat add action=netmap chain=dstnat dst-address=WAN in-interface-list=WAN to-addresses=192.168.88.0/24
address-list WAN=3.4.5.6
NAT_type_Symmetric.png
this image shows Symmetric NAT even after using the netmap solution you suggested.
NAT_type_FullCone.png
this image shows Full Cone NAT that the port 50000-65535 being dstnat to the test PC.
The game console needs to show Full Cone NAT to be recognized as NAT1.
You can use the NATTypeTester to test this. I have uploaded the file as an attachment.
NatTypeTester.7z
If I have made any mistakes in my statement or code usage, please point them out and I will make corrections.
Since you know that netmap has limitations, I thought you didn't know.Of course netmap has limitations.
So called "Full cone NAT" ain't going to happen on MikroTik. Either use my method and ensure your firewall doesn't block STUN, or keep praying for Full cone NAT.Since you know that netmap has limitations, I thought you didn't know.
So we need to use Fullcone NAT for regular users, instead of telling them to understand this and that,
as well as IPv6. They just need to know that enabling this will make gaming easier, and that there may be security risks.
It's similar to enabling uPNP with security risks.
This discussion is from the perspective of an ordinary user's home router.
it is pointless to discuss solutions that cannot solve the problem.
Bringing up Fullcone NAT is to solve the problems of home users, and most home routers now support this feature.
I already explained it before:Without enabling firewall, using netmap as you suggested, it is unable to display Fullcone NAT in NatTypeTester.
You can test it yourself, I have uploaded the NatTypeTester software.
I think the reason is that the PC is accessing port 3478, but the returned data source is from a random port between 3479 and 3481.
Perhaps this is causing the netmap you mentioned not to work, as the source port during online gaming on the game host can be any port that you haven't accessed before.
And here someone explained it in full details:NAT Testers do not test for STUN reachability.
So, on PS5/XBOX, you cannot connect with other P2P online players as a NAT1 user,NAT Testers do not test for STUN reachability.
No clue what you're talking about. I have an Xbox + PC Gaming Pass for Xbox games. All of them work fine with my config. I verified using WireShark PCAP to ensure P2P between myself and the other player is properly working. I can see My IP:Port connected to Their IP:Port.So, on PS5/XBOX, you cannot connect with other P2P online players as a NAT1 user,
because the PS5/XBOX detects that you are not a NAT1 user.
Of course, you can try contacting Sony or Microsoft with a URL and ask them why it's not working.
Therefore, game console players still need Fullcone NAT.
/ip fi nat
add action=netmap chain=srcnat comment="netmap for egress" ipsec-policy=out,none out-interface-list=WAN src-address=100.64.0.0/24 to-addresses=1.1.1.1
Xbox has allowed the use of port 3074 (UDP and TCP) only. However, if you have another Xbox console you cannot forward that same port to the second console. A port only allows one set of data to pass through at a time. This works great for the primary Xbox but the secondary Xbox will lag and have trouble playing an online game in general.
To solve this problem Activision has made it so you can port your second Xbox to 3075 (UDP and TCP). If you have a third console go ahead and port 3076 (UDP and TCP) to that one.
That is what I have asked previously where is the magic?The reason is simple. When you have a host that initiates a stun connection request to 1.2.3.4:3478, and the IP of the game console is 192.168.88.10 and the external network IP is 3.4.5.6, then using netmap, it will look like this in the firewall-connection:
src-address=192.168.88.10:12345 dst-address=1.2.3.4:3478 reply-dst-addres=3.4.5.6:12345
At this time, your netmap has taken effect on srcnat, but if the second game console also initiates a stun connection request to 1.2.3.4:3478, and the IP of the game console is 192.168.88.20 and the external network IP is 3.4.5.6, according to the rules of netmap, it should be the following record:
src-address=192.168.88.20:12345 dst-address=1.2.3.4:3478 reply-dst-addres=3.4.5.6:12345
> ip firewall connection print detail where src-address~"192.168.1.139"
Flags: E - expected, S - seen-reply, A - assured, C - confirmed, D - dying, F - fasttrack, s - srcnat, d - dstnat
0 SAC Fs protocol=udp src-address=192.168.1.139:123 dst-address=162.xxx.xxx.123:123 reply-src-address=162.xxx.xxx.123:123 reply-dst-address=91.xxx.xxx.37:123 timeout=1m25s orig-packets=77 286 orig-bytes=5 873 736 orig-fasttrack-packets=0
orig-fasttrack-bytes=0 repl-packets=77 072 repl-bytes=5 857 472 repl-fasttrack-packets=0 repl-fasttrack-bytes=0 orig-rate=0bps repl-rate=0bps
1 SAC Fs protocol=udp src-address=192.168.1.139:123 dst-address=91.xxx.xxx.77:123 reply-src-address=91.xxx.xxx.77:123 reply-dst-address=91.xxx.xxx.37:123 timeout=2m46s orig-packets=126 313 orig-bytes=9 599 788 orig-fasttrack-packets=0
orig-fasttrack-bytes=0 repl-packets=126 160 repl-bytes=9 588 160 repl-fasttrack-packets=0 repl-fasttrack-bytes=0 orig-rate=0bps repl-rate=0bps
2 SAC Fs protocol=udp src-address=192.168.1.139:123 dst-address=195.xxx.xxx.22:123 reply-src-address=195.xxx.xxx.22:123 reply-dst-address=91.xxx.xxx.37:123 timeout=2m orig-packets=10 orig-bytes=760 orig-fasttrack-packets=0 orig-fasttrack-bytes=0
repl-packets=10 repl-bytes=760 repl-fasttrack-packets=0 repl-fasttrack-bytes=0 orig-rate=0bps repl-rate=0bps
3 SAC Fs protocol=udp src-address=192.168.1.139:123 dst-address=178.xxx.xxx.24:123 reply-src-address=178.xxx.xxx.24:123 reply-dst-address=91.xxx.xxx.37:123 timeout=1m55s orig-packets=19 orig-bytes=1 444 orig-fasttrack-packets=0
orig-fasttrack-bytes=0 repl-packets=19 repl-bytes=1 444 repl-fasttrack-packets=0 repl-fasttrack-bytes=0 orig-rate=0bps repl-rate=0bps
4 SAC Fs protocol=udp src-address=192.168.1.139:123 dst-address=193.xxx.xxx.136:123 reply-src-address=193.xxx.xxx.136:123 reply-dst-address=91.xxx.xxx.37:123 timeout=2m12s orig-packets=8 orig-bytes=608 orig-fasttrack-packets=0 orig-fasttrack-bytes=0
repl-packets=8 repl-bytes=608 repl-fasttrack-packets=0 repl-fasttrack-bytes=0 orig-rate=0bps repl-rate=0bps
5 SAC Fs protocol=udp src-address=192.168.1.139:123 dst-address=193.xxx.xxx.182:123 reply-src-address=193.xxx.xxx.182:123 reply-dst-address=91.xxx.xxx.37:123 timeout=2m12s orig-packets=14 orig-bytes=1 064 orig-fasttrack-packets=0 orig-fasttrack-bytes=0
repl-packets=14 repl-bytes=1 064 repl-fasttrack-packets=0 repl-fasttrack-bytes=0 orig-rate=0bps repl-rate=0bps
Full-Cone NAT already works in vanilla Linux and RouterOS using netmap partially, but it is good enough to work with STUN binding.That is what I have asked previously where is the magic?
If both consoles are using the same source port and the same dst-address with the same dst port, then, when 1.2.3.4:3478 sends packet to 3.4.5.6:12345 what magic should happen for router to guess which one of
192.168.88.x:1234 is the real recipient? I also do not see how here mentioned "full-cone" interpretation will help in this scenario. This could wotk if consoles encode internal IP in the data, in that case NAT helper is needed that looks deeper and decodes internal IP from the packet data. Full cone quad cone or any other nat shape cannot solve this problem when working just with layer3/layer4 data.
In short, the above is Endpoint-Independent-Mapping, but what is also needed is Endpoint-Independent-Filtering. This and other NAT requirements / best practices are well explained in RFC 4787 / BCP 127 (updated by a few newer RFCs, but not obsoleted).Just checked RouterOS does exactly that. nc -p 12345 1.1.1.1 11111 and nc -p 12345 2.2.2.2 21111as you can see RouterOS also maps to the same inside global ip and port for all streams.[test@MikroTik] /ip firewall connection> print detail interval=2 where dst-address="1.1.1.1:11111" || dst-address="2.2.2.2:21111"
Flags: E - expected, S - seen-reply, A - assured, C - confirmed, D - dying, F - fasttrack, s - srcnat, d - dstnat
1 C s protocol=tcp src-address=192.168.88.115:12345 dst-address=1.1.1.1:11111 reply-src-address=1.1.1.1:11111
reply-dst-address=x.x.x.x:12345 tcp-state=syn-sent timeout=0s orig-packets=3 orig-bytes=192 orig-fasttrack-packets=0
orig-fasttrack-bytes=0 repl-packets=0 repl-bytes=0 repl-fasttrack-packets=0 repl-fasttrack-bytes=0 orig-rate=0bps repl-rate=0bps
2 C s protocol=tcp src-address=192.168.88.115:12345 dst-address=2.2.2.2:21111 reply-src-address=2.2.2.2:21111
reply-dst-address=x.x.x.x:12345 tcp-state=syn-sent timeout=3s orig-packets=2 orig-bytes=128 orig-fasttrack-packets=0
orig-fasttrack-bytes=0 repl-packets=0 repl-bytes=0 repl-fasttrack-packets=0 repl-fasttrack-bytes=0 orig-rate=0bps repl-rate=0bps
as for huawei they just try to clasify their existing nat methods based on rfc3489 description and basically shows in examples static nat, the same as mentioned before in this topic.
So none of those docs provide any actual answer what is the problem.
Yes, this makes sense if mapped to different public ports and remote devices receive which port to use via the game server.Full-Cone NAT already works in vanilla Linux and RouterOS using netmap partially, but it is good enough to work with STUN binding.That is what I have asked previously where is the magic?
If both consoles are using the same source port and the same dst-address with the same dst port, then, when 1.2.3.4:3478 sends packet to 3.4.5.6:12345 what magic should happen for router to guess which one of
192.168.88.x:1234 is the real recipient? I also do not see how here mentioned "full-cone" interpretation will help in this scenario. This could wotk if consoles encode internal IP in the data, in that case NAT helper is needed that looks deeper and decodes internal IP from the packet data. Full cone quad cone or any other nat shape cannot solve this problem when working just with layer3/layer4 data.
What the OP and RFC means is this:
Full-Cone NAT on L3/L4 basis:
192.168.0.2:123 > netmapped to 1.1.1.1:123 for dst 8.8.8.8:3333
192.168.0.2:123 > netmapped to 1.1.1.1:123 for dst 4.4.4.4:6666
Now, port 123 is opened on public IP 1:1:1:1 for ANY external host at kernel level. So Even 9.9.9.9:1234 can now talk to 1.1.1.1:123 without any dst-nat rule (UPnP, manual, PCP).
However, on vanilla Linux this particular piece “ANY” doesn't work without UPnP/PCP or manual dst-nat config. On Cisco IOS-XR, “ANY” works without any "dst-nat" rule.
So basically, once a port is mapped towards a host as example above, that port is OPENED completely to the public internet without UPnP/PCP/Manual dst-nat config, so hence "Full Cone NAT" instead of "Open NAT" is achieved. "Open NAT" is UPnP/PCP/Manual dst-nat forwarding rule which is best avoided for average user.
Another example:
Xbox1:
192.168.0.2:123 > netmapped to 1.1.1.1:123 for dst 8.8.8.8:3333
192.168.0.2:123 > netmapped to 1.1.1.1:123 for dst 8.8.8.8:6666
Xbox2:
192.168.0.3:124 > netmapped to 1.1.1.1:124 for dst 8.8.8.8:3333
192.168.0.3:124 > netmapped to 1.1.1.1:124 for dst 8.8.8.8:6666
If Xbox 3 is using the same port then use either pseudorandom, random or deterministic algorithm to map like this:
192.168.0.4:124 > netmapped to 1.1.1.1:125 for dst 8.8.8.8:3333
192.168.0.4:124 > netmapped to 1.1.1.1:125 for dst 8.8.8.8:6666
No magic bullcrap helper is required for Layer 5-7 (ALG). Just plain code to open up a mapped port on L3/L4.
Although, personally, I do not use this feature which Cisco IOS-XR offers natively, if MikroTik implements this, it will be benefit:
1. Push the patch for Linux kernel upstream
2. Help MikroTik ISP customers who are using MikroTik as CGNAT to overcome complaints from customers
3. More or less the best simplest option without UPnP/PCP crap.
Almost is not good enoughYou are killing me, I almost died laughing....hahahahahaha. MT, please give in to our cuddy and add the follwing for all devices
STUFF THAT HAS TO GET FIXED CAUSE ITS BROKEN ( maintain functionality )
a. BGP fast failover (BFD)
b. Other necessary fixes for v6 -> v7 parity
...
CAPABILITIES NOT YET REALIZED ( add functionality )
x. ZeroTier One Client, it's just 4-5 megs, ie drop the Controller to a separate pkg..
y. Zerotrust cloudflare tunnel
z. Gaming NAT to RoS.
I should emphasised this is not just for “gaming”, this applies to Video calls/Voice Calls over IP, BitTorrent etc. And again, please note the “ANY” and “OPENED completely” factor at code level for L3/L4. It should ensure that once a private IP:Port is mapped to Public:IP, that port is:Yes, this makes sense if mapped to different public ports and remote devices receive which port to use via the game server.
We will try to add this feature, however, I cannot promise any timeframe.
BFD is nice, but watch this video, they explain that just because they add a new feature, it doesn't mean, they stop working on BFD or whatever:You are killing me, I almost died laughing....hahahahahaha. MT, please give in to our cuddy and add the follwing for all devices
.
a. BGP fast failover (BFD)
b. Other necessary fixes for v6 -> v7 parity
...
x. ZeroTier One Client, it's just 4-5 megs, ie drop the Controller to a separate pkg..
y. Zerotrust cloudflare tunnel
z. Gaming NAT to RoS.
If you're using Ubuntu 20.04 onwards or modern day Debian, you should be okay. Replace src nat as jump to netmap. Similiar to ROS. It's not perfectly RFC compliant like Cisco IOS-XR, but it is 95% there.Improving NAT is important not just for gaming. RFC 4787 + later updates are called Best Current Practice for good reasons, based on a lot of experience gained with existing NAT implementations (older than the RFCs - Linux iptables NAT hasn't changed much since early 2000s). Too many things depend on central cloud servers these days, because too many restrictive NAT devices break peer-to-peer connections - it doesn't have to be that way.
Maybe the war is over?BFD is nice, but watch this video, they explain that just because they add a new feature, it doesn't mean, they stop working on BFD or whatever:
https://www.youtube.com/watch?v=vAF7NII9Qcg
Ok, few things:Highly recommend not to listen to idiots playing network engineers like @Znevna or anyone that refuses to learn high-school basic Linux networking fundamentals.
@DarkNate: Highly recommend not to listen to idiots playing network engineers...
That doesn't change the fact that full-cone is BCP as of current. Unless you wrote a new RFC/BCP to say otherwise? Any links? UPnP is a security hole, and we should just avoid it altogether in 2023. Not to mention Cisco IOS-XR supports full-cone NAT since forever. Juniper supports it since 2010 or so: https://www.juniper.net/documentation/s ... guring.pdfHmm...
Well, as much as I love your sweet talk and diplomatic rhetoric, I unfortunately have to disappoint you in several ways:
As I stated earlier UPnP works fine for the vast majority of consumers (+>99.95%) but as always there are some few exceptions. IMO, it's better to shape up the security around UPnP rather than fixing some kind of static and special tailored NAT-mode. As for the rest, you can keep playing with available RoS features as long as you enjoy it and fix your problems.
However, if (and that's a big if) someone at MT actually is thinking about some kind of new NAT module, my advice is to make it configurable targeting e.g LSN or other special purposes like crippled games and gaming consoles.
As for the BGP workaround, it's a nice solution but for various reasons it's not practically feasible as an add-in replacement, hence the need for BFD.
Regarding NAT/Masquerade it's old news so what's your point? You don't seem to realize that this is the reality for most consumers at home using dynamic IP addresses, regardless of your views on this.
Lol, good luck with UPnP and have fun.Fact: UPnP is the recommended and currently most used solution for gaming consoles at home, whether you like it or not. If you want a change, talk to the manufacturers or do you own thing.
Thanks for the clarification regarding "NAT" but that is beside the point. Why bother doing a limited implementation when the actual core module offers a plethora of new features. It's a waste of time and money IMO.
Regarding BCP, you don't seem to have a clue of how to manage compatibility in a large existing install base.
Unfortunately the war is not over. Because very few experts as those in this thread are vendor-agnostic, most of them have their network engineering skills foundation based on vendor ABC, can be Cisco, Juniper, Arista, or yes even MikroTik.Maybe the war is over?
[ Janas from MTU video above, did a presentation on the evils of masquerade a while back, so above from https://youtu.be/D80_a_O86jc?t=20 ]
or at least a battle won...
Although, personally, I do not use this feature which Cisco IOS-XR offers natively, if MikroTik implements this, it will be benefit:
1. Push the patch for Linux kernel upstream
2. Help MikroTik ISP customers who are using MikroTik as CGNAT to overcome complaints from customers
3. More or less the best simplest option without UPnP/PCP crap.
Yes, this makes sense if mapped to different public ports and remote devices receive which port to use via the game server.
We will try to add this feature, however, I cannot promise any timeframe.
Well I agree. Though I was speaking more generally. You can find a lot of misinformation on this forum or similar forums all over the internet. Nobody reads 2023 networking fundamental books and assume everything from 1980 is still relevant today like classful addressing for example. Like look at the state of IRR lol, what a joke, a /24 defined in 100 DBs. Good luck with RPKI.NAT wars are vendor-agnostic.
This seems to be a win here, no?
or at least a battle won...
I have no idea what you're on about. Good luck with BisonRouter or whatever you use internally. I'm out of here.@DarkNet, you missed my point for the third time and seem to focus more on your own thoughts instead of responding with a focus on the arguments. You are also changing direction of the conversation with new and irrelevant facts (whataboutism) but never mind.
As for "your migration", you've convinced me even more that you have absolutely no idea or experience for that matter on how to deal with a large install base (since are probably a skilled hobbyist).
For OpenWrt to see something like this it would mean that it has to exist in upstream netfilter (iptables in OpenWrt < 22.03 or nftables in OpenWrt ≥ 22.03), and there's no such thing.[...] Even OpenWRT supports it as already explained by other home users here who know better than you do.
Bye.I'm out of here.
Um, no? Or at least that's not the behaviour described/wanted in this topic, the bold part in specific.[...] Essentially the desired behavior is that a host behind a NAT router (MikroTik) opens a connection to the Internet to a server (STUN?) and that public IP:port mapping is recorded and then communicated to other hosts on other LANs behind other NAT routers to communicate to this host. Essentially allowing NAT traversal and direct TCP/UDP connectivity host to host.
As an implementor ourselves working at the kernel level on other products we have built a well-defined request to Mikrotik in July 2020 [...] I strongly recommend folks who want this feature reach out to MikroTik and reference SUP-20798 if they care about this feature.
To clarify, the recording and communication of the opened IP/port isn’t the feature being requested. The allowing of any remote IP l/source port to connect to the opened IP and port is the feature. Hence “endpoint independent”.Um, no? Or at least that's not the behaviour described/wanted in this topic, the bold part in specific.[...] Essentially the desired behavior is that a host behind a NAT router (MikroTik) opens a connection to the Internet to a server (STUN?) and that public IP:port mapping is recorded and then communicated to other hosts on other LANs behind other NAT routers to communicate to this host. Essentially allowing NAT traversal and direct TCP/UDP connectivity host to host.
As an implementor ourselves working at the kernel level on other products we have built a well-defined request to Mikrotik in July 2020 [...] I strongly recommend folks who want this feature reach out to MikroTik and reference SUP-20798 if they care about this feature.
And without knowing what SUP-20798 contains, nobody will reference it.
It seems you've created the documentation already here:endpoint independent mapping will be available in 7.10beta version when its released.
/ip firewall nat
add action=endpoint-independent-nat chain=srcnat out-interface=WAN protocol=tcp
/ip firewall nat
add action=endpoint-independent-nat chain=dstnat in-interface=WAN protocol=tcp
Unless they properly support TCP/UDP both, and heck maybe all layer 4 protocols (DCCP, UDP-Lite, SCTP etc) – I would not use this half-baked full cone NAT option of MikroTik, sticking to netmap is better, at least I know it works with all protocols without having to think twice.Funny, they edited it as it now shows UDP. Agreed though this needs to support both UDP and TCP.
Yes, exactly. In full cone, the connection is no longer restricted by IP address.So let me get this straight, by using my Nintendo Switch as an example (playing Splatoon 3 or whatever).
Does this mean if I set up Endpoint-Independent NAT that, when my Switch initiates an outbound connection using SRC Port 54809 as example here, any other console can now connect to the same port, just like if it was manually setup as dstnat rule by me, automatically? (Even if my console has not initated a connection to the other consoles yet)
That's what I get from here. In all honesty that would be a godsend to anyone playing on the Nintendo Switch. Hope the beta is released soon so i can test
Yes, but only for UDP. If some traffic is sent via TCP by a specific game or application, then no.So let me get this straight, by using my Nintendo Switch as an example (playing Splatoon 3 or whatever).
Does this mean if I set up Endpoint-Independent NAT that, when my Switch initiates an outbound connection using SRC Port 54809 as example here, any other console can now connect to the same port, just like if it was manually setup as dstnat rule by me, automatically? (Even if my console has not initated a connection to the other consoles yet)
That's what I get from here. In all honesty that would be a godsend to anyone playing on the Nintendo Switch. Hope the beta is released soon so i can test
That's dumb, i hope it gets implemented during the beta, it makes 0 sense for this to be exclusive to UDP.Yes, but only for UDP. If some traffic is sent via TCP by a specific game or application, then no.
MikroTik should support both to avoid confusion and headaches.
On Nintendo Switch from what i can tell, a TCP connection is established to the matchmaking server, and the same port is then used to connect to each other consoles using UDP. This isn't such a big problem, but i can imagine that it wont work with the port randomization feature they implemented for Endpoint Independent Mapping.This topic started about gaming, games requiring something like this for multiplayer, mostly, if not all, communicate over UDP.
So not that dumb.
it is called "Simultaneous TCP Open" sessions in RFCI'm sure that they can improve the feature in the future.
If they took 10+ years for BFD on ROSv7 to improve, they will take another 20 years to support TCP.I'm sure that they can improve the feature in the future.
Nah check the RFC again. It allows TCP NAT punching via open method.RFC allows only UDP
"Simultaneous TCP Open" is not implemented correctly on many systems, including NAT devices.
Exactly, this is talking about the LACK of TCP Open support on old OSes at the time AND on NAT devices, aka MikroTik which clearly doesn't support TCP NAT punching.but RFC states that"Simultaneous TCP Open" is not implemented correctly on many systems, including NAT devices.
+1 for the feature request, then..Exactly, this is talking about the LACK of TCP Open support on old OSes at the time AND on NAT devices, aka MikroTik which clearly doesn't support TCP NAT punching.but RFC states that
100 different people in this thread have shown Cisco, Huawei, Juniper all support full cone NAT for both TCP and UDP. Only MikroTik and vanilla Linux does not.
You can avoid both by using the netmap method, it allows STUN to do its job and ensures the remote end-point can connect to your IP:Port combo matching the port number actually in use by the application on the host.You know, it would be nice if we could add Src and Dst ports to a list too so we can manually port forward them without having to wait on Mikrotik implement EIM-NAT for TCP.
EDIT: Infact if you live alone you can already have Full Cone NAT by just adding everything your device connects to to an Adress List and DST-NATing to that. I wouldn't do it with a PC but for a Nintendo Switch that looks to be great.
/ip firewall nat
add action=endpoint-independent-nat chain=srcnat out-interface-list=WAN protocol=udp
add action=endpoint-independent-nat chain=dstnat in-interface-list=WAN protocol=udp
It's broken, it's not full-cone, it's port restricted cone with EIM.Thank you for bringing Endpoint-Independent NAT through RouterOS 7.10.
It allows game consoles to support Full Cone NAT through simple configuration.
Please share your testing methodology with us that confirms ANY external IP can reach. And why isn't TCP also supported?In my test any external IP address can reach the port, I haven't used that testing tool, just directly opened connections.
When using Endpoint-Independent NAT currently, there is a kernel failure after creating a large number of UDP connections.endpoint independent mapping will be available in 7.10beta version when its released.
Lol, what did you expect from MikroTik software quality assurance team? Of course there's kernel failure.When using Endpoint-Independent NAT currently, there is a kernel failure after creating a large number of UDP connections.
I think they did, and that may be the problem. @DarkNate suggested earlier:ROS is Linux doesn't it make sense to go this route to conserved time?
I take that to mean there is not some standard kernel thing that does it.Only MikroTik and vanilla Linux does not.
MikroTik does not really have multiple release trains. There is no separate "development" branch where things are developed and tested and later merged into a "stable" branch. The names are there to suggest it, but in reality it is just one single development release that at some random point in time is stamped as "stable", including all the half-finished developments that are in it...If they implement that code and they found it buggy why bother releasing it in the wild specially if the implementation is incomplete?
Remember that the more patches are made to the kernel, the more difficult it will become to upgrade the kernel version.why MT can't just patch their userland and kernel code tweak and adjust accordingly and moved on
There is no rocket science:Please share your testing methodology with us that confirms ANY external IP can reach. And why isn't TCP also supported?In my test any external IP address can reach the port, I haven't used that testing tool, just directly opened connections.
Does not work in my testing, port is not reachable from ANY external public IP. Additionally, Cisco/Juniper/Huawei etc supports TCP+UDP for full cone/EIM, yet your employer (MikroTik) fails to support a feature that was invented a decade ago if not more.There is no rocket science:
Open connection from local client over EIM enabled router to public IP.
Then open connection from other public IP to the same port and observe the flow over the router.
Flows gets mapped properly and forwarded to correct local client and port.
I would use MikroTik only for basic L2/L3 switching. For routing, edge, BNGs, MPLS/VXLAN/EVPN etc, I would use other vendors.@pe1chl I hope this situation will be improved in the future, because ROS is not a toy lots of people depends on it every day to deliver what's being advertise, specially in the ISP space this is the part where our management didn't see (hidden cost), In as much as I loved MikroTik for what it's worth but I also missed the stability/correctness of release of other vendor [_insert_vendor_here_] sadly our fleet is dominated by Mikrotik I don't complain the platform itself just the way they do things which break the norms, I realized our decision last year to mix platforms because of lack of BFD in ROSv7 way back then has unintended side effect at least in a good way. We can juggle things up is something goes wrong with MT
I clearly provided configuration example in previous comment.We implemented exactly what was asked by the OP, who confirmed that feature he asked works. Yet you do not provide any useful info no configuration no setup in which it is not working, nothing, just some screenshot by some tool which shows "moderate", which is completely useless to identify the problem.
Just a complain "not work, fix or I leave".
If you have a device set up as the manual states and mapping does not work properly then please send a report to support with supout files and other relevant info.
This is the configuration I used on MikroTik side:
viewtopic.php?p=1010517#p1010447
A supout file isn't going to give you any special info, the configuration is dead simple, I've shared the sample. I've even shared an OPEN SOURCE tool that tests for RFC compliance and MikroTik fails miserably. This is sufficient for you to replicate the test/issue.If there is indeed deep and long investigation then there should be no problems to create a support ticket and provide that detailed info.
I can't do that, as I have multiple public IPs from “interface list WAN” coming in to the BNG and specifically perform the mapping to specific RFC1918 ranges or 100.64/0 ranges. dst-address param is required for correct mapping.try to remove dst-address param from rule in dstnat chain.
The full cone implementation on MikroTik is half-baked. How would it solve anything? Did you not read my findings above? MikroTik has made it clear, they aren't interested in fixing it.Currently, endpoint-independent-nat does solve the NAT1 issue for home gaming consoles, eliminating the need for manual UDP NAT configuration for PS5, Xbox, and Switch.
However, enabling it is not recommended for now because it can lead to random kernel failures in versions 7.10.x and 7.11betaX.
It has been confirmed to occur on ARM, ARM64, and x86 (CHR) architectures.
If your RouterOS is also experiencing kernel failure,
please disable, or delete the relevant code for endpoint-independent-nat.
Wait for a new version that includes fixes and updates.
viewtopic.php?p=1013703
/ip firewall nat
add action=endpoint-independent-nat chain=srcnat out-interface-list=WAN protocol=udp
add action=endpoint-independent-nat chain=dstnat in-interface-list=WAN protocol=udp
I mean this is open source:They need a /tool/nat-detect – I'd rather know the situation, before some gamer is screaming about a test on an XBox.
How did you test ? Did you use a public Stun server ?I don't know, seems flaky. Anyway, personally I use IPv6 everywhere, I stopped caring about NATs.
Did you test on the same external network with each setup ? there could be a different external filtering on the public IP addresses you did use that could explain those differences. Do you own those public IPs ?I tested using this:
https://github.com/HMBSbige/NatTypeTester
The software bugs have been fixed (I spoke to the developer of this software directly).
MikroTik still fails the test. When I test on Juniper or Cisco, test passes just fine.
I think MikroTik is failing to test this correctly.
TCP/UDP BOTH work in Juniper and Cisco as per the RFCs for this technology.
I own the whole god-damn Autonomous System and have operated commercial networks at scale. Trust me, dude, MikroTik's EIM-NAT is broken.Did you test on the same external network with each setup ? there could be a different external filtering on the public IP addresses you did use that could explain those differences. Do you own those public IPs ?
Regardless what i do i cannot get independant endpoint filtering. Even NAT 1:1 does not give it. This is why i think that my public IP is filtered externally to forbid full cone nat.
I think that we need to test with a local stun server on a private natted subnetwork to be sure. Or manual testing from such a network. Did you do that with the Mikrotik setup ?
They don't listen to me or anybody, see this:Darknate you have investigated this functionality for some time to great lengths and depths and its STUNning to me that MT doesnt pay more attention to your writing on this subject!!
Its it just me or is they don't write full requirements for their software...... Mind you I dont know how you right half requirements, its seems a foreign concept.
Just that and default firewall rules to forbid WAN to LAN traffic and allow established traffic.two local sub-networks, on two different VLANs, routed through an RB5009, Ros 7.14RC1.
As for firewall, firewall is null in my testing and many others in this thread, so firewall is ruled out from day one. In addition, firewall on Windows laptop was also disabled.
If they have a forward accept rule for UDP traffic from WAN to LAN, or no firewall rules at all, and the two needed EIM / EIF rules in NAT then they should get open NAT....
However, gamer customers still report they see "moderate NAT" on Xbox and not open.
...
There is another tool that seems quite complete : punch-check.The only other tool I know of is Xbox networking app. Run the network tests, it'll show you the correct results.
It gives hairpinning support and port assignment informations, something that NatType tester do not gives.RFC 4787 defines several NAT properties and which are needed for hole-punching support. Those properties which are checked by this tool are:
port mapping: either endpoint-independent, address-dependent, or address and port-dependent
filtering: either endpoint-independent, address-dependent, or address and port-dependent
hairpinning: supported or unsupported
port assignment: may be contiguous, preserving, and parity-preserving
And some other interesting readings about the subject :STUN [RFC3489] used the terms "Full Cone", "Restricted Cone", "Port
Restricted Cone", and "Symmetric" to refer to different variations of
NATs applicable to UDP only. Unfortunately, this terminology has
been the source of much confusion, as it has proven inadequate at
describing real-life NAT behavior. This specification therefore
refers to specific individual NAT behaviors instead of using the
Cone/Symmetric terminology.
I really believe that MikroTik made adjustments and corrections to endpoint-independent-nat without reporting it in the release notes.OR MikroTik silently fixed it in newer versions without posting in changelog, my last version test was: 7.11
I know it's not ideal.MikroTik's UDP-only EIM-NAT seems to work partially, at least for SIP and similar.