Re: very difficult routing problem

kasak <[email protected]>
Newsgroups gmane.os.openbsd.misc
Message-ID <[email protected]>
05.06.2026 20:21, Atanas Vladimirov пишет:
> On 2026-06-05 17:38, kasak wrote:
>> 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)
>
>
> Okay, try this:
>
> wan = "em0"
> lan = "em1"
> vpn = "tun0"
> vpn_gw = "192.168.40.1"
> lan_net = $lan:network
>
> table <tv> { 192.168.0.150, 192.168.0.151, 192.168.0.119 }
>
> set skip on lo
>
> pass out on $wan inet from $lan_net nat-to $wan:0
> match out log on $vpn inet from <tv> nat-to ($vpn)
>
> block return
> pass
>
> 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 in on $lan inet from <tv> to ! $lan_net route-to ($vpn $vpn_gw)
>
Thank you, it's finally working!

But I changed lines a little!

Here that it's look like now:

#tvs to vpn
pass out on tun0 inet from <tv> nat-to (tun0)
pass in on $lan inet from <tv> to ! $lan_net route-to 192.168.40.1


when it was "route-to (tun0 192.168.40.1)" pfctl returned synthax error.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.