# Mit verschiedenen Netzwerkumgebungen verbinden.

## alexander_ro

Hi,

in meiner Firma benutze ich meist das Ethernet oder WLAN mit DHCP als Internetverbindung für meinen Notebook und anderes Gerät. Soweit so einfach.

Die Probleme fangen an wenn ich Unterwegs bin dann noch Geräte habe die das WLAN nicht direkt Nutzen können z.B. Handy oder ein ARM Platinchen. Diese dann ebenfalls den Netzzugang brauchen Ethernet oder WLAN über den Notebook. Jede Konfiguration alleine ist noch recht leicht machbar. Aber das jedesmal von Hand umzukonfigurieren ist doch recht mühsam. 

Gibts da eine schöne Lösung die müsste aber ohne Grafische Oberfläche auskommen weil es nicht nur auf dem Notebook laufen muss. Ich bin ja sicher nicht der einzige mit so einem Problem wie macht Ihr das denn?

Grüße

Alexander

----------

## schmidicom

Da die Firewall von meinem Brötchengeber ebenfalls nicht gerade Benutzerfreundlich konfiguriert wurde (sie schützt mehr das Internet vor den Mitarbeitern  als umgekehrt) benutze ich den NetworkManager um die beiden Ethernet-Verbindungen einzurichten. Das sieht dann bei mir so aus:

```
~ $ ifconfig 

enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 10.76.0.66  netmask 255.255.0.0  broadcast 10.76.255.255

        inet6 fe80::d250:99ff:fe57:2ab5  prefixlen 64  scopeid 0x20<link>

        ether d0:50:99:57:2a:b5  txqueuelen 1000  (Ethernet)

        RX packets 36420  bytes 4104876 (3.9 MiB)

        RX errors 0  dropped 41  overruns 0  frame 0

        TX packets 2905  bytes 717660 (700.8 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        device interrupt 32  

enp4s6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255

        inet6 fe80::20a:5eff:fe77:74c6  prefixlen 64  scopeid 0x20<link>

        ether 00:0a:5e:77:74:c6  txqueuelen 1000  (Ethernet)

        RX packets 223917  bytes 328403871 (313.1 MiB)

        RX errors 0  dropped 0  overruns 36  frame 0

        TX packets 28923  bytes 2774333 (2.6 MiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        device interrupt 21  base 0xa000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 1  (Lokale Schleife)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
```

```
~ $ route 

Kernel IP Routentabelle

Ziel            Router          Genmask         Flags Metric Ref    Use Iface

default         192.168.1.1     0.0.0.0         UG    100    0        0 enp4s6

10.75.0.0       10.76.0.1       255.255.255.0   UG    100    0        0 enp3s0

10.76.0.0       0.0.0.0         255.255.0.0     U     100    0        0 enp3s0

192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp4s6
```

Der NetworkManager hat auch den Vorteil das er nicht nur über mehrere GUI's verwaltet werden kann sondern auch über die beiden Konsolen-Programme "nmcli" und "nmtui".

----------

## alexander_ro

Das hat den unschönen Nachteil das mir dann eine ganze Gnome Umgebung mit installiert wird. Mit "ohne grafische Oberfläche" meinte ich nicht das ich die nicht starten will sondern das gar keine installiert ist. Hätte ich vielleicht gnauer dazu schreiben müssen. Sorry ...

----------

## Christian99

Networkmanager braucht keine Gnome Umgebung. was genau versuchst du denn zu emergen und was wird als abhängigkeit mit reingezogen?

----------

## alexander_ro

So habe ich es versucht:

```
emerge --ask networkmanager
```

Das will er dann machen:

```

[ebuild  N     ] net-wireless/wireless-regdb-20160208 

[ebuild  N     ] dev-libs/gobject-introspection-common-1.46.0 

[ebuild  N     ] app-arch/zip-3.0-r3  USE="bzip2 crypt unicode -natspec" 

[ebuild  N     ] dev-lang/swig-3.0.5  USE="pcre -ccache -doc" 

[ebuild  N     ] sys-libs/slang-2.2.4-r1  USE="pcre readline zlib -cjk -png -static-libs" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] net-dialup/ppp-2.4.7  USE="ipv6 pam -activefilter -atm -dhcp -eap-tls -gtk -radius" 

[ebuild  N     ] app-arch/libarchive-3.1.2-r1  USE="acl bzip2 e2fsprogs iconv lzma xattr zlib -expat -lzo -nettle -static-libs" 

[ebuild  NS    ] app-text/docbook-xml-dtd-4.4-r2 [4.1.2-r6, 4.2-r2, 4.5-r1]

[ebuild  N     ] dev-libs/nspr-4.12  USE="-debug" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] dev-db/sqlite-3.11.1  USE="readline -debug -doc -icu -secure-delete -static-libs -tcl {-test} -tools" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] net-dialup/rp-pppoe-3.11-r3  USE="-tk" 

[ebuild  NS    ] sys-devel/autoconf-2.13 [2.69]

[ebuild  N     ] dev-libs/libatomic_ops-7.4.2 

[ebuild  N     ] dev-libs/newt-0.52.15  USE="nls -gpm -tcl" PYTHON_TARGETS="python2_7" 

[ebuild  N     ] dev-util/gdbus-codegen-2.46.2  PYTHON_TARGETS="python2_7 python3_4 -python3_3 (-python3_5)" 

[ebuild  N     ] dev-python/m2crypto-0.22.3-r4  PYTHON_TARGETS="python2_7" 

[ebuild   R    ] dev-libs/glib-2.46.2-r2  USE="dbus*" 

[ebuild  N     ] dev-util/desktop-file-utils-0.22  USE="-emacs" 

[ebuild  N     ] dev-libs/gobject-introspection-1.46.0  USE="-cairo -doctool {-test}" PYTHON_TARGETS="python2_7" 

[ebuild  N     ] x11-proto/xproto-7.0.28  USE="-doc" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] x11-misc/util-macros-1.19.0 

[ebuild  N     ] media-fonts/font-util-1.3.1 

[ebuild  N     ] net-libs/libndp-1.5  ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] net-misc/dhcp-4.3.3_p1  USE="client ipv6 server ssl -ldap (-libressl) (-selinux) -vim-syntax" 

[ebuild  N     ] dev-libs/nss-3.22.2  USE="cacert nss-pem -utils" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] net-wireless/crda-1.1.3-r1 

[ebuild  N     ] net-libs/libqmi-1.12.6  USE="-doc -static-libs" 

[ebuild  N     ] gnome-base/gsettings-desktop-schemas-3.18.1  USE="introspection" 

[ebuild  N     ] dev-util/cmake-3.3.1-r1  USE="ncurses -doc -emacs -qt4 -qt5 -system-jsoncpp {-test}" 

[ebuild  N     ] net-libs/libproxy-0.4.11-r2  USE="-gnome -kde -mono -networkmanager -perl -python -spidermonkey {-test} -webkit" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7" 

[ebuild  N     ] net-libs/glib-networking-2.46.1  USE="gnome libproxy ssl -smartcard {-test}" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] net-libs/libsoup-2.52.2  USE="introspection ssl -debug -samba {-test} -vala" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] dev-lang/spidermonkey-1.8.5-r4  USE="-debug -minimal -static-libs {-test}" 

[ebuild  N     ] x11-proto/xextproto-7.3.0  USE="-doc" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] x11-proto/xf86bigfontproto-1.2.0-r1  ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] x11-proto/kbproto-1.0.7  ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] x11-proto/inputproto-2.3.1  ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] x11-proto/inputproto-2.3.1  ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] x11-libs/xtrans-1.3.5  USE="-doc" 

[ebuild  N     ] x11-libs/libXdmcp-1.1.2  USE="-doc -static-libs" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] dev-libs/libpthread-stubs-0.3-r1  USE="-static-libs" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] x11-libs/libXau-1.0.8  USE="-static-libs" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] dev-libs/boehm-gc-7.4.2  USE="cxx -static-libs -threads" 

[ebuild  N     ] www-client/w3m-0.5.3-r5  USE="nls ssl unicode -X -fbcon -gpm -gtk -imlib -lynxkeymap (-migemo) -nntp -vanilla -xface" LINGUAS="-ja" 

[ebuild  N     ] virtual/w3m-0 

[ebuild  N     ] app-text/xmlto-0.0.26-r1  USE="text -latex" 

[ebuild  N     ] sys-apps/dbus-1.10.6  USE="-X -debug -doc (-selinux) -static-libs -systemd {-test}" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] gnome-base/dconf-0.24.0  USE="{-test}" 

[ebuild  N     ] dev-libs/dbus-glib-0.102  USE="-debug -doc -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] net-wireless/wpa_supplicant-2.5-r1  USE="dbus hs2-0 readline ssl -ap -eap-sim -fasteap -gnutls (-libressl) -p2p (-ps3) -qt4 -qt5 (-selinux) -smartcard -tdls -uncommon-eap-types (-wimax) -wps" 

[ebuild  N     ] x11-proto/xcb-proto-1.11  ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7 python3_4 -python3_3" 

[ebuild  N     ] x11-libs/libxcb-1.11.1  USE="-doc (-selinux) -static-libs {-test} -xkb" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] x11-libs/libX11-1.6.3  USE="ipv6 -doc -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] sys-auth/polkit-0.113  USE="introspection nls pam -examples -gtk -jit -kde (-selinux) -systemd {-test}" 

[ebuild  N     ] sys-auth/consolekit-1.1.0  USE="acl pam policykit -cgroups -debug -doc -pm-utils (-selinux) {-test}" 

[ebuild  N     ] dev-libs/libgudev-230  USE="-debug -introspection -static-libs" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] virtual/libgudev-230  USE="-introspection -static-libs" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ] net-misc/modemmanager-1.4.12  USE="introspection qmi -mbim -policykit -qmi-newest -vala" 

[ebuild  N     ] sys-power/upower-0.99.2-r1  USE="introspection -ios (-selinux)" 

[ebuild  N     ] net-misc/networkmanager-1.0.10-r1  USE="dhclient introspection modemmanager ncurses nss ppp wext wifi -bluetooth -connection-sharing -consolekit -dhcpcd -gnutls -resolvconf (-selinux) -systemd -teamd {-test} -vala -zeroconf" ABI_X86="(64) -32 (-x32)"

```

