Re: recommendations for web hosting in Canada?

2023-07-06 Thread Steve Williams

Hi,

Small town British Columbia here...

I know it's not what you are asking, but...

I have a Telus business plan (fiber) which gives me 2 static IP 
addresses and host it myself.  You can't do it on a "Residential" 
because some of the ports are filtered.  I had a huge battle with Telus 
over this and the only resolution was to get a business plan that 
"allows" me to run servers :(


A UPS and things are amazing.  Web (https via acme), email, nextcloud, etc.

I'm using a simple fanless system with a Canadian source 
(https://ca.protectli.com/vault-2-port/)


If you have any questions, don't hesitate to reach out to me.

Cheers,
Steve W.

On 06/07/2023 10:31 p.m., Jonathan Thornburg wrote:

I'm looking for a web hosting provider based in Canada.  Performance
isn't critical (the websites will be relatively small, static, and
low-traffic), but I'd like a firm whose customer support doesn't
core-dump if I mention Perl or OpenBSD.  Any recommendations?

Thanks,




recommendations for web hosting in Canada?

2023-07-06 Thread Jonathan Thornburg
I'm looking for a web hosting provider based in Canada.  Performance
isn't critical (the websites will be relatively small, static, and
low-traffic), but I'd like a firm whose customer support doesn't
core-dump if I mention Perl or OpenBSD.  Any recommendations?

Thanks,
-- 
-- "Jonathan Thornburg [remove -color to reply]" 
   currently on the west coast of Canada
   "!07/11 PDP a ni deppart m'I !pleH" -- slashdot.org page footer, 2022-10-16
   "eHpl !'I mrtpaep dnia P PD1 /107" -- slightly more plausible message given
 the PDP-11's little-endian byte order



Re: IPsec "road warrior" VPN not getting set up properly.

2023-07-06 Thread Anthony Coulter


> veering slightly from the topic (typical setup for a server host would
> not be to use DHCPv6 but just statically route another block - usually a
> /56 or /48), but...

I don't doubt this is typical for serious network operators. But I
would counter that for every user who is in a position to request a
statically-routed /48 there are dozens if not hundreds of us who have
one /64 at home and another /64 on each of our VPSes.


> (to request a prefix be routed to you, you need a DHCPv6-PD client,
> not a server)

Oops, correct. I was thinking "DHCPv6 daemon" when I typed it. The
point is that configuring all those subnets and static routes is an
awful lot of extra work when all I want to do is set up a VPN proxy.


> why when people are looking for dhcpv6 software do they always find that
> unmaintained-for-years run-the-whole-lot-as-root wide-dhcp6 thing?
>
> use dhcpcd if you want a client that can do DHCPv6. the most recent release
> was a couple of months ago, it's sensibly written, uses pledge where possible,
> and has decent privilege separation for the parts which can't pledge).

Noted. I'm betting the reason people keep finding wide-dhcpv6 is that
it is the only result for "pkg_info -Q dhcpv6". I used to search
package descriptions at https://openports.se but that site is now
defunct. It would be great if pkg_info could search descriptions as
well as names, but so far none of the ideas that I think would be great
hold much appeal to anyone else.


> picking one other bit..
>
>> I would also suggest comparing the "hackiness" of NDP proxying to the
>> hackiness of NAT, which is how we solve this same problem in IPv4.
>
> it might be how some people solve it for v4. others solve it in a non-hacky
> way which is exactly the same as the non-hacky way for v6; put the vpn clients
> on a different subnet that's routed to the vpn gateway.

I would note here that "some people" includes the OpenBSD FAQ. See:
https://www.openbsd.org/faq/faq17.html#clientikev2

In any event, most of us can't readily get extra publically-routable
IPv4 subnets. According to Google a /24 costs about $9000 right now. I
could make do with a /28 since I only really want to connect three
servers at a time, but how do I get the /28 routed to my server? Either
I track down an ISP that provides these directly or else I have to set
up BGP. All this to connect my laptop to a VPN proxy server! Most
people use NAT for IPv4 because that's all most people can afford.


Maybe I'm missing something here. Why is NDP proxying considered so
distasteful? Can it cause technical problems down the road? I can see
how cycling the client through temporary addresses gets complicated and
has a lot of moving parts, but NDP proxying involves making a change to
the routing table (which iked already has to do whenever VPN clients
connect and disconnect) and its only effect (as I understand it) is
announcing to nodes on the local link that the VPN tunnel host is a
suitable destination for the address in question.

