04.06.2026 23:48, Atanas Vladimirov пишет:
On 2026-06-04 21:48, kasak wrote:
Hello misc!
I have this tunnel on my router:
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1340
index 14 priority 0 llprio 3
groups: tun
status: active
inet 192.168.40.60 --> 192.168.40.60 netmask 0xffffffff
And this routes:
route -n show | grep tun
192.168.40/24 192.168.40.60 UGS 0 416 - 8 tun0
192.168.40.60 192.168.40.60 UHhl 1 2 - 1 tun0
192.168.40.60 192.168.40.60 UH 0 0 - 8 tun0
I want to route one of my local ips to this tunnel:
pass out inet from 192.168.0.150 route-to 192.168.40.1
And this work like a charm but only when remote host knows about my local
192.168.0.0/24 network.
Can I somehow first do nat-to 192.168.40.60, and after that do route-to
192.168.40.1?
To avoid having to add route on remote host?
Thank you in advance
Hi,
You just need something like this:
# NAT tun0
match out log on tun0 inet from 192.168.0.150 \
nat-to (tun0)
and you can drop your pass .... route-to rule
I'm afraid it's not so easy :(
pflog is silent, nothing works.
Here is full pf.conf btw:
wan=em0
lan=em1
lan_net=$lan:network
table <tv> { 192.168.0.150, 192.168.0.151, 192.168.0.119 }
set skip on lo
block return # block stateless traffic
pass# establish keep-state
block in on egress
pass proto { icmp, ipv6-icmp }
pass in on $wan proto { tcp, udp } to port { domain, domain-s }
pass in on $wan inet proto tcp to port { www, https }
pass out on $wan inet from $lan_net nat-to $wan:0
#pass out inet from <tv> route-to 192.168.40.1
pass out log on tun0 inet from <tv> nat-to (tun0)