[Edit]

Ja stimmt ist kein ganzer Gnome ich hatte da was von gnome-base gelesen und nicht mehr weiter geschaut. Leider ist es trotzdem sehr Umfangreich was er da zusätzlich installieren will.

[/Edit]

----------

## Christian99

bei mir ist diese paketliste ein bisschen über 200MB ....

----------

## schmidicom

Und wenn man beim NetworkManager kein WLAN, PPP und/oder Modem-Support braucht lässt sich die Liste sicher noch etwas verkürzen. Dazu kommt dass es auch noch andere Dienste gibt welche ähnliches Leisten können, nur kann ich zu denen nichts sagen.

----------

## firefly

@alexander_ro: Häng mal die tree option an den emerge befehl an, dann sollte man sehen können wer welches paket haben möchte.

Denn z.b. das www-client/w3m für den networkmanager benötigt wird kommt mir spanisch vor.

Wenn du gnome überhaupt nicht haben möchtest solltest du eventuell in der make.conf -gnome mit in die useflags aufnehmen.

Denn z.b. fürs paket net-libs/glib-networking ist das useflag gnome gesetzt

----------

## Josef.95

```
emerge -avc www-client/w3m virtual/w3m

Calculating dependencies... done!

  virtual/w3m-0 pulled in by:

    app-text/xmlto-0.0.28-r1 requires virtual/w3m, =virtual/w3m-0

  www-client/w3m-0.5.3-r5 pulled in by:

    virtual/w3m-0 requires www-client/w3m
```

```
grep w3m `equery w app-text/xmlto-0.0.26-r1`

        text? ( || ( virtual/w3m www-client/lynx www-client/links ) )
```

----------

## mv

Der Abhängigkeits-Bockmist ist auch für mich der Grund, weshalb network-manager ein absolutes No-Go ist:

Um das Installieren der klaffenden Sicherheitslücke polkit kommst Du bei networkmanager nicht herum.

Die vernünftigen Alternativen zu network-manager sind net-misc/connman sowie net-misc/wicd; letzteres benutzt allerdings ein obsoletes wireless-interface, und zuletzt ging die Entwicklung dort auch in die Richtung inakzeptabler Abhängigkeiten.

Andererseits: Wenn Du in der Lage bist, wireless per net-wireless/wpa_supplicant zu konfigurieren (ich bin das nicht, vor allem nicht, wenn ich kein Internet zur Hand habe in dem ich ggf. nachlesen kann), brauchst Du sonst eigentlich kaum etwas: net-misc/dhcpcd ist eigentliich für die meisten Standardfälle geeignet.

----------

## firefly

ich habe networkmanager installiert und bei mir ist w3m keine abhängigkeit.

Verwende aber stable von app-text/xmlto (0.0.26-r1) und in dem ist diese abhängigkeit nicht angegeben

Edit: Meine obige aussage ist falsch. Auch im stable wird w3m als abhängigkeit angegeben (wenn das useflag text gesetzt ist)

Neben virtual/w3m sind zusätzliche pakete angegeben (www-client/lynx www-client/links) und ich habe lynx installiert

----------

## mv

 *firefly wrote:*   

> ich habe networkmanager installiert und bei mir ist w3m keine abhängigkeit.

 

Das ist sicher irgendein virtual/ oder eine andere lange ||-Kette im Abhängigkeitsbaum irgendeines der Front-Ends, so dass das durch Alternativen erfüllt werden kann.

Aber nochmals: Das klaffende Sicherheitsloch sys-auth/polkit ist eine direkte nicht-optionle Abhängigkeit von net-misc/networkmanager. Diese alleine disqualifiziert Networkmanager bereits vollkommen.

----------

## Christian99

 *mv wrote:*   

> Diese alleine disqualifiziert Networkmanager bereits vollkommen.

 

für dich ....

----------

## schmidicom

Ich bin zwar auch kein Fan von polkit (weil es doch sicher auch anders ginge ohne gleich die Benutzerfreundlichkeit über den Haufen zu werfen) aber trotzdem vertrete ich die Meinung das es erstens schlimmeres gibt und zweitens polkit alleine wohl kaum das große Sicherheitsloch ist sondern viel eher dessen Konfiguration.

----------

## alexander_ro

Hier mal mit der tree Option:

```

[ebuild  N     ] net-misc/networkmanager-1.0.10-r1  USE="dhclient introspection modemmanager ncurses nss ppp wext wifi -bluetooth -connection-sharing -consolekit -dhcpcd -gnutls -resolvconf (-selinux) -systemd -teamd {-test} -vala -zeroconf" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  sys-power/upower-0.99.2-r1  USE="introspection -ios (-selinux)" 

[ebuild  N     ]  net-misc/modemmanager-1.4.12  USE="introspection qmi -mbim -policykit -qmi-newest -vala" 

[ebuild  N     ]   virtual/libgudev-230  USE="-introspection -static-libs" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]    dev-libs/libgudev-230  USE="-debug -introspection -static-libs" ABI_X86="(64) -32 (-x32)" 

[nomerge       ] net-misc/networkmanager-1.0.10-r1  USE="dhclient introspection modemmanager ncurses nss ppp wext wifi -bluetooth -connection-sharing -consolekit -dhcpcd -gnutls -resolvconf (-selinux) -systemd -teamd {-test} -vala -zeroconf" ABI_X86="(64) -32 (-x32)" 

[nomerge       ]  sys-auth/polkit-0.113  USE="introspection nls pam -examples -gtk -jit -kde (-selinux) -systemd {-test}" 

[ebuild  N     ]   sys-auth/consolekit-1.1.0  USE="acl pam policykit -cgroups -debug -doc -pm-utils (-selinux) {-test}" 

[ebuild  N     ]    sys-auth/polkit-0.113  USE="introspection nls pam -examples -gtk -jit -kde (-selinux) -systemd {-test}" 

[ebuild  N     ]  net-wireless/wpa_supplicant-2.5-r1  USE="dbus hs2-0 readline ssl -ap -eap-sim -fasteap -gnutls (-libressl) -p2p (-ps3) -qt4 -qt5 (-selinux) -smartcard -tdls -uncommon-eap-types (-wimax) -wps" 

[ebuild  N     ]   net-wireless/crda-1.1.3-r1 

[ebuild  N     ]    dev-python/m2crypto-0.22.3-r4  PYTHON_TARGETS="python2_7" 

[nomerge       ] sys-auth/consolekit-1.1.0  USE="acl pam policykit -cgroups -debug -doc -pm-utils (-selinux) {-test}" 

[ebuild  N     ]  x11-libs/libX11-1.6.3  USE="ipv6 -doc -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]   x11-libs/libxcb-1.11.1  USE="-doc (-selinux) -static-libs {-test} -xkb" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]    x11-proto/xcb-proto-1.11  ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7 python3_4 -python3_3" 

[nomerge       ] net-misc/networkmanager-1.0.10-r1  USE="dhclient introspection modemmanager ncurses nss ppp wext wifi -bluetooth -connection-sharing -consolekit -dhcpcd -gnutls -resolvconf (-selinux) -systemd -teamd {-test} -vala -zeroconf" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  net-libs/libsoup-2.52.2  USE="introspection ssl -debug -samba {-test} -vala" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]   net-libs/glib-networking-2.46.1  USE="gnome libproxy ssl -smartcard {-test}" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]    gnome-base/gsettings-desktop-schemas-3.18.1  USE="introspection" 

[ebuild  N     ]     dev-libs/gobject-introspection-1.46.0  USE="-cairo -doctool {-test}" PYTHON_TARGETS="python2_7" 

[ebuild   R    ]      dev-libs/glib-2.46.2-r2  USE="dbus*" 

[ebuild  N     ]       gnome-base/dconf-0.24.0  USE="{-test}" 

[ebuild  N     ]        dev-util/gdbus-codegen-2.46.2  PYTHON_TARGETS="python2_7 python3_4 -python3_3 (-python3_5)" 

[nomerge       ] sys-auth/polkit-0.113  USE="introspection nls pam -examples -gtk -jit -kde (-selinux) -systemd {-test}" 

[ebuild  N     ]  dev-lang/spidermonkey-1.8.5-r4  USE="-debug -minimal -static-libs {-test}" 

[nomerge       ] net-misc/networkmanager-1.0.10-r1  USE="dhclient introspection modemmanager ncurses nss ppp wext wifi -bluetooth -connection-sharing -consolekit -dhcpcd -gnutls -resolvconf (-selinux) -systemd -teamd {-test} -vala -zeroconf" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  dev-libs/newt-0.52.15  USE="nls -gpm -tcl" PYTHON_TARGETS="python2_7" 

[nomerge       ] dev-lang/spidermonkey-1.8.5-r4  USE="-debug -minimal -static-libs {-test}" 

[ebuild  NS    ]  sys-devel/autoconf-2.13 [2.69]

[nomerge       ] sys-power/upower-0.99.2-r1  USE="introspection -ios (-selinux)" 

[ebuild  N     ]  dev-libs/dbus-glib-0.102  USE="-debug -doc -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]   sys-apps/dbus-1.10.6  USE="-X -debug -doc (-selinux) -static-libs -systemd {-test}" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]    app-text/xmlto-0.0.26-r1  USE="text -latex" 

[ebuild  N     ]     virtual/w3m-0 

[ebuild  N     ]      www-client/w3m-0.5.3-r5  USE="nls ssl unicode -X -fbcon -gpm -gtk -imlib -lynxkeymap (-migemo) -nntp -vanilla -xface" LINGUAS="-ja" 

[ebuild  N     ]       dev-libs/boehm-gc-7.4.2  USE="cxx -static-libs -threads" 

[ebuild  N     ]        dev-libs/libatomic_ops-7.4.2 

[nomerge       ] net-libs/glib-networking-2.46.1  USE="gnome libproxy ssl -smartcard {-test}" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  net-libs/libproxy-0.4.11-r2  USE="-gnome -kde -mono -networkmanager -perl -python -spidermonkey {-test} -webkit" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7" 

[ebuild  N     ]   dev-util/cmake-3.3.1-r1  USE="ncurses -doc -emacs -qt4 -qt5 -system-jsoncpp {-test}" 

[ebuild  N     ]    app-arch/libarchive-3.1.2-r3  USE="acl bzip2 e2fsprogs iconv lzma xattr zlib -expat (-libressl) -lzo -nettle -static-libs" ABI_X86="(64) -32 (-x32)" 

[nomerge       ] x11-libs/libxcb-1.11.1  USE="-doc (-selinux) -static-libs {-test} -xkb" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  dev-libs/libpthread-stubs-0.3-r1  USE="-static-libs" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  x11-libs/libXdmcp-1.1.2  USE="-doc -static-libs" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  x11-libs/libXau-1.0.8  USE="-static-libs" ABI_X86="(64) -32 (-x32)" 

[nomerge       ] x11-libs/libX11-1.6.3  USE="ipv6 -doc -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  x11-proto/inputproto-2.3.1  ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  x11-proto/xextproto-7.3.0  USE="-doc" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  x11-libs/xtrans-1.3.5  USE="-doc" 

[ebuild  N     ]  x11-proto/xf86bigfontproto-1.2.0-r1  ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  x11-proto/kbproto-1.0.7  ABI_X86="(64) -32 (-x32)" 

[nomerge       ] net-misc/networkmanager-1.0.10-r1  USE="dhclient introspection modemmanager ncurses nss ppp wext wifi -bluetooth -connection-sharing -consolekit -dhcpcd -gnutls -resolvconf (-selinux) -systemd -teamd {-test} -vala -zeroconf" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  dev-libs/nss-3.22.2  USE="cacert nss-pem -utils" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  net-dialup/rp-pppoe-3.11-r3  USE="-tk" 

[nomerge       ] x11-libs/libX11-1.6.3  USE="ipv6 -doc -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  media-fonts/font-util-1.3.1 

[ebuild  N     ]  x11-misc/util-macros-1.19.0 

[nomerge       ] net-libs/libsoup-2.52.2  USE="introspection ssl -debug -samba {-test} -vala" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  dev-db/sqlite-3.11.1  USE="readline -debug -doc -icu -secure-delete -static-libs -tcl {-test} -tools" ABI_X86="(64) -32 (-x32)" 

[nomerge       ] dev-lang/spidermonkey-1.8.5-r4  USE="-debug -minimal -static-libs {-test}" 

[ebuild  N     ]  dev-libs/nspr-4.12  USE="-debug" ABI_X86="(64) -32 (-x32)" 

[nomerge       ] x11-libs/libX11-1.6.3  USE="ipv6 -doc -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  x11-proto/xproto-7.0.28  USE="-doc" ABI_X86="(64) -32 (-x32)" 

[nomerge       ] net-wireless/wpa_supplicant-2.5-r1  USE="dbus hs2-0 readline ssl -ap -eap-sim -fasteap -gnutls (-libressl) -p2p (-ps3) -qt4 -qt5 (-selinux) -smartcard -tdls -uncommon-eap-types (-wimax) -wps" 

[nomerge       ]  sys-apps/dbus-1.10.6  USE="-X -debug -doc (-selinux) -static-libs -systemd {-test}" ABI_X86="(64) -32 (-x32)" 

[ebuild  NS    ]   app-text/docbook-xml-dtd-4.4-r2 [4.1.2-r6, 4.2-r2, 4.5-r1]

[nomerge       ] net-misc/networkmanager-1.0.10-r1  USE="dhclient introspection modemmanager ncurses nss ppp wext wifi -bluetooth -connection-sharing -consolekit -dhcpcd -gnutls -resolvconf (-selinux) -systemd -teamd {-test} -vala -zeroconf" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  net-dialup/ppp-2.4.7  USE="ipv6 pam -activefilter -atm -dhcp -eap-tls -gtk -radius" 

[nomerge       ] net-misc/modemmanager-1.4.12  USE="introspection qmi -mbim -policykit -qmi-newest -vala" 

[ebuild  N     ]  net-libs/libqmi-1.12.6  USE="-doc -static-libs" 

[nomerge       ] net-misc/networkmanager-1.0.10-r1  USE="dhclient introspection modemmanager ncurses nss ppp wext wifi -bluetooth -connection-sharing -consolekit -dhcpcd -gnutls -resolvconf (-selinux) -systemd -teamd {-test} -vala -zeroconf" ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  net-libs/libndp-1.5  ABI_X86="(64) -32 (-x32)" 

[ebuild  N     ]  net-misc/dhcp-4.3.3_p1  USE="client ipv6 server ssl -ldap (-libressl) (-selinux) -vim-syntax" 

[ebuild  N     ]  dev-util/desktop-file-utils-0.22  USE="-emacs" 

[nomerge       ] net-misc/modemmanager-1.4.12  USE="introspection qmi -mbim -policykit -qmi-newest -vala" 

[nomerge       ]  dev-libs/gobject-introspection-1.46.0  USE="-cairo -doctool {-test}" PYTHON_TARGETS="python2_7" 

[ebuild  N     ]   dev-libs/gobject-introspection-common-1.46.0 

[nomerge       ] dev-lang/spidermonkey-1.8.5-r4  USE="-debug -minimal -static-libs {-test}" 

[ebuild  N     ]  app-arch/zip-3.0-r3  USE="bzip2 crypt unicode -natspec" 

[nomerge       ] dev-libs/newt-0.52.15  USE="nls -gpm -tcl" PYTHON_TARGETS="python2_7" 

[ebuild  N     ]  sys-libs/slang-2.2.4-r1  USE="pcre readline zlib -cjk -png -static-libs" ABI_X86="(64) -32 (-x32)" 

[nomerge       ] dev-python/m2crypto-0.22.3-r4  PYTHON_TARGETS="python2_7" 

[ebuild  N     ]  dev-lang/swig-3.0.5  USE="pcre -ccache -doc" 

[nomerge       ] net-wireless/crda-1.1.3-r1 

[ebuild  N     ]  net-wireless/wireless-regdb-20160208 

```