Consider the laptop-connecting-to-home-VPN-from-coffee-shop use case.
Suppose my home network is a /56 and I allocate a /64 for address
assignments to VPN clients like that laptop. Now: how do I make sure
that traffic on my local network which is destined for the laptop
actually gets sent to the laptop? Am I supposed to configure static
routes on all of the nodes on my home network that the laptop might
want to communicate with? That doesn't sound right. I'm guessing the
right way to advertise an entire subnet is with router advertisement
messages, so I would want to configure rad to support this. But that's
still a whole other thing to configure. So instead of using neighbor
advertisements to direct two or three addresses at a time to the VPN
proxy host, I'm using router advertisements to direct a whole subnet to
it---which seems reasonable if I could justify the hassle of getting
that whole subnet configured and advertised properly, but again, that's
a *lot* of trouble.

I recognize that there are other ways to get my individual use case to
work without requesting changes to iked. If I don't expect to have more
than 16 simultaneous connections, I could constrain iked to allocate
addresses from a /124 subnet and add those 16 addresses to the NDP
proxy list at server startup to get the equivalent of static routing
while still not having to reconfigure the ISP's (or hypervisor's)
router. But I would consider *that* to be hackier, because now I really
am using NDP to advertise a subnet instead of just advertising the
addresses that are actually in use. The other option I have on the
table is a shell script that runs as a daemon with root privileges,
monitors /var/log/daemon for IKEv2 connection and disconnection
events, and runs ndp -s and ndp -d appropriately. But if you thought
wide-dhcpv6 was bad for not being privilege separated, you'd hate my
shell script. And I would too! That's the point. This is something iked
could do automatically.

I'm 

Re: IPsec "road warrior" VPN not getting set up properly.

2023-07-06 Thread Zack Newman

Yeah, I don't have the interest to get into it about this; but I find
it (informally) inconsistent to take an ideological stance against NAT
and not have a similar stance against NDP proxying. Networking is a lot
cleaner when it can be reasoned about with a rudimentary grasp of graph
theory where a network can roughly be seen as a complete graph and a
node belonging to multiple complete graphs represents a destination in
a routing table.

It is not challenging at all to use route(8) to subnet from a routed
/48 or /56. How many subnets you want is up to you. If you want to
only carve out a single /64 for all your hosts, then do so. You can
then avoid DHCPv6 altogether and use rad(8) to send routing
advertisements allowing clients to use SLAAC which is the much more
popular way for clients to automatically configure IPv6 addresses.

Also not sure where you heard that ICMP does not work with NAT. Surely
you don't believe that. Go ahead and use ping(8) on any device that
relies on NAT to talk to the outside world and witness how it
"magically" works. ICMP uses the Query ID in lieu of a port number.

Will NDP proxying work? Depending on what you want, sure just like NAT
will likely work. Relying on a simple routing table is far more ideal.
NDP proxying is also vulnerable to NDP cache DoS. You can use your
favorite search engine to learn why NDP proxying is not as good as
simple routes.

If you want to use NAT or NDP proxying, then be my guest. It is one
thing to not be willing to leave your ISP because you likely don't have
many to choose from, but that is not the case for VPS providers.

Challenge: reach out to the maintainers of popular NDP proxying daemons
and inquire if they think NDP proxying is "clean" when compared to a
simple routing table. In NDP proxying a host is responsible for
responding to Neighbor Solicitation messages for IPs that don't belong
to it. Hm, sounds a lot like NAT where a host uses its IP to masquerade
the IPs of other hosts as opposed to traffic being handled by the
actual host it was intended for.



Re: IPsec "road warrior" VPN not getting set up properly.

2023-07-06 Thread Stuart Henderson
veering slightly from the topic (typical setup for a server host would
not be to use DHCPv6 but just statically route another block - usually a
/56 or /48), but...

On 2023-07-07, Anthony Coulter  wrote:
> The trouble with subnets is that they have to be configured. I would
> have to install a DHCPv6 server to request that subnet. OpenBSD doesn't
> have one in base so I have to install the wide-dhcp6 package.

(to request a prefix be routed to you, you need a DHCPv6-PD client,
not a server)

why when people are looking for dhcpv6 software do they always find that
unmaintained-for-years run-the-whole-lot-as-root wide-dhcp6 thing?

