Das Log zeigt wohl das bekannte Verhalten. eno1 wird vom Networkmanager/dbus zeitnah erkannt, hat aber carrier Probleme. Nach ~ 3min klappt der Carrier dann.
Dein nic-speed Service: Hier stellst du ja nur das Fragmentieren von TCP und anderen Paketen ab, was bei langsamen Verbindungen ggf. einen Vorteil bringt. Die Geschwindigkeit setzt du aber nicht.
Vorschlag: Versuche es mal mit einem eigenen Netzwerk-Setup-Skript anstatt NetworkManager.
Dazu stellst du den NM-Service ab:
systemctl disable NetworkManager
//Edit: deinen nic-speed Service auch abschalten:
systemctl disable nic-speed-fix
Nach einem Reboot hast du dann kein Netzwerk, der Befehl:
ip link show dev eno1
sollte state DOWN anzeigen.
Einschalten kannst du den NM (wenn nötig) wieder mit:
systemctl enable NetworkManager
systemctl enable nic-speed-fix
reboot
Ich habe auf die Schnelle mal das zusammengezimmert:
#!/usr/bin/sh
DEV=eno1
echo "Start"
date +%X
#
echo "UP"
date +%X
ip link set $DEV up
#
echo "Speed"
date +%X
# ethtool -s $DEV advertise 0x002 autoneg on
ethtool -s $DEV speed 10 duplex full autoneg off
ethtool -K $DEV tso off gso off
#
echo "Get IP"
date +%X
dhcpcd $DEV
#
echo "Ping"
date +%X
ping -c 5 8.8.8.8
ping -c 1 google.de
Das Skript speicherst du z.B. unter /usr/local/bin/nic-up.sh
Starten kannst du es als root oder per sudo:
sh /usr/local/bin/nic-up.sh
sudo sh /usr/local/bin/nic-up.sh
Das Skript setzt die Nic UP, stellt per ethtool (hoffentlich!) eine 10baseT/FULL Verbindung ein und bezieht dann per dhcp die IP-Adresse. Versucht dann 5 Pings an einen Google-Nameserver und einen (wegen der DNS-Namensauflösung) direkt zu google.de.
Zwischendrin sind ein paar echo's und Zeitausgaben eingestreut um ggf. Zeitprobleme zu erkennen.
Poste doch bitte dann mal:
a) die komplette Ausgabe des Skripts
b) journalctl -S HH:MM --no-hostname --no-pager
(Für HH:MM setzt du die erste Zeit ein, die das Skript dir anzeigt)
Das ist dann ein kleiner Journal-Auszug, den kannst du sicher hier einstellen.
Es kann sein, daß der letzte Ping nach google.de einen Fehler wirft, dann klappt die Namensauflösung nicht aufgrund dem, wie NM diese handhabt. Das kann aber leicht geändert werden.
Falls die Namensauflösung funktioniert, dann kannst du ja mal eine Zeitlang unter der Konstellation testen, ob es bzgl. der Probleme (Geschwindigkeit, evtl. Abbrüche) beim "normalen Browsen, Netzwerken" einen Unterschied gibt.
Ziel des ganzen wäre:
a) Gibt es damit auch Verzögerungen beim Aufbau des Links und/oder IP-Bezug?
b) Es ist ein zusammenhängender Vorgang, der sich ggf. leichter diagnostizieren läßt.
c) Sorgt diese händische Methode ggf. für eine stabilere Verbindung bzgl. deiner "Gegebenheiten"
Evtl. wäre das eine Grundlage für einen eigenen Service (davon ist das Skript momentan weit entfernt), dann könntest du auf NM o.ä. verzichten.
Momentan - wenn du etwas ändern wolltest - bedarf es eines Reboots und erneuten Starten des Skripts.
Bei groben Problemen helfe ich dir gerne jetzt noch weiter, ich hoffe keine Fehler ins Skript eingebaut zu haben (nur in einer virtuellen Maschine getestet).