@mv: Also mit dem wpa_supplicant komme ich endlich ganz gut zurecht. Auch dank dem Umstand das ich alles was ich brauche in einer kurzen Notiz habe um notfalls auch ohne laufendes Internet es zum laufen zu bekommen. Mit dem dhcpcd aber noch nicht so recht ...

----------

## toralf

 *mv wrote:*   

> Aber nochmals: Das klaffende Sicherheitsloch sys-auth/polkit ist eine direkte nicht-optionle Abhängigkeit von net-misc/networkmanager.

 Ist polkit denn generell böse ode rnur die aktuelle Umsetzung ?

----------

## mv

 *toralf wrote:*   

> generell böse oder nur die aktuelle Umsetzung ?

 

Beides.

Es ist ein persistenter Root-Daemon, der prinzipiell alles machen kann (und können soll - sein armseliger Daseinszweck ist die vollkommene Aushebelung des wohldurchdachten Unix-Rechte-Systems), und der von jedem Benutzer über dbus angesprochen werden kann. Wobei sich über dbus anscheinend über prinzipiell unervermeidbare Races das Faken der Identität nicht sicher verhindern lässt (das wurde zumindest von den kdbus-Machern als einer der Gründe angegeben, weshalb kdbus unbedingt kernelseitig implementiert werden müsse). 

Wenn jetzt ein Programm mit root-Rechten auf praktisch beliebig fake-bare unzuverlässige Daten trifft, ist schon höchste Gefahrenstufe angesagt, und ausgewählte Sicherheitsexperten müssten mit äußerstem Fingerspitzengefühl arbeiten und dabei immer noch große Bauchschmerzen haben.

Statt dessen wird das Programm auch noch riesig komplex durch Einbau von xml- und javascript-Interpretern aufgeblasen, denn eine andere Sprache kannten die Macher nicht: Statt Spezialisten in Sicherheitstechnik zu sein, sind sie nur mit Web-Technologien vertraut. Experten in Sicherheitstechnik schauen sich solchen Müll nicht an, sondern schmeißen ihn unbesehen als eindeutig ungeeignet vom System.

Wohlgemerkt: Das alles nur, um "Probleme" zu lösen, die im Unix-Rechtesystem prinzipiell anders gelöst werden müssten. Beispielsweise hatte ich vor ein paar Tagen mit echten Sicherheitsexperten diskutiert, und wir sind zu dem Schluss gekommen, dass für Dinge wie mounten von USB-Sticks u.ä. für nicht-privilegierte Benutzer nur Dinge wie fuse geeignet sind (Stichwort: Devices, suid-Permissions, etc.). Also alles, wozu polkit benutzt werden soll, ist schon der prinzipiell falsche Ansatz. Von den Gefahren der höchst komplexen Implementierung ganz zu schweigen.

----------

## mv

 *Christian99 wrote:*   

>  *mv wrote:*   Diese alleine disqualifiziert Networkmanager bereits vollkommen. 
> 
> für dich ....

 

... und jeden, der ein System haben will, das nicht den bereits niedrigen Sicherheitsstandard von Windows von unten her unterläuft.

----------

## mv

 *schmidicom wrote:*   

> und zweitens polkit alleine wohl kaum das große Sicherheitsloch ist sondern viel eher dessen Konfiguration.

 

Nein, polkit selbst ist weit zu komplex. Die einzige Möglichkeit, polkit auf der Platte zu haben und zugleich ein halbwegs sicheres System, ist, dafür zu sorgen, dass der Daemon nicht mit root-Rechten gestartet wird: init-scripts und entsprechende systemd-Units entfernen, am Besten das Exec-Bit des Daemons.

Dann wird allerdings Networkmanager vermutlcih nicht mehr funkionieren, denn sonst bräuchte er nicht zwingend diese Abhängigkeit.

----------

## toralf

[quote="mv"] *schmidicom wrote:*   

> Die einzige Möglichkeit, polkit auf der Platte zu haben und zugleich ein halbwegs sicheres System, ist, dafür zu sorgen, dass der Daemon nicht mit root-Rechten gestartet wird: init-scripts und entsprechende systemd-Units entfernen, am Besten das Exec-Bit des Daemons.

 Verstanden.

Gibt es ein USE flag, um genau dies zu erreichen ?

----------

## mv

 *toralf wrote:*   

> Verstanden.
> 
> Gibt es ein USE flag, um genau dies zu erreichen ?

 

Was sollte das bringen? Software wie Networkmanager, die polkit zwingend benötigt, wird dann i.d.R. nicht mehr gehen, und Software, die polkit nicht zwingend benötigt, hat normalerweise ein USE-Flag, die Dependency abzuschalten. Falls das für ein Ebuild nicht zutrifft, sollte man lieber eben dieses Ebuild ändern (z.B. Bugreport).

----------

## alexander_ro

So richtig kann ich mich für den polkit auch nicht begeistern es gab schon einfachere und damit auch bessere Lösungen zu den Problemen die der Lösen soll. Mir gefällt aber an dem Networkmanager auch nicht das er so umfangreich ist. Das ist für normale Desktopsystem sicher Ok aber die Lösung die ich suche soll ja auch auf Speicherarmen Systemen wie einem Gnublin funktionieren.

Kann der oben genannte dhcpcd Server einem eigentlich anzeigen welche IP-Adresse an welchen Client vergeben wurde? Irgendwie findet man zu dem DHCP Server wenig Dokumentation oder die passt irgendwie nicht mehr zur aktuellen Version.

----------

## mv

 *alexander_ro wrote:*   

> Kann der oben genannte dhcpcd Server einem eigentlich anzeigen welche IP-Adresse an welchen Client vergeben wurde?

 

Aus Deinem Posting ging nicht hervor, dass Du einen dhcp Server betreiben willst.