use dhcpcd if you want a client that can do DHCPv6. the most recent release
was a couple of months ago, it's sensibly written, uses pledge where possible,
and has decent privilege separation for the parts which can't pledge).


picking one other bit..

> I would also suggest comparing the "hackiness" of NDP proxying to the
> hackiness of NAT, which is how we solve this same problem in IPv4.

it might be how some people solve it for v4. others solve it in a non-hacky
way which is exactly the same as the non-hacky way for v6; put the vpn clients
on a different subnet that's routed to the vpn gateway.




Re: IPsec "road warrior" VPN not getting set up properly.

2023-07-06 Thread Anthony Coulter
Summary of this email: I repeat my argument that automatic NDP
proxying is the right way to handle the "road warrior" use case for
IPv6. The reasons I'm pushing this so hard are that (1) including this
functionality in iked would be much more robust than any hacky script I
could write that tries to monitor routing state changes, and (2) both
of the responses to my routing question claim that the correct way to
connect a laptop to my VPN is to negotiate with my ISP to get a larger
subnet which just sounds bonkers when "ndp -s" solves the technical
problem so perfectly. Then I repeat my offer to fund this solution.

> While I suppose the /64 your VPS provider gives you is "enormous"
> compared to IPv4, I don't find such a comparison relevant since IPv6
> and IPv4 are entirely different protocols. In fact I actually think it
> is small. Why? RFC 6177 (https://datatracker.ietf.org/doc/html/rfc6177)
> recommends that /48 or at least /56 subnets be given to end sites, so
> your _small_ /64 violates that recommendation. Hell, even my lowly
> residential ISP, Xfinity/Comcast, gives me a /60. Unfortunately a great
> many ISPs and VPS providers violate this. Not sure if it is due to
> incompetence where they incorrectly think such allocations are
> "wasteful" or what. IPv6 not only restores end-to-end communication the
> way IPv4 initially started, but it is designed so that sites have many
> _subnets_. This brings me to the next point.

The trouble with subnets is that they have to be configured. I would
have to install a DHCPv6 server to request that subnet. OpenBSD doesn't
have one in base so I have to install the wide-dhcp6 package. Then I
have to configure it. Can a host on my home network request a /60 from
my ISP's router? Or do I have to replace the ISP's router with my own
device in order to make that request? If I replace the ISP's router, I
have to provide all the other router functionality, like the firewall
and IPv4-style DHCP. Then there is the host on which iked is running:
it needs to advertise ownership of this subnet so I have to configure
rad properly. This is insane! I'm not trying to sell VPN services to
customers; I just want a simple proxy for my desktop, a couple of
laptops, and maybe a friend or two. It's the simple sort of low-volume,
hobbyist thing that I *could* accomplish with a layer 2 VPN that
tunnels entire Ethernet frames to the remote server---but that would
also be a huge pain to configure because now I have to set up and
configure a bunch of extra tunnel interfaces.

The "road warrior" VPN (I hate that name) described in the OpenBSD FAQ
is actually really simple to set up. You just have to copy the
/etc/iked/local.pub keys into the appropriate places, writing a pair
of very short /etc/iked.conf files, and then rcctl enable iked and
away we go! Almost. The one thing iked doesn't do is "last-step
routing" between the gateway router and the IKEv2 responder. So for
IPv4 we also have to enable nat in /etc/pf.conf, and for IPv6 we have
to *either* switch from Vultr to a fancier VPS and do a crapton of
configuration to set up the subnets, *or* use NDP proxying to advertise
that final hop.

NDP proxying is simple. It's also elegant. What does it take for the
proxied IP address to be globally routable? Three things have to
happen: the Internet has to deliver the packet to the IKEv2 responder's
gateway router. The gateway router has to send the packet to the IKEv2
responder. And the IKEv2 responder has to send the packet into the
IPsec tunnel. The first step (internet to gateway router) is the
fundamental job of the Internet and requires no extra work on our part.
The last step (pushing the packet into the tunnel) is handled by iked.
All that's left is the middle step: getting the packet from a router to
a host on the same link. How do we do that? This is the problem NDP was
designed to solve. I don't think it's hacky or unclean at all. The
responder wants to tell the hosts on the local link that it is the
link-layer endpoint for a single destination address that is on the
local link's subnet. That's all NDP does: it instructs hosts on the
lcoal link to update their local routing tables. It's perfect for this
purpose. And it's even *more* perfect because OpenBSD implements this
functionality by updating its own internal routing tables, which iked
already does. So it would be even *more* simple if iked set up the
NDP proxying automatically instead of forcing me to run a script every
time I bounce the connection.

I would also suggest comparing the "hackiness" of NDP proxying to the
hackiness of NAT, which is how we solve this same problem in IPv4. If
we put aside all the political issues around NAT, it's still a really
janky process. It only works for TCP and UDP, so you can't send ICMP
messages or use any other fancy experimental protocols. You can't
listen on ports unless you create specific firewall rules to forward
those ports. The server has to maintain per-connection state to rewrite

Re: IPsec "road warrior" VPN not getting set up properly.

2023-07-06 Thread Anthony Coulter


First, thank you! The "ndp -s" trick does exactly what I need. (I did
not need to consider ndp-reflector.) The rest of this email could be
summarized as "That works so perfectly I would pay for someone to make
it automatic; meanwhile the other things I asked about were in fact
bad ideas and I will stop wishing for them."

> What you're actually trying to do here is respond to NDP requests as a
> proxy. It's not a clean way to do it (the clean way is "upstream routes
> you a subnet"), but some people are trying to do this on cheap services
> that are only intended for a single host connection and that's about the
> only way.
>
> In this case you might be able to do it with ndp -s, as the "proxied"
> address is down a tunnel and not going to respond to NDP itself anyway,
> so it doesn't hit the main problem for arp/ndp proxy in OpenBSD which
> is that it answers on all interfaces, you can't tie it to one in
> particular.
>
> (For some other use cases, where you're on a /64 behind an ISP router,
> and have other hosts on a different ethernet interface, it looks like
> https://github.com/toru-mano/nd-reflector might do the trick).

What makes it unclean? (The "ndp -s" trick is simple and works
perfectly; I'm trying to understand why it's architecturally bad.) The
use case is:
- I have a whole /64 subnet.
- I cannot easily modify the gateway router on this subnet.
- I want to connect a single client to this network over a tunnel that
  is administered by a host (not the gateway router!) on that network.
- I want the client to be assigned a single [dynamic] IPv6 address on
  the /64 subnet. This address must be globally routable!
- IPv4 is explicitly out-of-scope because addresses are hard to come
  by; I'm fine just using NAT for IPv4.

These items describe both my VPS (where the hypervisor has allocated me
an entire /64 subnet but only delivers packets to the vio0 interface
when their destination addresses can be found among my NDP neighbor
advertisements) and my physical network at home (where again the whole
/64 is mine, but replacing the ISP-provided router is a nontrivial
affair).

Since iked already supports dynamic address assignments, that part is
noncontroversial. What is needed for this address to be globally
routable? The Internet at large already knows how to look at the top
64 bits of an address to figure out what gateway router to deliver the
packet to, and if the packet somehow reaches the IKEv2 responder, iked
has already set up the routes necessary to push the packet down the
tunnel to its final destination. All we're missing is the step between
the gateway router and the IKEv2 responder. They're on the same link.
What is the proper way to for iked to announce the dynamic IPv6 address
to other hosts on the local link? NDP. And it turns out that OpenBSD
already has a utility in base that does NDP proxying. It seems like
this should be the recommended solution for IPv6. Taking responsibility
for routing the whole /64 subnet just to support a couple of IPsec
tunnels seems wrong. I'm not trying to bridge networks; I just want to
use an IPsec tunnel to proxy traffic from my laptop. The "ndp -s"
trick seems simple and elegant, and it does exactly what we need it to
and no more.

I would go a step further and ask if *this* functionality could be done
automatically by iked. I looked at the code in the ndp utility and it
appears to work just by writing messages to a kernel routing socket.
Seeing as iked *already* writes messages to a routing socket whenever a
flow starts or stops, it seems like it would be easy (and
architecturally sound) to add an option to tell iked to do the
equivalent of calling "ndp -s $client_addr $server_mac proxy" when a
client connects and "ndp -d $client_addr" when it disconnects---just
treat it like any other routing step. It could be enabled with a
configuration option like "ndp-proxy vio0". (The point of the interface
name is to free me from the burden of entering the MAC address by
hand.) The option would only be valid for connections with a "config
address" option where the address is an IPv6 address, because of course
that is the address which would be added to the NDP proxy list.

I would gladly pay $200 to a developer who can add this functionality
to iked. That's one reason I care so much about whether this is really
a "clean" solution. If it isn't clean then maybe adding it isn't such a
good idea. But to *me* it looks like iked is already responsible for
updating routing information to match the currently-active flows, and
the code in the ndp utility suggests that from the kernel's point of
view, neighbor advertisements are a routing issue controlled through a
routing socket. I can automate this process with a script, but I really
do think this is the right way to do "road warrior" IPv6 connections.


>> So what would be fantastic is if instead of
>> putting "config address 2001:db8:2::/64" in the responder's iked.conf,
>> I could put "config inet6 autoconf vio0" 

dmesg Framework 13, 13th gen

2023-07-06 Thread Volker Schlecht

Works:

- Touchpad (it sucks, but it works)
- Camera
- Microphone
- WiFi
- Ethernet with the Framework Ethernet adapter
- HDMI output with the Framework HDMI adapter
- DRM
- Suspend (zzz)

Doesn't work:

- Bluetooth (scnr)
- Resume ... it comes back to life in that it shows the contents of 
ttyC0, and will eventually emit warm air. It doesn't react to anything 
but a hard reset, though. That makes suspend only half as useful :-)


Not tested yet:

- DP Adapter
- micro-SD Adapter


I'm booting from the Framework external storage module, which gave me 
some sync failures for every mounted partition exactly once in a series

of unsuccessful attempts at making it suspend *and* resume.

Overall nice machine, though!


OpenBSD 7.3-current (GENERIC.MP) #1270: Wed Jul  5 21:29:08 MDT 2023
dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 34005487616 (32430MB)
avail mem = 32955215872 (31428MB)
random: good seed from bootblocks
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 3.4 @ 0x3efb8000 (54 entries)
bios0: vendor INSYDE Corp. version "03.03" date 04/07/2023
bios0: Framework Laptop (13th Gen Intel Core)
efi0 at bios0: UEFI 2.8
efi0: INSYDE Corp. rev 0x303
acpi0 at bios0: ACPI 5.3
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP UEFI SSDT SSDT SSDT SSDT SSDT SSDT SDEV SSDT 
TPM2 SSDT LPIT WSMT SSDT SSDT DBGP DBG2 NHLT ECDT HPET APIC MCFG SSDT 
DMAR SSDT SSDT SSDT SSDT FPDT PHAT ASF! BGRT
acpi0: wakeup devices PEG0(S4) PEGP(S4) PEGP(S4) PEG2(S4) PEGP(S4) 
XHCI(S4) XDCI(S4) HDAS(S4) CNVW(S4) RP01(S4) PXSX(S4) RP02(S4) PXSX(S4) 
RP03(S4) PXSX(S4) RP04(S4) [...]

acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpiec0 at acpi0
acpihpet0 at acpi0: 1920 Hz
acpimadt0 at acpi0 addr 0xfee0: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: 13th Gen Intel(R) Core(TM) i5-1340P, 4590.02 MHz, 06-ba-02
cpu0: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,PKU,WAITPKG,PKS,MD_CLEAR,IBT,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu0: 48KB 64b/line 12-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 
64b/line 10-way L2 cache, 12MB 64b/line 8-way L3 cache

cpu0: smt 0, core 0, package 0
mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges
cpu0: apic clock running at 38MHz
cpu0: mwait min=64, max=64, C-substates=0.2.0.2.0.1.0.1, IBE
cpu1 at mainbus0: apid 8 (application processor)
cpu1: 13th Gen Intel(R) Core(TM) i5-1340P, 4590.14 MHz, 06-ba-02
cpu1: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,PKU,PKS,MD_CLEAR,IBT,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu1: 48KB 64b/line 12-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 
64b/line 10-way L2 cache, 12MB 64b/line 8-way L3 cache

cpu1: smt 0, core 4, package 0
cpu2 at mainbus0: apid 16 (application processor)
cpu2: 13th Gen Intel(R) Core(TM) i5-1340P, 4390.53 MHz, 06-ba-02
cpu2: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,PKU,PKS,MD_CLEAR,IBT,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu2: 48KB 64b/line 12-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 
64b/line 10-way L2 cache, 12MB 64b/line 8-way L3 cache

cpu2: smt 0, core 8, package 0
cpu3 at mainbus0: apid 24 (application processor)
cpu3: 13th Gen Intel(R) Core(TM) i5-1340P, 4390.50 MHz, 06-ba-02
cpu3: 
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,SDBG,FMA3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,PKU,PKS,MD_CLEAR,IBT,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES
cpu3: 48KB 64b/line 12-way D-cache, 

Re: IPsec "road warrior" VPN not getting set up properly.

2023-07-06 Thread Zack Newman

While I suppose the /64 your VPS provider gives you is "enormous"
compared to IPv4, I don't find such a comparison relevant since IPv6
and IPv4 are entirely different protocols. In fact I actually think it
is small. Why? RFC 6177 (https://datatracker.ietf.org/doc/html/rfc6177)
recommends that /48 or at least /56 subnets be given to end sites, so
your _small_ /64 violates that recommendation. Hell, even my lowly
residential ISP, Xfinity/Comcast, gives me a /60. Unfortunately a great
many ISPs and VPS providers violate this. Not sure if it is due to
incompetence where they incorrectly think such allocations are
"wasteful" or what. IPv6 not only restores end-to-end communication the
way IPv4 initially started, but it is designed so that sites have many
_subnets_. This brings me to the next point.

You would like to rely on SLAAC for your VPN peers, but SLAAC will
likely not work on anything smaller than /64. Why? Because the first
64 bits of an IPv6 address is designated as the network identifier.
You already carved out some IPs from the /64 though which means you
have less than /64 to use for SLAAC inside the tunnel.

I used to use Vultr; but when they were unwilling to provide something
bigger than a /64 in addition to actually routing the entire block, I
left them. If you insist on using IPv6 without relying on NAT or NDP
proxying, then I recommend you find another provider. What you are
trying to do is trivial when IPv6 is done properly. I have a similar
setup myself except I use WireGuard, but I'm confident IKEv2/IPSec
would be easy to set up as well.



Re: Question regarding pf rules: block in on em0: ...

2023-07-06 Thread Zack Newman

On 7/6/23 06:14, Why 42? The lists account. wrote:

Hi,

I see that I was not clear enough.


You were not. One of the first things in your initial e-mail was the
following:

"While trying to debug the issue, it occurred to me that it could be a
network / pf problem. This doesn't seem to be the issue though, even
after I disable pf (pfctl -d), the scanner is still not seen."

Is it a pf problem or not? If it is the case your "scanner" thing
doesn't work with pf disabled and no active rules, then this entire
thread makes no sense as you are focusing on something that is not
relevant.

Next steps. Disable pf _and_ flush the rules. Confirm there are no
active rules with pfctl -s all. Run the following:

tcpdump -ntt -i em0 -w pkts.dat &

Check if your "scanner" thing works.

Case 1: it doesn't work. Reply to this thread closing it due to the
completely irrelevant nature of both its title and content since you
have an entirely separate issue you need to solve first. If you are
unable to figure it out, then start a new thread with a more relevant
title where you only focus on things that matter. The only part of that
thread that should mention pf is how you have it completely disabled,
so you know it is something else. In that thread include the contents
of the tcpdump.

Case 2: it does work. Reply to this thread retracting you false claim
that pf "doesn't seem to the the issue". In that response include the
contents of the tcpdump.

For added clarity, this tcpdump you show is with pf disabled and all
its rules flushed. The tcpdump you showed in the initial e-mail
clearly was with active pf rules.

In the event that you require some form of traffic manipulation (e.g.,
NAT), then obviously you cannot disable pf. In that situation, make
sure your pf.conf rules only contain something similar to the following:

set skip on lo
pass out quick on  inet from { :network
:network ... :network } nat-to  static-port
pass quick



Re: Question regarding pf rules: block in on em0: ...

2023-07-06 Thread Why 42? The lists account.


On Tue, Jul 04, 2023 at 10:42:39AM -0600, Zack Newman wrote:
> ...
> I am guessing you didn't flush the rules after disabling pf since
> clearly pf rules are still being used. Run pfctl -F all after disabling
> pf. Run pfctl -s all to verify there are no active rules.

Hi,

I see that I was not clear enough.

My question is not about how to disable pf, but rather why the packets
are see as "in" when coming from my own address, and, why they are
blocked i.e.

I noticed these block messages being logged when I click "discover/refresh" in 
simple-scan:

Jul 04 11:23:44.601042 rule 2/(match) block in on em0: 192.168.178.11.8612 > 
192.168.178.255.8612: udp 16
Jul 04 11:23:44.601051 rule 2/(match) block in on em0: 192.168.178.11.8612 > 
192.168.178.255.8610: udp 16
Jul 04 11:23:44.615516 rule 2/(match) block in on em0: 192.168.178.11.8612 > 
192.168.178.255.8612: udp 16
Jul 04 11:23:44.615523 rule 2/(match) block in on em0: 192.168.178.11.8612 > 
192.168.178.255.8610: udp 16
Jul 04 11:23:45.147239 rule 2/(match) block in on em0: 192.168.178.11.9609 > 
255.255.255.255.3289: udp 15 [ttl 1]
Jul 04 11:23:46.155868 rule 2/(match) block in on em0: 192.168.178.11.39413 > 
255.255.255.255.1124: udp 37 [ttl 1]

192.168.178.11 is my OpenBSD desktop (where of is running).

I don't understand what I'm seeing here ...

 1. Why am I seeing traffic coming _in_ from my own address? Is that not
slightly weird? Is it because it is _to_ the .255 broadcast address?

 2. And why is it being blocked? Do I have explicitly allow broadcast
traffic e.g. with rules to handle broadcast addresses? I don't think
I ever considered doing that before ...

The more I use pf, the less I seem to understand?

Danke im Voraus!

Robb.



Re: IPsec "road warrior" VPN not getting set up properly.

2023-07-06 Thread Stuart Henderson
On 2023-07-05, Anthony Coulter  wrote:
> OK, I've sorted out my network issues server but it turns out that I
> was misinterpreting the tcpdump output on my VPS. When an external
> computer tries to ping my client's virtual IP address, the VPS's
> gateway router is *not* forwarding the pings to my server where they
> can be shoved into the IPsec tunnel to the client. So it looks like
> the iked responder needs to send IPv6 neighbor advertisements for the
> allocated address after all. Is there a way to do this?

Your simplest options are either to ask upstream to route traffic to you
for the whole subnet (this will probably involve adding a new subnet and
routing it via the existing address), or NAT traffic so it comes from
the address the upstream router is expecting.

> I have tried two things so far:
>
> 1. Manually assign the [randomly allocated] IP address to the
>responder's physical network interface so it knows it has ownership
>of that address:
>
> # ifconfig vio0 inet6 alias 2001:db8:2::1234:5678
>
> Of course, this breaks the tunnel. When the responder sees packets with
> destination 2001:db8:2::1234:5678 it consumes them locally instead of
> routing them down the IPsec tunnel.

What you're actually trying to do here is respond to NDP requests as a
proxy. It's not a clean way to do it (the clean way is "upstream routes
you a subnet"), but some people are trying to do this on cheap services
that are only intended for a single host connection and that's about the
only way.

In this case you might be able to do it with ndp -s, as the "proxied"
address is down a tunnel and not going to respond to NDP itself anyway,
so it doesn't hit the main problem for arp/ndp proxy in OpenBSD which
is that it answers on all interfaces, you can't tie it to one in
particular.

(For some other use cases, where you're on a /64 behind an ISP router,
and have other hosts on a different ethernet interface, it looks like
https://github.com/toru-mano/nd-reflector might do the trick).

> Here is my vision of a perfect world. It's common for IPv6 nodes to
> request a new random IPv6 address every couple of hours; OpenBSD's
> inet6 autoconf does this by default. There is no shortage of IPv6
> addresses on a LAN, and the process of requesting new ones is pretty
> well standardized .

On a LAN, yes there's a common way to do it. Not so much over a tunnel
though.

> So what would be fantastic is if instead of
> putting "config address 2001:db8:2::/64" in the responder's iked.conf,
> I could put "config inet6 autoconf vio0" instead. Then iked would
> make sure that vio0 is using autoconf addresses and, if so, it would
> request a new address via SLAAC (preferably randomizing all 64 bits
> instead of just the bottom 32 bits like it does right now), assign
> that address to the client, configure all the routing, and then would
> somehow configure vio0 to claim ownership of that address for
> NDP neighbor solicitation purposes, but have the kernel *not* claim
> the address for routing purposes. The client config wouldn't change
> at all; it would still say "request address any".

autoconf privacy addresses require that old addresses stay active so
that long-running connections don't die. You're asking hell of a lot
from a number of different subsystems, some of which do not have a way
to handle this, to make it all work.


-- 
Please keep replies on the mailing list.