I am quite stumped right now and this might just be my synapses tangled up real good...
So I wanted to setup i2pd and realized that it needs at least one exposed port. Setting this up for IPv4 was easy:
config redirect
option dest 'lan'
option target 'DNAT'
option src 'wan'
option src_dport '60066'
option dest_ip '192.168.2.1'
option dest_port '60066'
option name 'i2pd ipv4'
option family 'ipv4'
...But when I tried to do the same for IPv6, I noticed that my local device was not in the list of destination IPs and while taking a google trip around the documentation, there was mention of just using Traffic Rules instead of Port Forwarding.
Thing is, IPv6 is kinda the bane of my existence; I can never make it work right...
So how do I properly expose the 60066 port for IPv6?
Just tried that, and it still said it's firewalled.
Here is the config I used:
config rule
option name 'i2pd_ipv6'
option src 'wan'
option src_port '60066'
option dest 'lan'
option dest_port '60066'
option target 'ACCEPT'
option family 'ipv6'
Side note: Why is it so complicated, actually? On my Ubuntu server, all I would have needed to do was ufw allow 60066. Also, when reviewing the change in LuCi, and clicking the Edit button and picking a destination IP, I can actually see my local host in the list this time, which I could not on the Port Forwarding - interesting.
In general applications, clients choose a random port to originate their connection. Setting a fixed src_port will block those incoming connections.
The fewer conditions in a firewall rule, the more permissive it is. Once it is working you probably want to add a dest_ip to restrict to the one machine on the LAN. If your prefix from the ISP is subject to change, you can use the /-64 syntax to filter only on the last 64 bits of the IP (the interface ID which you control)