dhcpcd ist m.W. nur ein sehr flexibler Client (der die verschiedensten Protokolle spricht oder auch bewusst ignorieren und z.B. statische Adressen setzen kann u.ä.), aber kein Server.

Micht würde auch wundern, wenn man Networkmanager als dhcp Server einsetzen könnte. So etwas muss man vermutlich immer manuell machen.

Edit: Fix typo dhcpc -> dhcpLast edited by mv on Sun Apr 03, 2016 10:24 am; edited 1 time in total

----------

## schmidicom

Die networkd-Komponente von systemd (welche gezielt für Server entwickelt wurde) sollte mit DHCP-Serverkonfigurationen umgehen können aber auch das greift so weit ich weiß auf net-misc/dhcp zurück.

----------

## alexander_ro

Den dhcpcd habe ich mir nur mal angeschaut weil er weiter oben erwähnt wurde. Allerdings brauche ich manchmal einen DHCP Server weil manche der ARM Platinchen in seiner Default konfiguration einen DHCP erwartet sonst kann man nicht übers Netzwerk zugreifen. Das kann man aber dann umkonfigurierne.

Da ich keinen systemd habe weil der meiner Meinung nach die gleiche Krücke ist wie polkit und für eine ARM CPU meines wissens so nicht funktioniert. Drum auch keine systemd Netzwerk komponente. Oder ist der jetzt Platformunabhängig geworden?

Das Problem ist das die strikte Trennung in Client und Server nicht mehr funktioniert. Weil ein nicht unerheblicher Teil meiner Geräte manchmal Server also anderen eine Verbindungsmöglichkeit anbieten oder aber Clients und sich irgendwohin selbst verbinden. Oft tun die natürlich beides gleichzeitig was die Sache nicht einfacher macht.

----------

## schmidicom

 *alexander_ro wrote:*   

> Oder ist der jetzt Platformunabhängig geworden?

 

systemd war schon immer nur vom Linux-Kernel abhängig nicht jedoch von der Prozessorarchitektur. Und auf meinem Raspberry Pi welcher ja ein ARM ist hatte ich damit noch nie irgendwelche Probleme.

----------

## alexander_ro

Hm, ich meinte mich zu erinnern das der früher nur auf Intel lief. Aber da mir die Archtektur nie gefallen hat habe ich das auch nicht weiter verfolgt. Ein Raspi ist ja auch schon ein Speichermonster. Hast Du das auf einem Gnublin auch schon mal versucht?

----------

## musv

 *alexander_ro wrote:*   

> Allerdings brauche ich manchmal einen DHCP Server weil manche der ARM Platinchen in seiner Default konfiguration einen DHCP erwartet sonst kann man nicht übers Netzwerk zugreifen.

 

net-misc/dhcp funktioniert bei mir noch immer klasse (sogar auf ARM).

 *alexander_ro wrote:*   

> Da ich keinen systemd habe weil der meiner Meinung nach die gleiche Krücke ist wie polkit

 

Systemd und Polkit haben nun so gar nichts miteinander zu tun. Aber es ist schön, dass du Deine Meinung so fundiert begründet hast.

Polkit halte ich auch für einen Fehler, da dadurch das Standard-Rechte-Management ausgehebelt wird und die über Polkit erlangten Rechte nicht so leicht ersichtlich sind. Andererseits fällt mir jetzt auf die Schnelle auch kein Konzept ein, wie man z.B. einem lokalen User das Runterfahren eines Rechners erlauben will und einem remote eingeloggten User nicht. 

Ich nutze Kodi auf meinem HTPC. Hab mich damals ewig damit rumgeschlagen, wie man den Rechner aus Kodi heraus runterfahren kann. Irgendwann hab ich mich mal durch den Quelltext gegrept. Und siehe guck, Polkit war die einzige aktuelle Möglichkeit unter Linux, um die Kiste auszuschalten. 

 *alexander_ro wrote:*   

> und für eine ARM CPU meines wissens so nicht funktioniert. Drum auch keine systemd Netzwerk komponente. Oder ist der jetzt Platformunabhängig geworden?

 

Das ist jetzt ziemlicher Quatsch. Meine NAS (Zyxel NSA 325) betreibe ich seit mittlerweile mehr als 2 Jahren mit Arch-Linux. Systemd läuft auf dem Ding ziemlich gut. Allerdings nutz ich den systemd-networkd da nicht, weil mir eine statische Netzwerkkonfiguration reicht. 

 *alexander_ro wrote:*   

> Das Problem ist das die strikte Trennung in Client und Server nicht mehr funktioniert. Weil ein nicht unerheblicher Teil meiner Geräte manchmal Server also anderen eine Verbindungsmöglichkeit anbieten oder aber Clients und sich irgendwohin selbst verbinden. Oft tun die natürlich beides gleichzeitig was die Sache nicht einfacher macht.

 

"Konzeptionsproblem" würde ich mal sagen. Hat aber nichts direkt mit Systemd, Polkit oder DHCP-Server zu tun.

----------

## mv

 *musv wrote:*   

> Systemd und Polkit haben nun so gar nichts miteinander zu tun.

 

Auch wenn man derzeit noch systemd ohne polkit betreiben kann, ist das nicht die von Upstream gewünschte und unterstützte Konfiguration.

Abgesehen davon sind beides komplexe Root-Daemonen, die vollkommen über dbus gesteuert werden und dadurch von jedem Benutzer potentiell angegriffen werden können. Die Parallelen sind also sehr groß.

 *Quote:*   

> Andererseits fällt mir jetzt auf die Schnelle auch kein Konzept ein, wie man z.B. einem lokalen User das Runterfahren eines Rechners erlauben will und einem remote eingeloggten User nicht.

 

Es gab hier mal den langen Thread "A solution in search of a problem" (oder so ähnlich), in dem genau dieses Verhalten kritisiert wurde, für ein spezielles Problem, das nur eine exotische Nutzergrupppe betrifft - Admins von Rechnern, an denen wechselnde Unbekannte herumhacken und sich zugleich andere Unbekannte einloggen dürfen - das gesamte Sicherheitskonzept für alle zu boykottieren.

Aber das spezielle Problem wurde vorher gar nie gefragt, weil es für einen kompetenten Admin mit Unix-Rechten trivial lösbar ist.

Ein einfacher Ansatz wäre, beim graphischen Einloggen/Ausloggen eine Datei in /run mit dem Namen des eingeloggten Benutzers zu erstellen/entfernen, und ein passendes sudo-shutdown-Skript, das diese Datei testet. Wer unbedingt meint, unnötig Speicher und Rechenzeit für das "Problem" verbraten zu müssen, kann von mir aus statt der Datei auch so etwas wie consolekit benutzen, um in dem sudo-Shutdown Skript den eingeloggten Benutzer abzufragen. Ein geeignetes pam-Modul wäre ein anderer Ansatz, das Problem zu lösen, aber m.E. ebenfalls unnötiger Overkill für die genannte triviale Aufgabe.

----------

## alexander_ro

 *Quote:*   

> dass du Deine Meinung so fundiert begründet hast

 

Warum sollte ich. Mir ging es hier um ein anderes Thema da reicht meiner Meinung nach der Hinweis das ich es als ungeignet befinde.

 *Quote:*   

> einem lokalen User das Runterfahren eines Rechners erlauben will und einem remote eingeloggten User nicht

 

Wozu soll das gut sein?

Entweder vertraue ich einem Admin dann darf er auch Remote einen Server neu starten wenn es Probleme gibt oder ich vertraue im nicht dann wird einfach der User gelöscht und die Person aus der Firma entfernt. Remote Zugänge muss man als solche Sicher gestallten den Menschen mit Sinnlosen Beschränkungen das leben schwer machen verbessert nicht die Sicherheit. Ganz im gegenteil ein Frustrierter Admin ist ein großes Problem.

 *Quote:*   

> Polkit war die einzige aktuelle Möglichkeit unter Linux, um die Kiste auszuschalten

 

