Re: on nmcli improvements or needs of improvement
- From: Xen <list xenhideout nl>
- To: Networkmanager list <networkmanager-list gnome org>
- Subject: Re: on nmcli improvements or needs of improvement
- Date: Thu, 19 May 2016 14:00:13 +0200
Francesco Giudici schreef op 19-05-2016 10:16:
Hi Xen,
thanks for sharing your thoughts, we are always glad to receive
advice
on how to improve NetworkManager and make it more user friendly.
There is already a nCurses interface to NM: nmtui (please, give it a
try!).
We found from the survey that only few know this tool but many of them
love it: this caught our attention and we are going to pay much more
attention to nmtui.
At the same time, we realized that nmcli should become easier to use
and
more intuitive.
We want to preserve backwards compatibility to avoid breaking scripts
which make use of it, but this would not stop us from adding new
ways to do configurations in a more quick and intuitive manner.
Summing up, our commitment is to pay more attention to nmtui and make
nmcli more user-friendly.
Thank you man, that is very friendly.
At present day, present time I have little need for configuration,
because I am using DHCP configured with static addresses at the DHCP
server. That is in part, because manual configuration has been too
troublesome for me at the client device, and because this makes it
easier to have local DNS (dnsmasq).
But if and when I ever have a laptop again, which I needed to do more
advanced configuration with (obviously wifi, roaming, but also VPN and
some scripting for that) I will give everything a try again. I am glad
NM is improving and I like and in that sense deeply love the direction
it is going, because my feeling is that it is really getting better or
at least that the people are "sobering up" or "wisening up" at least
since version 1 I think, and that indeed things are going in a very nice
direction, if that is not too belligerent for me to say (hostile,
obnoxious, self-serving).
But of course I will give nmtui a try.... And I will say that.... the
menu interface is very action oriented but does not provide much
information or feedback. The program does not even provide what "nmcli
c" provides (no parameters).
So currently for me that means there is no "background awareness" in the
program. You start it, and have 3 options, but no information prior to
selecting an option and that is not the way it should be. So because of
that, it seems a collection of screens that provide each a single action
also provided (likely) by nmcli, just you don't need to guess for the
parameters now. However a real program would first show NM version,
current IP configuration, current list of devices, etc. It would show
devices to begin with (or interfaces, or active connections) with the
ability to see stats on them, to deactivate them, etc. In essence, it
would need to show, something similar to the output of the program
"ifconfig" without parameters.
So any such system would need an "awareness mode" where you see:
- current hostname
- current connections (active, not active)
- possibly current routes
- currently assigned IP addresses
And from there, you would be able to select a connection and perform
actions on them. You could call this "context-based operations". The
same way GIMP doesn't have that :p. If you right-click an object in
GIMP, you get the global menu, completely defeating the purpose of a
right click (context menu).
So there are basically two modes: first select action, then object to
perform it on (procedural, in a sense), and first select object, then
action to perform on it (object oriented, in a sense).
And object oriented is always more natural unless you are selecting
"tools" first. But in real life if you want to cut some paper, you first
select the paper, position it, then select the scissors, and then work
on the paper. You do not first select the scissors, then seek the paper
you need to cut. So object manipulation is still the core of what people
do.
So what you'd get is:
---------------------------------------------------------
| |
| hostname.localdomain NM 1.0.6 |
| |
| Currently active connections: |
| |
| Wired Connection 1 |
| 192.168.1.5 enp3s0 |
| fe80::cc9a:c827:9ff5:26d8 enp3s0 |
| |
| Wireless Connection 1 |
| 192.168.103.144 wlp0s1 |
| |
| Currently inactive connections: |
| |
| VPN 1 |
| ---.---.---.--- tun0 |
| |
| Add new connection |
| List unused interfaces |
---------------------------------------------------------
As a matter of speaking.
What has always bugged me about NM is that I couldn't use the (debian)
oriented /etc/network/interfaces file anymore.
The NM configuration was harder to reach, and now there were 2 dispatch
directories, with their own variables and execution style.
And in part, that is because the "connection" for NM supersedes the
"interface".
Some people hold that "regular people" or "normal users" do not "want"
to see the interface names. This is a sort of excuse for having chosen
the zero-configuration "enp3s0" model by SystemD. Personally as soon as
it matters to me I turn the thing off as quickly as I can. I prefer to
see interface names, because as soon as I need to write any script, it
matters to me. Any firewall script, it is going to matter to me. And
some of the wifi names are very long when they use a MAC based naming
scheme, or something similar.
Also in the past NM used to bug with the wifi. Occasionally it happened
that my connection got corrupted, it went down, and I could not bring it
up again without restarting NM. That implied a "service networkmanager
restart" or something of the kind.
Because of this I had even created manual wpa_supplicant configurations
and scripts, with the only real downside that roaming was now pretty
much impossible, and I had no graphical feedback icons (in my KDE).
I also did not know how to transform my openvpn config script into a NM
configuration. As a consequence I tried to stay away from NM for that:
the thing worked outside of NM, why go through all that trouble to get
it to work inside of it?
However eventually I realized, even though I did not know how to import
my config, I could just set all of the same parameters. Then I had the
amazing benefit of actually seeing in my GUI whether the VPN was active
or not (lock icon). This is no exaggeration, this feedback was just
instrumental because my VPN would sometimes fall away.
I was actually behind a "hotspot" type firewall, and though I still
don't know how to recognise this the way some devices do (phones) I
created some manual scripts that would recognise the "being walled"
state, and that would then execute the form the user would normally be
forced to click "accept" on (license terms) so that whenever I brought
my wifi online, I would get automatically "logged in" (passing the
routing blockade, so to speak). This was also pretty.... important to me
because the wifi connection itself would sometimes fall away, and the
sweet little system would forget you had already "authorized" and would
ask you again to identify (accept the terms).
These scripts were first executed from /etc/network/if-up.d/ but I later
put them in the NM dispatch directory (that I don't know by heart
anymore).
At least I think I did.
Connecting was now 2 steps in the GUI: first bring up wifi, it would
recognise being walled, execute the license terms acceptance script, and
then I would manually activate VPN, and get on with it. Actually it was
even more involved than that:
The firewall would also block VPN. Even on port 80. So I first had to
initiate an SSH connection that would tunnel VPN over TCP :P.
So the former of my scripts, would not only bypass the firewall for
regular port 80 traffic, it would then also activate SSH.
Then if the SSH connection dropped off, I would sometimes be in trouble
as I had no visual indication of it. The firewall bypass system would
sometimes bug out (at the server) causing pretty much no one in that
building to be able to get online. So dropping the wifi was also not
always an option ;-). Restarting wifi could mean no internet for days.
There were days I was the only person with active internet because my
wifi had been running for several days without interruption on my
laptop.
So restarting NM, or downing the wifi and upping it again, was also not
always an option ;-). Haha.
One more reason I could not rely on NM with its buggy wifi support....
So now I had to run scripts like "sshtest" that would tell me if my SSH
tunnel was still up. If it wasn't, I had to manually restart it, but
since it is not really a "connection" I could not automatically chain
into the firewall bypass script, etc.
At which point I probably started doing "run-parts" on the directory
with the scripts manually, I guess.
Because my SSH connection implied the VPN was actually being serviced
from a localhost port, I could not automatically obtain the required
routes. Principially, I needed one static route to the VPN host (at a
distance) so that when the default route changed, I did not lose access
to it. For some reason that was all I needed to do in the VPN config in
NM.
I even tried (this was on OpenSUSE) to create different routing tables
for "allowed" traffic (port 80, 443) and "disallowed" traffic
(everything else) so that allowed traffic would not go over the VPN.
However this failed and I never found out why my routing did not work.
I had created an additional routing table and then a single iptables
rule that would "mark" the required connections, then a rule in "ip
rule" (I believe) that would send that connection over the other routing
table. But although I could see (by tcpdump) that my packets returned as
they should, the kernel would never pass them on to my programs no
matter what I did; and I had followed all the instructions to the
letter.
So that is my story of using NM in this sense ;-). Perhaps a deviating
story, an uncommon story, but at the same time: if this works for me, it
is going to work for pretty much basically everyone ;-).
I'm sorry I did not intend to make this such a long story or message,
but I seem to fail to express myself sometimes.
I am sorry if this does feel like a little obnoxious or unwanted
feedback at this point. Or if it does feel self-serving or
"belligerent".
I seem to use that word a lot but perhaps I am looking for something
else; and I do not know if it exists in English ;-).
In any case if you did have a model that would allow for the
configuration I just explained, it would be very powerful indeed.
That would probably require an SSH tunnel to become a "connection" in
its own right, even thought it has no separate IP, and no separate
interface either. It is just an SSH connection you start in "daemon
mode". It contains forwards but executes no commands, nor does it open a
remote shell. The -N flag. Also requires key-based login. Maybe we could
design it some day.
Regards.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]