Network Address Translation is an Internet standard that allows hosts on local area networks to use one set of IP addresses for internal communications and another set of IP addresses for external communications. A LAN that uses NAT is ascribed as anattednetwork. For NAT to function, there should be a NAT gateway in eachnattednetwork. The NAT gateway (NAT router) performs IP address rewriting on the way packet travel from/to LAN.
Nat matches only the first packet of the connection, connection tracking remembers the action and performs on all other packets belonging to the same connection.
Whenever NAT rules are changed or added, the connection tracking table should be cleared otherwise NAT rules may seem to be not functioning correctly until connection entry expires.
Since RouterOS v7 the firewall NAT has two newINPUTandOUTPUTchains which are traversed for packets delivered to and sent from applications running on the local machine:
Network address translation works by modifying network address information in the packets IP header. Let`s take a look at the common setup where a network administrator wants to access an office server from the internet.
We want to allow connections from the internet to the office server whose local IP is 10.0.0.3. In this case, we have to configure a destination address translation rule on the office gateway router:
/ip firewall nat add chain=dstnat action=dst-nat dst-address=172.16.16.1 dst-port=22 to-addresses=10.0.0.3 protocol=tcp
The rule above translates: when an incoming connection requests TCP port 22 with destination address 172.16.16.1, use thedst-nat行动和离开包与本地设备IP address 10.0.0.3 and port 22.
To allow access only from the PC at home, we can improve ourdst-natrule with"src-address=192.168.88.1"which is a Home`s PC public (this example) IP address. It is also considered to be more secure!
If you want to hide your local devices behind your public IP address received from ISP, you should configure the source network address translation (masquerading) feature of the MikroTik router.
Let`s assume you want to hide both office computer and server behind the public IP 172.16.16.1, the rule will look like the following one:
nat / ip防火墙添加链= srcnat src-address = 10.0.0.0/24 action=src-nat to-addresses=172.16.16.1 out-interface=WAN
Now your ISP will see all the requests coming with IP 172.16.16.1 and they will not see your LAN network IP addresses.
Firewall NATaction=masqueradeis a unique subversion ofaction=srcnat,it was designed for specific use in situations when public IP can randomly change, for example, DHCP server change assigned IP or PPPoE tunnel after disconnect gets different IP, in short -when public IP is dynamic.
nat / ip防火墙添加链= srcnat src-address = 10.0.0.0/24 action=masquarade out-interface=WAN
Every time when interface disconnects and/or its IP address changes, the router will clear all masqueraded connection tracking entries related to the interface, this way improving system recovery time after public IP change. Ifsrcnatis used instead ofmasquerade,connection tracking entries remain and connections can simply resume after a link failure.
Unfortunately, this can lead to some issues with unstable links when the connection gets routed over different links after the primary link goes down. In such a scenario following things can happen:
To work around this situationblackholeroute can be created as an alternative to the route that might disappear on disconnect.
Hosts behind a NAT-enabled router do not have true end-to-end connectivity. Therefore some Internet protocols might not work in scenarios with NAT. Services that require the initiation of TCP connection from outside the private network or stateless protocols such as UDP, can be disrupted.
To overcome these limitations RouterOS includes a number of so-called NAT helpers, that enable NAT traversal for various protocols. Whenaction=srcnatis used instead, connection tracking entries remain and connections can simply resume.
尽管源NAT和伪装执行山姆e fundamental function: mapping one address space into another one, the details differ slightly. Most noticeably, masquerading chooses the source IP address for the outbound packet from the IP bound to the interface through which the packet will exit.
To combat IPv4 address exhaustion, a new RFC 6598 was deployed. The idea is to use shared 100.64.0.0/10 address space inside the carrier's network and perform NAT on the carrier's edge router to a single public IP or public IP range.
因为这样设置的本质,它也是called NAT444, as opposed to a NAT44 network for a 'normal' NAT environment, three different IPv4 address spaces are involved.
CGNAT configuration on RouterOS does not differ from any other regular source NAT configuration:
/ip firewall nat add chain=src-nat action=srcnat src-address=100.64.0.0/10 to-address=2.2.2.2 out-interface=
Where:
The advantage of NAT444 is obvious, fewer public IPv4 addresses are used. But this technique comes with major drawbacks:
Packets with Shared Address Space source or destination addresses MUST NOT be forwarded across Service Provider boundaries. Service Providers MUST filter such packets on ingress links. In RouterOS this can be easily done with firewall filters on edge routers:
/ip firewall filter add chain=input src-address=100.64.0.0/10 action=drop in-interface=add chain=output dst-address=100.64.0.0/10 action=drop out-interface= add chain=forward src-address=100.64.0.0/10 action=drop in-interface= add chain=forward src-address=100.64.0.0/10 action=drop out-interface= add chain=forward dst-address=100.64.0.0/10 action=drop out-interface=
Service providers may be required to log of MAPed addresses, in a large CGN deployed network that may be a problem. Fortunately, RFC 7422 suggests a way to manage CGN translations in such a way as to significantly reduce the amount of logging required while providing traceability for abuse response.
RFC states that instead of logging each connection, CGNs could deterministically map customer private addresses (received on the customer-facing interface of the CGN, a.k.a., internal side) to public addresses extended with port ranges.
In RouterOS described algorithm can be done with few script functions. Let's take an example:
Inside IP | Outside IP/Port range |
100.64.1.1 | 2.2.2.2:2000-2099 |
100.64.1.2 | 2.2.2.2:2100-2199 |
100.64.1.3 | 2.2.2.2:2200-2299 |
100.64.1.4 | 2.2.2.2:2300-2399 |
100.64.1.5 | 2.2.2.2:2400-2499 |
100.64.1.6 | 2.2.2.2:2500-2599 |
Instead of writing NAT mappings by hand, we could write a function that adds such rules automatically.
:全球√6 ={:因为我从= 0 = 1美元={:如果(我* i > $1) do={ :return ($i - 1) } } } :global addNatRules do={ /ip firewall nat add chain=srcnat action=jump jump-target=xxx \ src-address="$($srcStart)-$($srcStart + $count - 1)" :local x [$sqrt $count] :local y $x :if ($x * $x = $count) do={ :set y ($x + 1) } :for i from=0 to=$x do={ /ip firewall nat add chain=xxx action=jump jump-target="xxx-$($i)" \ src-address="$($srcStart + ($x * $i))-$($srcStart + ($x * ($i + 1) - 1))" } :for i from=0 to=($count - 1) do={ :local prange "$($portStart + ($i * $portsPerAddr))-$($portStart + (($i + 1) * $portsPerAddr) - 1)" /ip firewall nat add chain="xxx-$($i / $x)" action=src-nat protocol=tcp src-address=($srcStart + $i) \ to-address=$toAddr to-ports=$prange /ip firewall nat add chain="xxx-$($i / $x)" action=src-nat protocol=udp src-address=($srcStart + $i) \ to-address=$toAddr to-ports=$prange } }
After pasting the above script in the terminal function "addNatRules" is available. If we take our example, we need to map 6 shared network addresses to be mapped to 2.2.2.2 and each address uses a range of 100 ports starting from 2000. So we run our function:
$addNatRules count=6 srcStart=100.64.1.1 toAddr=2.2.2.2 portStart=2000 portsPerAddr=100
Now you should be able to get a set of rules:
[admin@rack1_b18_450] /ip firewall nat> print Flags: X - disabled, I - invalid, D - dynamic 0 chain=srcnat action=jump jump-target=xxx src-address=100.64.1.1-100.64.1.6 log=no log-prefix="" 1 chain=xxx action=jump jump-target=xxx-0 src-address=100.64.1.1-100.64.1.2 log=no log-prefix="" 2 chain=xxx action=jump jump-target=xxx-1 src-address=100.64.1.3-100.64.1.4 log=no log-prefix="" 3 chain=xxx action=jump jump-target=xxx-2 src-address=100.64.1.5-100.64.1.6 log=no log-prefix="" 4 chain=xxx-0 action=src-nat to-addresses=2.2.2.2 to-ports=2000-2099 protocol=tcp src-address=100.64.1.1 log=no log-prefix="" 5 chain=xxx-0 action=src-nat to-addresses=2.2.2.2 to-ports=2000-2099 protocol=udp src-address=100.64.1.1 log=no log-prefix="" 6 chain=xxx-0 action=src-nat to-addresses=2.2.2.2 to-ports=2100-2199 protocol=tcp src-address=100.64.1.2 log=no log-prefix="" 7 chain=xxx-0 action=src-nat to-addresses=2.2.2.2 to-ports=2100-2199 protocol=udp src-address=100.64.1.2 log=no log-prefix="" 8 chain=xxx-1 action=src-nat to-addresses=2.2.2.2 to-ports=2200-2299 protocol=tcp src-address=100.64.1.3 log=no log-prefix="" 9 chain=xxx-1 action=src-nat to-addresses=2.2.2.2 to-ports=2200-2299 protocol=udp src-address=100.64.1.3 log=no log-prefix="" 10 chain=xxx-1 action=src-nat to-addresses=2.2.2.2 to-ports=2300-2399 protocol=tcp src-address=100.64.1.4 log=no log-prefix="" 11 chain=xxx-1 action=src-nat to-addresses=2.2.2.2 to-ports=2300-2399 protocol=udp src-address=100.64.1.4 log=no log-prefix="" 12 chain=xxx-2 action=src-nat to-addresses=2.2.2.2 to-ports=2400-2499 protocol=tcp src-address=100.64.1.5 log=no log-prefix="" 13 chain=xxx-2 action=src-nat to-addresses=2.2.2.2 to-ports=2400-2499 protocol=udp src-address=100.64.1.5 log=no log-prefix="" 14 chain=xxx-2 action=src-nat to-addresses=2.2.2.2 to-ports=2500-2599 protocol=tcp src-address=100.64.1.6 log=no log-prefix="" 15 chain=xxx-2 action=src-nat to-addresses=2.2.2.2 to-ports=2500-2599 protocol=udp src-address=100.64.1.6 log=no log-prefix=""
Hairpin network address translation (NAT Loopback) is where the device on the LAN is able to access another machine on the LAN via the public IP address of the gateway router.
In the above example the gateway router has the followingdst-natconfiguration rule:
/ip firewall nat add chain=dstnat action=dst-nat dst-address=172.16.16.1 dst-port=443 to-addresses=10.0.0.3 to-ports=443 protocol=tcp
When a user from the PC at home establishes a connection to the webserver, the router performs DST NAT as configured:
But, there will be aproblem, when a client on the same network as the web server requests a connection to the web server'spublicIP address:
To resolve this issue, we will configure a newsrc-natrule (the hairpin NAT rule) as follows:
/ip firewall nat add action=masquerade chain=srcnat dst-address=10.0.0.3 out-interface=LAN protocol=tcp src-address=10.0.0.0/24
After configuring the rule above:
Endpoint-independent NAT creates mapping in the source NAT and uses the same mapping for all subsequent packets with the same source IP and port. This mapping is created with the following rule:
/ip firewall nat add action=endpoint-independent-nat chain=srcnat out-interface=WAN protocol=udp
This mapping allows running source-independent filtering, which allows forwarding packets from any source from WAN to mapped internal IP and port. Following rule enables filtering:
/ip firewall nat add action=endpoint-independent-nat chain=dstnat in-interface=WAN protocol=udp
Endpoint-independent NAT works only with UDP protocol.
Additionally, endpoint-independent-nat can take a few other parameters:
More infohttps://www.ietf.org/rfc/rfc5128.txtsection 2.2.3 and 2.2.5
Property | Description |
---|---|
action(action name; Default:accept) | Action to take if a packet is matched by the rule:
|
address-list(string; Default: ) | Name of the address list to be used. Applicable if action isadd-dst-to-address-list oradd-src-to-address-list |
address-list-timeout(none-dynamic | none-static | time; Default:none-dynamic) | Time interval after which the address will be removed from the address list specified byaddress-list parameter. Used in conjunction withadd-dst-to-address-list oradd-src-to-address-list actions
|
chain(name; Default: ) | Specifies to which chain rule will be added. If the input does not match the name of an already defined chain, a new chain will be created |
comment(string; Default: ) | Descriptive comment for the rule |
connection-bytes(integer-integer; Default: ) | Matches packet only if a given amount of bytes has been transferred through the particular connection. 0 - means infinity, for exampleconnection-bytes=2000000-0 如果更多的th意味着规则匹配an 2MB has been transferred through the relevant connection |
connection-limit(integer,netmask; Default: ) | Matches connections per address or address block after a given value is reached |
connection-mark(no-mark | string; Default: ) | Matches packets marked via mangle facility with particular connection mark. Ifano-markis set, the rule will match any unmarked connection |
connection-rate(Integer 0..4294967295; Default: ) | Connection Rate is a firewall matcher that allows capturing traffic based on the present speed of the connection |
connection-type(ftp | h323 | irc | pptp | quake3 | sip | tftp; Default: ) | Matches packets from related connections based on information from their connection tracking helpers. A relevant connection helper must be enabled under/ip firewall service-port |
content(string; Default: ) | Match packets that contain specified text |
dscp(integer: 0..63; Default: ) | Matches DSCP IP header field. |
dst-address(IP/netmask | IP range; Default: ) | Matches packets whose destination is equal to specified IP or falls into a specified IP range. |
dst-address-list(name; Default: ) | Matches the destination address of a packet against a user-definedaddress list |
dst-address-type(unicast | local | broadcast | multicast; Default: ) | Matches destination address type:
|
dst-limit(integer[/time],integer,dst-address | dst-port | src-address[/time]; Default: ) | Matches packets until a given PPS limit is exceeded. As opposed to thelimitmatcher, every destination IP address/destination port has its own limit. Parameters are written in the following format:count[/time],burst,mode[/expire] .
|
dst-port(integer[-integer]: 0..65535; Default: ) | List of destination port numbers or port number ranges in formatRange[,Port], for example,dst-port=123-345,456-678 |
fragment(yes|no; Default: ) | Matches fragmented packets. The first (starting) fragment does not count. If connection tracking is enabled there will be no fragments as the system automatically assembles every packet |
hotspot(auth | from-client | http | local-dst | to-client; Default: ) | Matches packets received from HotSpot clients against various HotSpot matchers.
|
icmp-options(integer:integer; Default: ) | Matches ICMP type: code fields |
in-bridge-port(name; Default: ) | Actual interface the packet has entered the router if the incoming interface is a bridge |
in-interface(name; Default: ) | Interface the packet has entered the router |
ingress-priority(integer: 0..63; Default: ) | Matches ingress the priority of the packet. Priority may be derived from VLAN, WMM or MPLS EXP bit. |
ipsec-policy(in | out, ipsec | none; Default: ) | Matches the policy used by IPSec. Value is written in the following format:direction, policy . The direction is Used to select whether to match the policy used for decapsulation or the policy that will be used for encapsulation.
For example, if a router receives an IPsec encapsulated Gre packet, then rule |
ipv4-options(any | loose-source-routing | no-record-route | no-router-alert | no-source-routing | no-timestamp | none | record-route | router-alert | strict-source-routing | timestamp; Default: ) | Matches IPv4 header options.
|
jump-target(name; Default: ) | Name of the target chain to jump to. Applicable only ifaction=jump |
layer7-protocol(name; Default: ) | Layer7 filter name defined inlayer7 protocol menu. |
limit(integer,time,integer; Default: ) | Matches packets until a given PPS limit is exceeded. Parameters are written in the following format:count[/time],burst .
|
log(yes | no; Default:no) | Add a message to the system log containing the following data: in-interface, out-interface, src-mac, protocol, src-ip:port->dst-ip:port, and length of the packet. |
log-prefix(string; Default: ) | Adds specified text at the beginning of every log message. Applicable ifaction=logorlog=yesconfigured. |
out-bridge-port(name; Default: ) | Actual interface the packet is leaving the router if the outgoing interface is a bridge |
out-interface(; Default: ) | Interface the packet is leaving the router |
packet-mark(no-mark | string; Default: ) | Matches packets marked via mangle facility with particular packet mark. Ifno-markis set, the rule will match any unmarked packet |
packet-size(integer[-integer]:0..65535; Default: ) | Matches packets of specified size or size range in bytes |
per-connection-classifier(ValuesToHash:Denominator/Remainder; Default: ) | PCC matcher allows dividing traffic into equal streams with the ability to keep packets with a specific set of options in one particular stream |
port(integer[-integer]: 0..65535; Default: ) | Matches if any (source or destination) port matches the specified list of ports or port ranges. Applicable only ifprotocol is TCP or UDP |
protocol(name or protocol ID; Default:tcp) | Matches particular IP protocol specified by protocol name or number |
psd(integer,time,integer,integer; Default: ) | Attempts to detect TCP and UDP scans. Parameters are in the following formatWeightThreshold, DelayThreshold, LowPortWeight, HighPortWeight
|
random(integer: 1..99; Default: ) | Matches packets randomly with a given probability |
routing-mark(string; Default: ) | Matches packets marked by mangle facility with particular routing mark |
same-not-by-dst(yes | no; Default: ) | Specifies whether to take into account or not destination IP address when selecting a new source IP address. Applicable ifaction=same |
src-address(Ip/Netmaks, Ip range; Default: ) | Matches packets whose source is equal to specified IP or falls into a specified IP range. |
src-address-list(name; Default: ) | Matches source address of a packet against user-definedaddress list |
src-address-type(unicast | local | broadcast | multicast; Default: ) | Matches source address type:
|
src-port(integer[-integer]: 0..65535; Default: ) | List of source ports and ranges of source ports. Applicable only if a protocol is TCP or UDP. |
src-mac-address(MAC address; Default: ) | Matches source MAC address of the packet |
tcp-mss(integer[-integer]: 0..65535; Default: ) | Matches TCP MSS value of an IP packet |
time(time-time,sat | fri | thu | wed | tue | mon | sun; Default: ) | Allows to create a filter based on the packets' arrival time and date or, for locally generated packets, departure time and date |
to-addresses(IP address[-IP address]; Default:0.0.0.0) | Replace the original address with the specified one. Applicable if action is dst-nat, netmap, same, src-nat |
to-ports(integer[-integer]: 0..65535; Default: ) | Replace the original port with the specified one. Applicable if action is dst-nat, redirect, masquerade, netmap, same, src-nat |
ttl(integer: 0..255; Default: ) | Matches packets TTL value |
Property | Description |
---|---|
bytes(integer) | The total amount of bytes matched by the rule |
packets(integer) | The total amount of packets matched by the rule |
To show additionalread-onlyproperties:
[admin@MikroTik] > ip firewall nat print stats all Flags: X - disabled, I - invalid, D - dynamic # CHAIN ACTION BYTES PACKETS 0 srcnat masquerade 265 659 987
NAT66 is supported since RouterOS v7.1.
ipv6/firewall/nat/
Property | Description |
---|---|
action(action name; Default:accept) | Action to take if a packet is matched by the rule:
|
address-list(string; Default: ) | Name of the address list to be used. Applicable if action isadd-dst-to-address-list oradd-src-to-address-list |
address-list-timeout(none-dynamic | none-static | time; Default:none-dynamic) | Time interval after which the address will be removed from the address list specified byaddress-list parameter. Used in conjunction withadd-dst-to-address-list oradd-src-to-address-list actions
|
chain(name; Default: ) | Specifies to which chain rule will be added. If the input does not match the name of an already defined chain, a new chain will be created |
comment(string; Default: ) | Descriptive comment for the rule |
connection-bytes(integer-integer; Default: ) | Matches packets only if a given amount of bytes has been transferred through the particular connection. 0 - means infinity, for exampleconnection-bytes=2000000-0 如果更多的th意味着规则匹配an 2MB has been transferred through the relevant connection |
connection-limit(integer,netmask; Default: ) | Matches connections per address or address block after a given value is reached |
connection-mark(no-mark | string; Default: ) | Matches packets marked via mangle facility with particular connection mark. Ifno-markis set, the rule will match any unmarked connection |
connection-rate(Integer 0..4294967295; Default: ) | Connection Rate is a firewall matcher that allows capturing traffic based on the present speed of the connection |
connection-state(established | invalid | new | related | untracked; Default: ) | Interprets the connection tracking analytics data for a particular packet:
|
connection-type(ftp | h323 | irc | pptp | quake3 | sip | tftp; Default: ) | Matches packets from related connections based on information from their connection tracking helpers. A relevant connection helper must be enabled under/ip firewall service-port |
content(string; Default: ) | Match packets that contain specified text |
dscp(integer: 0..63; Default: ) | Matches DSCP IP header field. |
dst-address(IP/netmask | IP range; Default: ) | Matches packets whose destination is equal to specified IP or falls into a specified IP range. |
dst-address-list(name; Default: ) | Matches destination address of a packet against user-definedaddress list |
dst-address-type(unicast | local | broadcast | multicast; Default: ) | Matches destination address type:
|
dst-limit(integer[/time],integer,dst-address | dst-port | src-address[/time]; Default: ) | Matches packets until a given PPS limit is exceeded. As opposed to thelimitmatcher, every destination IP address/destination port has its own limit. Parameters are written in the following format:count[/time],burst,mode[/expire] .
|
dst-port(integer[-integer]: 0..65535; Default: ) | List of destination port numbers or port number ranges in formatRange[,Port], for example,dst-port=123-345,456-678 |
icmp-options(integer:integer; Default: ) | Matches ICMP type: code fields |
in-bridge-port(name; Default: ) | Actual interface the packet has entered the router if the incoming interface is a bridge |
in-bridge-port-list(name; Default: ) | Set of interfaces defined ininterface list. Works the same asin-bridge-port |
in-interface(name; Default: ) | Interface the packet has entered the router |
in-interface-list(name; Default: ) | Set of interfaces defined ininterface list. Works the same asin-interface |
ingress-priority(integer: 0..63; Default: ) | Matches ingress the priority of the packet. Priority may be derived from VLAN, WMM or MPLS EXP bit. |
ipsec-policy(in | out, ipsec | none; Default: ) | Matches the policy used by IPSec. Value is written in the following format:direction, policy . The direction is Used to select whether to match the policy used for decapsulation or the policy that will be used for encapsulation.
For example, if a router receives an IPsec encapsulated Gre packet, then rule |
jump-target(name; Default: ) | Name of the target chain to jump to. Applicable only ifaction=jump |
layer7-protocol(name; Default: ) | Layer7 filter name defined inlayer7 protocol menu. |
limit(integer,time,integer; Default: ) | Matches packets until a given PPS limit is exceeded. Parameters are written in the following format:count[/time],burst .
|
log(yes | no; Default:no) | Add a message to the system log containing the following data: in-interface, out-interface, src-mac, protocol, src-ip:port->dst-ip:port, and length of the packet. |
log-prefix(string; Default: ) | Adds specified text at the beginning of every log message. Applicable ifaction=logorlog=yesconfigured. |
out-bridge-port(name; Default: ) | Actual interface the packet is leaving the router if the outgoing interface is a bridge |
out-bridge-port-list(name; Default: ) | Set of interfaces defined ininterface list. Works the same asout-bridge-port |
out-interface(; Default: ) | Interface the packet is leaving the router |
out-interface-list(name; Default: ) | Set of interfaces defined ininterface list. Works the same asout-interface |
packet-mark(no-mark | string; Default: ) | Matches packets marked via mangle facility with particular packet mark. Ifno-markis set, the rule will match any unmarked packet |
packet-size(integer[-integer]:0..65535; Default: ) | Matches packets of specified size or size range in bytes |
per-connection-classifier(ValuesToHash:Denominator/Remainder; Default: ) | PCC matcher allows dividing traffic into equal streams with the ability to keep packets with a specific set of options in one particular stream |
port(integer[-integer]: 0..65535; Default: ) | Matches if any (source or destination) port matches the specified list of ports or port ranges. Applicable only ifprotocol is TCP or UDP |
protocol(name or protocol ID; Default:tcp) | Matches particular IP protocol specified by protocol name or number |
priority(integer: 0..63; Default:) | Matches the packet's priority after a new priority has been set. Priority may be derived from VLAN, WMM, DSCP, MPLS EXP bit, or from the priority that has been set using theset-priorityaction. |
random(integer: 1..99; Default: ) | Matches packets randomly with a given probability |
routing-mark(string; Default: ) | Matches packets marked by mangle facility with particular routing mark |
src-address(Ip/Netmaks, Ip range; Default: ) | Matches packets whose source is equal to specified IP or falls into a specified IP range. |
src-address-list(name; Default: ) | Matches source address of a packet against user-definedaddress list |
src-address-type(unicast | local | broadcast | multicast; Default: ) | Matches source address type:
|
src-port(integer[-integer]: 0..65535; Default: ) | List of source ports and ranges of source ports. Applicable only if a protocol is TCP or UDP. |
tcp-flags(ack | cwr | ece | fin | psh | rst | syn | urg; Default: ) | Matches specified TCP flags
|
src-mac-address(MAC address; Default: ) | Matches source MAC address of the packet |
tcp-mss(integer[-integer]: 0..65535; Default: ) | Matches TCP MSS value of an IP packet |
time(time-time,sat | fri | thu | wed | tue | mon | sun; Default: ) | Allows to create a filter based on the packets' arrival time and date or, for locally generated packets, departure time and date |
to-addresses(IP address[-IP address]; Default:0.0.0.0) | Replace the original address with the specified one. Applicable if action is dst-nat, netmap, same, src-nat |
to-ports(integer[-integer]: 0..65535; Default: ) | Replace the original port with the specified one. Applicable if action is dst-nat, redirect, masquerade, netmap, same, src-nat |
Property | Description |
---|---|
bytes(integer) | The total amount of bytes matched by the rule |
packets(integer) | The total amount of packets matched by the rule |
To show additionalread-onlyproperties:
ipv6/firewall/nat/print stats