Das halte ich für ein gerücht. Es gibt viele möglichkeiten das zu tun. Am einfachsten mit einem kleinen Programm das genau das ausführt was Du möchtest und nur genau die dazu nötigen rechte hat. Benutze ich zwar auch nicht aber meines wissens wurde doch sudo für solche Aufgaben erfunden.

 *Quote:*   

> Zyxel NSA 325

 

Müsste man wissen welche CPU der hat und Speicher? Ich konnte das auf die schnelle nicht herausfinden. Aber es stimmt in der zwischenzeit soll es auch auf anderen Platformen gehen aber ob es mit einem Gnublin der nur 256MB Arbeitsspeicher hat konnte mir keiner sagen. Da man auf dem selbst mit so Dingen wie udev und Speichermangel Probleme hat wird es vermutlich nicht gehen. Ich will auf allen von mir verwendeten Rechner die gleiche Basis installation haben weil es einfach leichter zu Pflegen ist.

 *Quote:*   

> "Konzeptionsproblem" würde ich mal sagen. Hat aber nichts direkt mit Systemd, Polkit oder DHCP-Server zu tun.

 

Das Konzept von Mobilgeräten und Ihrem Einsatz und die in Deutschland extrem Teuren aber Arsch langsamen Datenverbindungen die zum größten Teil der Telekom zu verdanken sind. Die durch die Telekom Schutzbehörde (Bundesnetzagentur) gedeckt wird und der Telekom Überhöhte Preise gegen die Konkurenten mit Staatsgewalt erzwingt. Diese Staatlich garantierten Höchstgewinne die von der Tekekom bei Idiotischen Auslandsspekulationen verzockt wurden und deshalb die Datennetze in Deutschland genauso Marode sind wie die Straßen. Dafür nun wieder der Steuerzahler aufkommen muss das Datennetze die einem Privatkonzern gehören mit Steuergeldern wieder etwas in Richtung Moderne bewegt werden sollen. Daran liegt es das ich nicht an jederm Ort meine Leistungsfähigen Firmenserver erreichen kann. Wenn ich die nicht erreiche muss die nächst Leistungsfähigere Hardware deren Aufgaben übernehmen. Das ist dann Notebook, Handy, Auto und Motorrad (Die Automotiv-IT ist Eingenentwicklung weil ich mit den Sicherheitsdesastern der Komerziellen Automotiv-Shitbags nichts zu tun haben will.). Somit sind die Rechner je nach Marodität der Telekom Netze mal Clients oder halt als Backup Server. Recht hast Du Konzeptionelles Problem aber wenn ich nicht die Regierung weg Putschen will was ich nicht vor hatte muss ich mit dem Kaputten Konzept leben. Stimmt hat auch nicht direkt mit polkit und systemd zu tun aber mit meinem Problem.

----------

## musv

 *alexander_ro wrote:*   

>  *Quote:*   einem lokalen User das Runterfahren eines Rechners erlauben will und einem remote eingeloggten User nicht 
> 
> Wozu soll das gut sein?

 

Konkreter Fall: 

Als ich noch vor einigen Jahren in der Uni war, waren die Rechner im Rechnerpool mit Dualboot (Windows/Linux) bestückt. Natürlich konnte man sich auch per Remote-Verbindung auf den Kisten einloggen. Jetzt stell Dir mal vor, ein Nutzer arbeitet vor Ort und einer loggt sich remote auf die Kiste, würde aber z.B. gern Windows booten, weil er irgendein Windows-Programm benötigt. Wenn der Remote-User dann die Kiste runterfährt, wird der lokale User ganz schön blöd in den Bildschirm starren. Wir reden hier nicht von Adminrechten.

Wie schon gesagt, mag ich Polkit aber auch nicht. MV hat da natürlich Recht. Für die Prüfung diverser Voraussetzung, u.a. nach lokalem Nutzer hätte man auch im run-Verzeichnis eine Datei anlegen können. Inzwischen kann man Polkit mit Javascript konfigurieren, was es nicht unbedingt einfacher macht.

 *alexander_ro wrote:*   

>  *Quote:*   Polkit war die einzige aktuelle Möglichkeit unter Linux, um die Kiste auszuschalten 
> 
> Das halte ich für ein gerücht. Es gibt viele möglichkeiten das zu tun. Am einfachsten mit einem kleinen Programm das genau das ausführt was Du möchtest…

 

Ich sprach konkret von Kodi. Und im Quellcode von Kodi gab's ein Switch-Case-Statement. Und bei Linux wurde halt explizit auf Polkit geprüft. 

 *alexander_ro wrote:*   

>  *Quote:*   Zyxel NSA 325 
> 
> Müsste man wissen welche CPU der hat und Speicher? Ich konnte das auf die schnelle nicht herausfinden.

 

Marvell Kirkwood ARM v5tel mit 512mb RAM. Installiert hab ich das da.

Ursprünglich wollte ich da Gentoo installieren. Aber ich hab die Cross-Compile-Umgebung nicht auf die Reihe bekommen.

----------

## alexander_ro

 *Quote:*   

> Wir reden hier nicht von Adminrechten.

 

Ich dachte wir reden von Servern. Man kann die Frage ob ein reboot Ok ist an alle Angemeldeten User weiter reichen. Wenn einer nein sagt wird er abgebrochen. Einfach schlicht und leicht zu verstehen und verwalten. Hat auch noch den Vorteil das auch ein Lokaler User nicht einfach die Remote Benutzer killen kann selbiger wird das auch nicht Lustig finden.

Für mich sehen die ganzen Sachen wie systemd und polkit usw, was da die letzten Jahre so neu erfunden wurde nach einer schnell zusammen geschusterten Sache die vorgibt alle Probleme zu Lösen und in Wirklichkeit aber Problem nur halb löst oder schlecht. Mich erinnert das sehr an die ganzen Kommerziellen Software Klitschen (Apple, Micorsoft, Google, VW, BMW, Mercedes und viele mehr). Schnell zusammen Schustern scheiß auf die Sicherheit es trifft ja andere. Ich finde es bedenklich das sich das zunehmend bei OpenSource auch einbürgert bzw. mehr von den Kommerziellen Teilnehmern versucht wird in die OpenSource Welt mit Gewalt zu pressen.

Aber ich nehme mal an ich werde mir selber was bauen müssen ich hatte nun nicht das Gefühl das es hier fertige Lösungen gibt.

[Edit]Jetzt weiß ich aber warum ich bei dhcpcd nicht gefunden habe was ich suchte. Auf die Idee das das cd am Ende "client deamon" heißen könnte bin ich irgendwie nicht gekommen ...  :Sad:  [/Edit]

----------

## schmidicom

Nach einer kleinen Google-Suche bezweifle ich das Gentoo die passende Distribution für einen solchen Gnublin ist, selbst auf dem Raspberry Pi hatte ich mangels einer funktionierenden Crosscompile-Umgebung stellenweise ziemliche mühe. Vielleicht wäre es wirklich sinnvoller bei einem Gnublin die mitgelieferte Distribution zu benutzen.

----------

## alexander_ro

Warum sollte Gentoo sich dafür nicht eignen?

Ich dachte das wurde genau für solche Sachen erfunden.

Außerdem hätte ich gerne das Basissystem auf allen Systemen gleich das ist mit weniger Aufwand zu verwalten.

Die Orginal Distribution zum Gnublin ist ein umgebautes Debian. Ich wüsste nicht was Debian können sollte das Gentoo nicht kann.

Crosscompiler ist wichtig der Gnublin kann zwar kleine C++ Programme übersetzen aber kein Betriebssystem. Mit dem Crosscompiler tue ich mich auch noch schwer weil mir meist nicht ganz klar ist welchen ich für die CPU Version dann brauche.

Sonst ist noch ein Script wichtig das vom fertigen Gentoo Basissystem eine Kopie macht und dann alles löscht das nicht gebraucht wird. Software Updates mache ich dann als Binär Version auf dem kleinen. Im Prinzip genauso wie es bei Handys gemacht wird. Einfach das ganze Betriebssystem durch ein neues ersetzen. Will man es vornehm haben kann man die installierte Binären Dateien mit git Versionieren.

----------

## alexander_ro

