By the way, if UPnP was ever a problem in terms of NAT security,
obviously the problem is much worse in IPv6, since there is not even
any NAT and all devices are always exposed.
Now even though you are living together in a "house" all "residents"
now need to solve these issues on their own.
This makes it almost impossible to run any kind of home server,
because the default setup is going to be: access internet services,
don't worry about local network access or even if you do have it,
accept that you will be at risk of getting hacked or exposed
constantly.
The exposure might be dealt with by the protocols (if they work) but
there is a high chance they won't, because the model at the
beginning is that everything is exposed.
If your premise is complete exposure, if that is what you intend and
want, then you won't be able to achieve meaningful protection in any
way.
If you banish all clothes and then try to find a way for people to
not see you naked, that won't work.
"So we have no clothes anymore, how can we find a way for people to
not be cold and to not be seen naked? Hmmm difficult".
You know, maybe don't banish the clothes.
Maybe don't banish NAT.
Maybe don't banish localized, small, understandable networks.
Maybe don't banish the boundary between the local and the remote.
Maybe not do away with membranes.
Nature has designed life around membranes, all cells have membranes.
"Cell membranes protect and organize cells. All cells have an outer
plasma membrane that regulates not only what enters the cell, but
also how much of any given substance comes in."
The basic topology for IPv6 is so deeply misunderstood and
misdesigned from my perspective....
That it tries to create a membrane based purely on subnet masking.
And that's not a safe thing because a misconfigured system
automatically gives access. You want all internal addresses to be in
the same pool (as the router accepts a list or segment of adddress
from the ISP). The router is supposed to distribute those addresses
across clients while allowing them to know and find each other, ie.
by giving them the information on the subnet masks they are supposed
to use. The subnet mask is everyone's potential and right to not
care about any fixed boundaries between the local and the remote
(wide) network.
Maybe you can call it empowerment (everyone has a public address).
But it is also a huge loss of control. It's a loss of power.
Networks that can't be configured by any individual person.
Inability to shield anything from anyone in a real sense.
Local clients (ie. Linux and Windows computers and Mac computers and
Android phones) now requiring the intelligence to safely distinguish
between local and remote services, a problem that was never even
solved in IPv4, let alone that IPv6 even stands the slightest chance
of meaningfully solving it.
All of these devices needing to perfectly cooperate in order to find
and know the local network. Particularly if there is a segmentation
between "secure" and "insecure" or between "guest" and "resident".
And what if you want two subnet masks for a different purpose? A
managed switch has means to physically separate (in a way) two
different nets on the same cables. You may be wanting to run a
network of servers in your home that is separate from your local
home network. You lose pretty much all control in being able to do
this effectively.
Even if IPv6 gives some freedom or liberation, it is mostly due to
the router allowing this. Everyone his own IP address. Everyone his
own front door. People love that, in a way. But it also means you no
longer have a family.
Op 20-3-2016 om 16:05 schreef Xen:
Op 20-3-2016 om 11:56 schreef Tim Coote:
Is it intended that NetworkManager will conform to /support /
exploit the Homenet network name and address assignment and
routeing protocols (http://bit.ly/1LyAE7H),
either to provide end to end connectivity or to provide a
monitoring layer so that the actual state of the network
topologies can be understood?
Home or small networks seem to be getting quite
complex quickly and way beyond what consumers can be expected
to understand/configure/troubleshoot/optimise, with one or two
ISP’s per person (via mobile phone + wifi connectivity) + an
ISP for the premises; and wildly differing network segment
performance characteristics and requirements (e.g. media
streaming vs home automation).
I can't answer your question but in my mind there are only 2 or 3
issues mostly:
- a mobile phone that connects through home wifi, external wifi,
or mobile/3G/4G connectivity, may access predominantly internet
(cloud) services and not have access to anything in the home
network by default, and there is not really any good platform to
enable this.
(all that it needs is a router really that provides loopback, an
internet domain, and a way to access LAN services both from the
outside and inside) (but most people don't run services on their
network anyway except when it is some appliance-like NAS)
(but If you're talking about media streaming and home automation,
this outside/inside access thing becomes important)
Other than that there is no issue for most people. If your mobile
app is configured with an internal IP address, you get in trouble
when you are outside the network, if you configure it with an
external address, not all routers will allow you to access it from
the inside.
For example the popular (or once popular) D-Link dir-655 router
doesn't allow it, while all TP-Link routers are said to support it
(a support rep from China or something demonstrated it to me with
screenshots).
- I don't think IPv6 is a feasible model for home networking and
configuring it is said to be a nightmare even for those who
understand it. I don't think it solves any problems, or at least
doesn't solve it the right way that makes it easier to use home
networking. I think IPv6 is a completely flawed thing to begin
with, but as long as it stays on the outside, I don't care very
much. NAT shielding from the outside is a perfect model. Anyone
requiring network access from the outside should be in a situation
where they are able to configure it (port forwarding). Even where
you could (as an advanced user) require 2 or more IP addresses at
home, you still don't need a 100 or 65535. IPv6 in the home solves
problems practically no one has, and opens up every device to
internet access without any firewall in between. If home
networking is only defined by subnet mask, it becomes a pain to
understand how you can shield anything from anyone. You have to
define your home network in public internet IP address terms. No
more easy 192.168.1.5 that even non-technical users recognise. If
there's no NAT, you're lost, and only wannabe "I can do
everything" enthusiasts really understand it.
When I read the Charter of that homenet thing, it is all about
IPv6: https://datatracker.ietf.org/wg/homenet/charter/
Their statements are wildly conflicting:
"While IPv6 resembles IPv4 in many ways, it changes address
allocation principles and allows
direct IP addressability and routing to devices in the home from
the Internet. ***This is a promising area in IPv6 that has proved
challenging in IPv4 with the proliferation of NAT.***" (emphasis
mine)
"End-to-end communication is both an opportunity and a concern as
it enables new applications but also exposes nodes in the internal
networks to receipt of unwanted traffic from the Internet.
Firewalls that restrict incoming connections may be used to
prevent exposure, however, this reduces the efficacy of end-to-end
connectivity that
IPv6 has the potential to restore."
The reality is of course that people (and games/chat applications)
have always found a way around the problems. UPnP port forwarding,
while not perfect, has been a make-do solution that basically
allowed any application end-to-end connectivity as long as you
don't require fixed ports (few people do).
The internet has been designed around two basic topologies:
client-server and peer-to-peer. Client-server has never been
challenging with NAT, only peer-to-peer has. For example, online
games always use a client-server model in which NAT is a complete
non-issue. The only times when NAT becomes an issue is with
direction connections between two clients (peers) which is a
requirement mostly for communication applications and/or
applications that require high bandwidth (voice, video).
Ever since UPnP these devices can simply go to any router on the
network and say "open me up" and they'd have access. I would have
preferred the thing to be a little different (didn't really look
at the specs, but you have a feel for it) giving more control to
the home network operator (the way it is now, it is a haven and a
heaven for viruses, trojans and backdoors) but essentially as soon
as a central server coordinates the setup between two peers, they
are done and the issue is solved. Servers by definition do not
need to contact clients on their own. Devices with random
addresses by definition do not need to be reached via a static,
well-defined or well-known address that lives outside of any
server that negotiates access to it.
If a server is negotiating access to it anyway, it can also help
in setting up the connection and this has always been done, ie.
instant messenger chat applications (MSN, Yahoo, etc.) while being
very simple programs, worked through this model. If you talk about
a modern age of smartphone apps, they all work through the same
model: cloud interfaces, messages often being sent through the
server, and in other cases peer-to-peer connections being setup by
central (cloud) servers.
The challenges to MY mind are really: how can I setup
home-controlled "cloud" services that seemlessly integrate into,
or sync with, cloud based (backup) solutions? How can I bridge the
local and the remote? That is MY issue.
You can either setup some NAS in your home that has cloud, or you
can acquire it from a remote service provider, but you can't do
both or anything in between, is what I mean.
And yet, they say:
"Home networks need to provide the tools to handle these
situations in a manner accessible to all users of home networks.
Manual configuration is rarely, if at all, possible, as the
necessary skills and in some cases even suitable management
interfaces are missing."
So basically they want to create an automated, complex algorithm
and protocol-based resolving architecture that will solve an
incredible difficult problem that was created by introducing
something that was not needed.
"Restore end-to-end connectivity". End-to-end connectivity was
never an issue after the advent of UPnP port forwarding. You could
redesign UPnP (or I could) and the system is really simple in
essence, and essentially what you need even if it opens op
backdoors and potential for acquired malware, but that's the same
way everywhere: your kids can open up the windows and doors to
your house, unless you lock those doors and windows.
You don't go and solve that problem by giving all the kids and
residents in your house a front door of their own, and then worry
about how you can prevent unwanted access to those doors and
windows.
And when everyone has a front door of their own, there are no more
hallways, and then you go and think about how you are going to
solve the problem of having no hallways.
And then you start thinking about several kinds of locks and keys,
and having locks to your doors that only residents have, or locks
that also outsiders can access, and how can you distribute those
keys and locks, and it is too complex for people to do it on their
own, so we need computers to solve it for us......
And you've really lost it. You've lost your sanity and your
sensibility.
In my eye NetworkManager can't even do the basic thing of a NAT
IPv4 home network right. Now you want it to provide advanced tools
for topology monitoring.
I would redesign NetworkManager to begin with, but that's just me.
There are some bad choices being made that create a huge amount of
problems as in most current software. I see no end to the nonsense
that is being introduced, pardon my language. I mean in general,
not here. I think most people have a bad feel for what makes
elegant software, and you can see it in systems such as:
- systemD,
- linux software raid (mdadm)
- any number of thing that I don't know enough about.
Linux people propose a mindset of "don't think, just do" or "don't
criticise, just get your hands dirty" ie. they profess a belief in
not really thinking things though, but just getting to work on the
thing that already exist. Then maybe, after you have earned your
reputation, maybe you will come to be in the position where you
can design stuff. And the open source development model favours
this.
I was involved in the creation or thinking up of some new feature
of the Log4J logging platform for java. What happened is that an
outsider other than me suggested a new feature and showed a proof
of concept. I tried to discuss the architecture of what was really
needed, but the project lead just took the idea, whipped up a
solution in no time, that coincided with what was already there,
pushed it, had a vote on it, and basically just made it a part of
the core package. The original person and myself were left out in
the dark and the original person was never heard of again.
Log4J version 2 is flawed and some of it requires a lot of
thinking, but the solution that was included basically uses the
existing architecture to the max thus requiring very little
coding. It means it also has all the flaws that the main
architecture has.
If an architecture has flaws, the more it tries to do, the bigger
the problems become.
If your foundation is flawed, it doesn't matter very much if you
try to do very little. The more you try however, the bigger the
systems are that you build on top of it, and the more of a cancer
they become.
I'm sorry if I make it sound if I feel this way about
NetworkManager, in essence it is still a small system. But there
is no end to the problems you create if you are going to try to
implement any sense of protocol or complex problem solving thing
in this. Even if you want a monitoring tool for IPv6 resolution
protocols, you'd need to try to make it as standalone as possible,
and to try to reduce the contact surface with NetworkManager in a
way. In a sense of okay it's there, we can write a plugin for
using it, but we have to stay a bit remote from it so its problems
don't affect us as much. Like the idea of being a more older
brother or a more mature mentor ;-).....
That's when you talk about monitoring.
If you want to actively support those protocols. There are three
scenarios:
1. create a different version of NetworkManager that adds onto the
core and wraps around it in a way. Don't make this part of the
core, try to keep creating and fixing and evolving the core on its
own.
2. try to create independent libraries that contain all the
complexity and mathematics of the resolution protocols, that are
easy to use and that provide a simple API that NM can hook onto,
which means both don't affect each other as much, and if NM wants
to provide an interface to handling these things, that's fine, the
complexity of it will just be up to a library writer to solve.
3. Keep evolving or redesign the core product. Solve the problems
it has. Then do any of the above.
All and all what you want is more elegancy and simplicity in the
entire thing, even if the IPv6 addition is a tangle of wires on
its own accord.
You know, make it easy for people to switch between IPv4 and IPv6,
or even make it possible to use both at the same time, I don't
know.
Sorry for the rant. If everything in this life was up to me, I
would:
- throw away IPv6 and design something that actually made sense
- change NetworkManager by thinking about the interface to users
first and then designing everything around that
- dump Linux altogether and try to exit this planet ;-).
I would do a lot of other things. There is no end to the projects
I would undertake. There is also no end to the tears I witness
every day in my life.
I'll see you, and sorry for the implications that this is in any
way a flawed product, I do believe there is a competitor to it now
(in the Linux world) but since this is your home bread and home
stead, pardon my offensive language. Please.
Regards.
Bart.
|