Ich versuche gerade mal ein Script zu bauen das mir automatisch dann die jeweilig Konfiguration zusammen kopiert. Jetzt habe ich nur das Problem das sich der DHCP-Server mit dem dhcpcd nicht so recht vertragen will. Kann man dem dhcpcd irgendwie sagen an welcher Netzwerkschnittstelle er lauschen soll?

Ich bin zwar über die Option "Interface" gestolpert beim suchen aber die ist glaube ich für was anderes zuständig.

[Edit]Sorry ... nicht richtig geguckt: denyinterfaces enp7s0[/Edit]

----------

## mike155

Hallo alexander_ro,

ich habe auch das Problem, dass ich mein Notebook in unterschiedlichsten Netzen verwenden muss. Ich habe es folgendermaßen gelöst: 

1)  Direkt nach dem Start erscheint bei mir das grub Menü:

```
Linux Office eth0 fixed IP

Linux Office wlan0 DHCP

Linux Customer1

Linux Customer2

...

```

2)  Dann kann ich auswählen, wo ich gerade bin. Je nach Wahl wird dem Kernel ein vordefinierter Wert für den Parameter PROFILE mitgegeben. Die grub Konfigurationsdatei sieht folgendermaßen aus:

```
Linux Office eth0 fixed IP

    kernel /bzImage root=/dev/sda5 PROFILE=Office1 net.ifnames=0 showopts

Linux Office wlan0 DHCP

    kernel /bzImage root=/dev/sda5 PROFILE=Office2 net.ifnames=0 showopts

Linux Customer1

    kernel /bzImage root=/dev/sda5 PROFILE=Customer1 net.ifnames=0 showopts

Linux Customer2

    kernel /bzImage root=/dev/sda5 PROFILE=Customer2 net.ifnames=0 showopts

...

```

3)  Beim Booten / Herunterfahren des Systems passiert folgendes:

 Die Gentoo Netzwerk init.d Scripte sind so konfiguriert, dass sie nichts machen. Weder beim Starten, noch beim Herunterfahren.

 Ich habe stattdessen ein eigenes init.d Script, das beim Booten direkt nach den Gentoo Netzwerk init.d Scripten aufgerufen wird - und beim Herunterfahren direkt davor.

 Beim Booten: mein init.d Script liest die mit grub gesetzte Umgebungsvariable "PROFILE" und ruft dann das Programm "set_profile" mit dem Profil als Parameter auf. 

 Beim Herunterfahren: mein init.d Script ruft das Programm set_profile auf, diesmal mit dem Parameter "Shutdown".

4)  Das Programm "set_profile" konfiguriert den Computer nun für die gewünschte Umgebung. Ich kann es auch von Hand aufrufen, wenn ich im laufenden Betrieb die Netzwerkumgebung ändern will. "set_profile" sieht ungefähr so aus:

```
#! /bin/bash

export PATH=$PATH:/usr/sbin:/usr/local/sbin

reset_system () {

    # unmount NFS and Samba shares

    # stop all services

    # close firewall

    # shut down network interfaces

}

setup_firewall () {

    # set up firewall

}

# start of main program

reset_system

case "$1" in

   

    Office1)

        /bin/hostname xxxx

        /bin/domainname xxxx

        echo 'nameserver 10.0.0.1'                >  /etc/resolv.conf

        echo 'domain xxxx'                        >> /etc/resolv.conf

        echo 'search xxxx xxxxx.de'               >> /etc/resolv.conf

        echo 'ServerName 10.0.0.21'               >  /etc/cups/client.conf

        echo 'logfile /var/log/ntp'               >  /etc/ntp.conf

        echo 'driftfile /var/lib/ntp/ntp.drift'   >> /etc/ntp.conf

        echo 'server 127.127.1.0'                 >> /etc/ntp.conf

        echo 'fudge  127.127.1.0 stratum 10'      >> /etc/ntp.conf

        echo 'server 10.0.0.1'                    >> /etc/ntp.conf

        ifconfig eth0 10.0.0.48/24 up

        route add default gw 10.0.0.1

        setup_firewall

        /etc/init.d/nscd start

        /etc/init.d/ntpd start

        /etc/init.d/sshd start

        mount -t nfs4 -o rw,nosuid \

            10.0.0.2:/export/portage/distfiles  /usr/portage/distfiles

        ;;

    Office2)

        /bin/hostname xxxx

        /bin/domainname xxx

        /bin/ifconfig wlan0 up

        /sbin/iwconfig wlan0 \

            essid "xxxxx" \

            mode managed \

            rate auto

        /usr/sbin/wpa_supplicant -B \

            -c/etc/wpa_supplicant/wpa_supplicant.conf \

            -iwlan0

        setup_firewall

        /sbin/dhclient -nw -q wlan0

        /etc/init.d/nscd start

        ;;

    Shutdown)

        # Nothing to do, reset_system was already called

    ...

esac

```

5)  Für jede neue Netzumgebung muss ich einmalig mein Script anpassen. Das ist zwar etwas Arbeit, aber dafür kann ich später immer wieder auf Knopfdruck zu genau dieser Konfiguration zurückkehren.

----------

## musv

Deine Lösung hat den Vorteil, dass du das Netz schon beim Bootvorgang einrichtest. Jetzt hab ich noch nie mit Profilen in der Grub gearbeitet. Ich seh das zum ersten Mal. Kannst du die Profile während des Betriebs umschalten oder musst du immer den Rechner neustarten?

Alternativ hatte ich früher Runlevel verwendet, die genau solchen Umständen Rechnung tragen. D.h. im Grub-Menü gibst du an:

```
linux bzImage root=.... softlevel=office1
```

Und anstatt /etc/conf.d/net hieß das dann /etc/conf.d/net.office1 für das Runlevel office1, um die Runlevel-spezifischen Configs anzugeben. Es gibt also keinen Grund, das über eigene Initscripte manuell zu erledigen. Damit hat Deine Lösung den Nachteil, dass es nicht Gentoo-konform ist. Außerdem kannst du mit der offiziellen Variante die Runlevel auch im laufenden Betrieb umschalten.

Aber selbst die Runlevel brauchst du nicht zwingend. Der Networkmanager sollte die verschiedenen Verbindungen auch managen können.

----------

## alexander_ro

Das mit dem Kernelparameter hatte ich bisher noch nicht probiert. So weit ich weiß kann man den ja nach Wunsch benennen es darf nur keiner sein den der Kernel selbst kennt. Alle die der Kernel nicht kennt werden dann nur weiter gereicht. Klingt nach einer guten Idee.

Ich versuche mir gerade so ein ähnliches Script zu bauen bekomme aber gerade irgendwie die Datenweiterleitung zwischen Ethernet und WLAN nicht zum laufen. Weil das WLAN ja die default route ins Internet Dynamisch vom Hotspot erhält und ich mit dieser dynamischen IP dann ja als Gateway für die Ethernet Schnittstelle konfigurieren muss. Manuell kann ich das Problemlos machen aber wie macht man das damit es automatisch läuft?

----------

## mike155

Hallo musv,

 *Quote:*   

> Alternativ hatte ich früher Runlevel verwendet, die genau solchen Umständen Rechnung tragen.

 

 *Quote:*   

> Der Networkmanager sollte die verschiedenen Verbindungen auch managen können.

 

Vermutlich kann man die Herausforderung "mehrere Netzumgebungen" auch mit runlevels oder mit networkmanager realisieren. Allerdings besteht die Schwierigkeit, dass die Konfigurationsdateien netzabhängiger Dienste wie Routing, Firewall, SSH, CUPS, NTP, NFS, Samba usw. je nach Netzumgebung unterschiedliche Inhalte haben müssen. Soweit ich sehe, wird dieses Problem weder von der runlevel-Methode, noch von network-manager "out of the box" gelöst.

----------

## mike155

Hallo alexander_ro,

ich habe mir den Thread ein paar mal durchgelesen. Aber ich verstehe immer noch nicht genau, was Sie machen wollen.

Also, es gibt ein Notebook mit zwei Interfaces, eth0 und wlan0. Und das Notebook soll als Router funktionieren.

An welchem Interface hängt das Netz, über das man ins Internet kommt?

An welchem Interface hängen die Geräte, die das Notebook als Router verwenden sollen?

Wie wird eth0 konfiguriert? Statisch oder dynamisch?

Wie wird wlan0 konfiguriert? Gibt es in dem Netz einen DHCP Server? Oder soll das Notebook der DHCP Server sein?

Welche Anweisungen geben Sie ein, um das System von Hand zu konfigurieren?

Und an welcher Stelle scheitert es, wenn es Sie es automatisieren?

----------

## alexander_ro

Hallo bug_report,

um die Sache einfacher zu machen beschreibe ich mal nur einen möglichen Fall. Weil es nicht immer die selben Interfaces sind über die man ins Internet kommt.

Erste Variante:

Internet erreicht man per WLAN (Hotspot eines Providers z.B.) über das WLAN erreicht man auch den DHCP Server des Providers.

Am Ethernet Port eth0 hängen die Geräte die das Notebook als Router verwenden sollen.

Der Ethernet Port wird gar nicht konfiguriert. Ich habe den einer Bridge hinzugefügt die eth0 und wlan0 verbinden soll. Dann wird br0 mit einer Adresse aus dem DHCP-Adressbereich (Notebook DHCP-Server) statisch konfiguriert.

wlan0 wird vom DHCP-Server des Internet Providers konfiguriert.

Der Notebook muss DHCP-Server sein für das System das am Ethernet hängt eth0.

Vom Notebook auf den Rechner an eth0 zu zugreifen funktioniert. Der DHCP-Server der auf dem Notebook läuft müsste jetzt aber dem Rechner an eth0 den Gateway ins Internet liefern. Die IP-Adresse ist die von wlan0 die ich ja erst beim Verbindungsaufbau zum WLAN bekomme. Daher kann ich die ja nicht in der Konfigurationsdatei festlegen. Momentan baue ich die Verbindung zum WLAN auf kopiere dann die IP-Adresse in die Konfigurationsdatei und starte dann die Verbindung zum Rechner an eth0.

----------

## mike155

OK, danke für die Erklärung. Allerdings passen die Informationen nicht zusammen.

Zuerst einmal sollte geklärt werden, ob das Notebook als Bridge, oder als Router verwendet werden soll. Beides zusammen geht nicht (OK, es geht schon, wenn man an einem Interface mehrere Netze hat, aber ignorieren wir diesen Fall)

1) Wenn eine Bridge zwischen wlan0 und eth0 konfiguriert werden soll:

Dieser Fall ist einfach:

Man konfiguriert die Bridge zwischen wlan0 und eth0.

Man definiert ein Interface br0 auf der Bridge und lässt dieses Interface vom DHCP Server im Netz wlan0 konfigurieren. Dadurch kommt das Notebook selbst ans Netz.

Man muss keinen eigenen DHCP Server konfigurieren. Die Geräte am Netz eth0 werden vom DHCP Server im Netz wlan0 konfiguriert.

2) Wenn das Notebook als Router konfiguriert werden soll:

Dieser Fall ist komplizierter und man muss entweder den Router vom Netz wlan0 umkonfigurieren oder man muss NAT auf dem Notebook konfigurieren. Betrachten wir den Fall, dass man den Router im Netz wlan0 nicht umkonfigurieren kann. Dann gilt folgendes:

Das Interface wlan0 erhält seine Konfiguration per DHCP vom DHCP Server im Netz wlan0. Dabei wird auch die Default Route auf dem Notebook gesetzt.

Für eth0 wählt man ein IP Netz aus einem VPN Bereich, z.B. 291.168.20.0/24 und setzt eth0 statisch auf eine IP-Adresse aus diesem Netz, z.B. 192.168.20.1.

Man setzt einen DHCP Server auf, der an eth0 lauscht und auf Anfragen an eth0 IP Adressen aus dem Netz 192.168.20.0/24 vergibt. Weitergin sagt der DHCP Server den Geräten an eth0, dass sie 192.168.20.1 als Router verwenden sollen. 

Jetzt könnte man das Routing zwischen wlan0 und eth0 einschalten. Es würden auch Pakete zwischen den Netzen geroutet werden, aber der Router im Netz wlan0 kann mit den Src IP Adressen der Pakete aus dem Netz eth0 nicht viel anfangen. Zumindest kann er keine Antwort-Pakete zurückschicken, weil er das Netz an eth0 nicht kennt.

 Deshalb muss auf dem Notebook zusätzlich NAT konfiguriert werden. Alle Pakete, die vom Netz eth0 ins Netz wlan0 geroutet werden, erhalten dann als Absenderadresse die IP-Adresse des Interfaces wlan0 -- und beim routen von Antwortpaketen aus dem Netz wlan0 in das Netz eth0 wird die Zieladresse wieder auf die IP Adresse des ursprünglichen Geräts gesetzt.

 Die Frage ist nun, ob man die Routing-Variante wirklich stabil bekommt. Was passiert z.B. wenn der DHCP Server im Netz wlan0 dem Notebook eine neue IP-Adresse zuweist? Das wird dann unschön...

----------

## alexander_ro

Das Problem ist das ich in jedem Fall für Geräte an eth0 einen eigenen DHCP-Server brauche. Weil mir Flughafen- oder Bahnhofsbetreiber immer Ihr WLAN nicht nach meinen Wünschen konfigurieren wollen ...  :Wink: 

Ich hatte es schon als Router das ging aber nicht so richtig. Das mit der Bridge habe ich jetzt mal Probiert aber das geht auch nicht wirklich besser ich glaibe das die Router Variante noch die ist die besser tut was ich mir vorstelle.

NAT stimmt braucht man auch noch das hatte ich erfolgreich verdrängt ...

Wenn für die Geräte an eth0 der Notebook Router ist. Das ist ja dann so zu sagen der Gateway (192.168.20.1) ins Internet. Dann müsste das doch auch gehen wenn wlan0 eine neue IP-Adresse bekommt. Mit einer neuen IP-Adresse an wlan0 sollte auch das Routing auf dem Notebook angepasst werden. Das macht doch dann der dhcpcd der nur an wlan0 lauscht.

 *Quote:*   

> eth0 wählt man ein IP Netz aus einem VPN Bereich, z.B. 291.168.20.0/24

 

Da hast Du mich erst ein wenig verwirrt weil Du als Beispiel ein anderes Netz gewählt hast als Du dann bei der Beschreibung benutzt hast.

----------

## alexander_ro

Nach einigen Versuchen hoffe ich das ich alle für iptables und nat nötigen Kernel Optionen aktiviert habe. Leider will das aber immer noch nicht so richtig funktionieren.

So habe ich Versucht NAT zu aktivieren:

```
iptables -t nat -A POSTROUTING -o wlp13s0 -j MASQUERADE
```

dann bekomme ich folgende Fehlermeldung:

```
iptables: No chain/target/match by that name.
```

[Edit]

Muss mir das Sorgen machen?

```
alien alex # cat /proc/net/ip_tables_targets

ERROR

```

[/Edit]

----------

## alexander_ro

Mir fehlte da noch eine Kernel-Option:

```

# Version: kernel-genkernel-x86_64-3.18.25-gentoo-r1

# Networking support > Networking options > Network packet filtering framework (Netfilter) > IP: Netfilter Configuration -> <M> IPv4 NAT

#                                                                                                                        -> <M>   IPv4 masquerade support

#                                                                                                                        -> <M>   iptables NAT support

#                                                                                                                        -> <M>     MASQUERADE target support   (Wegen dieser Fehlermeldung: iptables: No chain/target/match by that name.)

```

Jetzt fehlt mir nur noch eine gehende Konfiguration für das Masquerade irgendwie funktionieren die Beispiele nicht die ich gefunden habe. Wenn einer ein aktuelles Beispiel kennt das funktioniert evtl. auch mit einem Hinweis für evtl. Notwendiges Routing wäre ich dankbar. Ich bekomme es gerade irgendwie nicht zum laufen.

----------

