Skip to content

ROCKPro64 - Zwei LAN Schnittstellen / VLAN einrichten

ROCKPro64
  • Im Sommer 2018 hatte ich schon mal mit einer zweiten LAN Schnittstelle rumgespielt.
    https://forum.frank-mankel.org/topic/201/rockpro64-firewall-mit-zwei-lan-schnittstellen

    Da ich aktuell mal wieder ein Projekt im Kopf habe, habe ich das mal mit Kamils aktuellem Debian Minimal Image nachgebaut. Aber, auch Stunden später bekam ich das Forwarding nicht zum Funktionieren. Warum? Das weiß ich nicht, ich hatte keine vernünftigen Fehlermeldungen gefunden. Für mich sieht es so aus, als wenn das Kernelmodul nicht korrekt, bzw. gar nicht, arbeitet.

    Dann heute Morgen beim Kaffee der Lichtblitz! Damals hatte ich ein Ubuntu Image benutzt, also mache ich das jetzt auch mal. Und ich fange mal hinten an, es funktioniert einwandfrei, wie erwartet 🙂

    Dann mal von vorne.

    Hardware

    • ROCKPro64
    • USB-c -> LAN Adapter

    Software

    • Bionic Minimal Link

      rock64@rock64:~$ uname -a
      Linux rock64 4.4.197-1236-rockchip-ayufan-g30faab37e339 #1 SMP Tue Oct 22 11:35:10 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux
      

    Schnittstellen

    • WAN (eingebaute LAN-Schnittstelle) eth0

    • LAN (USB-c to LAN Adapter) enx00e04c68026f

    • WLAN nicht benutzt!

      rock64@rock64:~$ ip a
      1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
          link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
          inet 127.0.0.1/8 scope host lo
             valid_lft forever preferred_lft forever
          inet6 ::1/128 scope host 
             valid_lft forever preferred_lft forever
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
          link/ether 62:03:b0:d6:dc:b3 brd ff:ff:ff:ff:ff:ff
          inet 192.168.3.10/24 brd 192.168.3.255 scope global dynamic eth0
             valid_lft 7054sec preferred_lft 7054sec
          inet6 2a02:908:1266:9690:6003:b0ff:fed6:dcb3/64 scope global dynamic mngtmpaddr noprefixroute 
             valid_lft 7173sec preferred_lft 573sec
          inet6 fe80::6003:b0ff:fed6:dcb3/64 scope link 
             valid_lft forever preferred_lft forever
      3: enx00e04c68026f: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
          link/ether 00:e0:4c:68:02:6f brd ff:ff:ff:ff:ff:ff
      4: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state DORMANT group default qlen 1000
          link/ether ac:83:f3:e6:1f:b2 brd ff:ff:ff:ff:ff:ff
      

    Wie man die Namen der Schnittstellen vernünftig hinbekommt, hatte ich hier schon mal erklärt. Für diesen Test hier, lasse ich sie wie sie sind.

    Als erstes müssen wir jetzt mal die zweite Schnittstelle konfigurieren.

    Schnittstellen konfigurieren

    eth0

    DHCP
    192.168.3.x
    

    enx00e04c68026f

    192.168.0.0/24
    

    Gut, eth0 soll sich per DHCP einen Netzwerkadresse besorgen. Die enx.. bekommt eine private IP-Adresse verpasst. Da Ubuntu das mit Netplan macht, müssen wir jetzt das folgende File bearbeiten.

    /etc/netplan/eth0.yaml
    

    Das Ergebnis

    network:
      version: 2
      renderer: networkd
      ethernets:
        eth0:
          dhcp4: true
        enx00e04c68026f:
          dhcp4: no
          addresses: [192.168.0.1/24]
    

    Netzwerk neustarten

    Direkt mit

    netplan apply      
    

    oder mit

    netplan try
    

    Danach sollte das Netzwerk so aussehen.

    rock64@rock64:~$ ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
        link/ether 62:03:b0:d6:dc:b3 brd ff:ff:ff:ff:ff:ff
        inet 192.168.3.10/24 brd 192.168.3.255 scope global dynamic eth0
           valid_lft 6501sec preferred_lft 6501sec
        inet6 2a02:908:1266:9690:6003:b0ff:fed6:dcb3/64 scope global dynamic mngtmpaddr noprefixroute 
           valid_lft 7161sec preferred_lft 561sec
        inet6 fe80::6003:b0ff:fed6:dcb3/64 scope link 
           valid_lft forever preferred_lft forever
    3: enx00e04c68026f: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:e0:4c:68:02:6f brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.1/24 brd 192.168.0.255 scope global enx00e04c68026f
           valid_lft forever preferred_lft forever
        inet6 fe80::2e0:4cff:fe68:26f/64 scope link 
           valid_lft forever preferred_lft forever
    4: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state DORMANT group default qlen 1000
        link/ether ac:83:f3:e6:1f:b2 brd ff:ff:ff:ff:ff:ff
    

    Konfiguration iptables

    Damit ein Paket jetzt von der Schnittstelle enx.. nach eth0 kommt, brauchen wir ein paar Regeln, die das erledigen. Dazu benutzen wir iptables. Das ist im Ubuntu Image nicht enthalten, also installieren wir das eben.

    apt install iptables
    

    Danach erstellen wir ein Script /etc/firewall.sh

    #!/bin/sh
    # This is a more complex setup, for a home firewall:
    # * One interface plug to the ISP conection (eth0). Using DHCP.
    # * One interface plug to the local LAN switch (eth1). Using 192.168.0.0/24.
    # * Traffic open from the LAN to the SSH in the firewall.
    # * Traffic open and translated, from the local LAN to internet.
    # * Traffic open from internet, to a local web server.
    # * Logging of dropped traffic, using a specific ''log level'' to configure a separate file in syslog/rsyslog.
    
    PATH='/sbin'
    
    ## Network
    INNET="192.168.0.0/24"
    OUTNET="192.168.3.0/24"
    
    INIF="enx00e04c68026f"
    OUTIF="eth0"
    
    
    ## INIT
    
    # Flush previous rules, delete chains and reset counters
    iptables -F
    iptables -X
    iptables -Z
    iptables -t nat -F
    
    # Default policies
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    
    echo -n '1' > /proc/sys/net/ipv4/ip_forward
    echo -n '0' > /proc/sys/net/ipv4/conf/all/accept_source_route
    echo -n '0' > /proc/sys/net/ipv4/conf/all/accept_redirects
    echo -n '1' > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    echo -n '1' > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
    
    # Enable loopback traffic
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    
    # Enable statefull rules (after that, only need to allow NEW conections)
    iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
    # Drop invalid state packets
     iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
     iptables -A OUTPUT -m conntrack --ctstate INVALID -j DROP
     iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP
     
     ## INPUT
     
     # Incoming ssh from the LAN
     iptables -A INPUT -i $INIF -s ${INNET} -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
     
     # TEST Please remove!!
     iptables -A INPUT -i $OUTIF -s ${OUTNET} -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
     
     # Allow any connection from this host.
     iptables -A INPUT -i lo -j ACCEPT
        
     # Allow any connection from the local network.
     iptables -A INPUT -s ${INNET} -j ACCEPT
       
     # Allow all broadcast traffic.
     iptables -A INPUT -m pkttype --pkt-type broadcast -j ACCEPT
        
     ## OUTPUT
       
     # Enable al outgoing traffic to internet
     iptables -A OUTPUT -o $OUTIF -d ${OUTNET} -j ACCEPT
        
     # Enable access traffic, from the firewall to the LAN network
     iptables -A OUTPUT -o $INIF -d ${INNET} -j ACCEPT
    

    Das starten wir nun mal zum Testen.

    sudo chmod +x firewall.sh
    sudo ./firewall.sh
    

    Es geht. Der Traffic an der Schnittstelle enx.. wird nach eth0 geroutet und maskiert.

    IPTables Rules permanent machen

    Nun kann man testen ob alles so funktioniert, wie es soll. Sollte dies nun alles problemlos funktionieren schreiben wir ein Script, so das das Firewall-Script automatisch beim Starten des ROCKPro64 ausgeführt wird.

    Unter /etc/rc.local folgendes Script erstellen.

    #!/bin/sh
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
    
    set -e
    
    # Launch my netfilter rules
    if [ -e '/etc/firewall.sh' ]
    then
    /bin/sh '/etc/firewall.sh'
    fi
    
    exit 0
    

    Rechte entsprechend anpassen.

    sudo chmod +x rc.local
    

    Danach den Rechner neu starten. Macht dies bitte ganz zum Schluss, wenn alles klappt.

    DHCP-Server

    Damit wir den PCs an der enx.. Schnittstellen, die Adressen nicht von Hand vergeben müssen, benötigen wir einen DHCP-Server.

    sudo apt install isc-dhcp-server
    

    Danach müssen wir den DHCP-Server konfigurieren.

    /etc/dhcp/dhcpd.conf

    Das hier der Datei hinzufügen.

    # On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
    # Separate multiple interfaces with spaces, e.g. "eth0 eth1".
    INTERFACESv4="enx00e04c68026f";
    INTERFACESv6="";
    
    #authoritative;
    
    # Sample /etc/dhcpd.conf
    # (add your comments here) 
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.0.255;
    option routers 192.168.0.1;
    option domain-name-servers 192.168.3.1, 1.1.1.1;
    
    subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.10 192.168.0.100;
    #range 192.168.1.10 192.168.1.20;
    }
    

    Ich hatte ein paar Probleme mit der Konfig, weil da ; fehlten. Mit folgendem Befehl kann man die Konfig testen.

    dhcpd -t -cf /etc/dhcp/dhcpd.conf   
    

    Starten

    sudo service isc-dhcp-server start
    

    Status

    sudo service isc-dhcp-server status
    

    Am Ende klappt alles so, wie ich es mir vorgestellt habe.

    Speedtest

    frank@debian:~$ iperf3 -s
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    Accepted connection from 192.168.3.10, port 41128
    [  5] local 192.168.3.213 port 5201 connected to 192.168.3.10 port 41130
    [ ID] Interval           Transfer     Bitrate
    [  5]   0.00-1.00   sec  61.9 MBytes   519 Mbits/sec                  
    [  5]   1.00-2.00   sec  73.2 MBytes   614 Mbits/sec                  
    [  5]   2.00-3.00   sec  73.1 MBytes   613 Mbits/sec                  
    [  5]   3.00-4.00   sec  73.4 MBytes   615 Mbits/sec                  
    [  5]   4.00-5.00   sec  73.2 MBytes   614 Mbits/sec                  
    [  5]   5.00-6.00   sec  73.0 MBytes   613 Mbits/sec                  
    [  5]   6.00-7.00   sec  73.3 MBytes   615 Mbits/sec                  
    [  5]   7.00-8.00   sec  73.3 MBytes   615 Mbits/sec                  
    [  5]   8.00-9.00   sec  73.7 MBytes   619 Mbits/sec                  
    [  5]   9.00-10.00  sec  73.7 MBytes   618 Mbits/sec                  
    [  5]  10.00-10.07  sec  5.82 MBytes   679 Mbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate
    [  5]   0.00-10.07  sec   728 MBytes   606 Mbits/sec                  receiver
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    Accepted connection from 192.168.3.10, port 41132
    [  5] local 192.168.3.213 port 5201 connected to 192.168.3.10 port 41134
    [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
    [  5]   0.00-1.00   sec  94.7 MBytes   794 Mbits/sec    0   3.05 MBytes       
    [  5]   1.00-2.00   sec  97.5 MBytes   818 Mbits/sec    0   3.05 MBytes       
    [  5]   2.00-3.00   sec  97.5 MBytes   818 Mbits/sec    0   3.05 MBytes       
    [  5]   3.00-4.00   sec  96.2 MBytes   808 Mbits/sec    0   3.05 MBytes       
    [  5]   4.00-5.00   sec  96.2 MBytes   807 Mbits/sec    0   3.05 MBytes       
    [  5]   5.00-6.00   sec  97.5 MBytes   818 Mbits/sec    0   3.05 MBytes       
    [  5]   6.00-7.00   sec  96.2 MBytes   807 Mbits/sec    0   3.05 MBytes       
    [  5]   7.00-8.00   sec  96.2 MBytes   807 Mbits/sec    0   3.05 MBytes       
    [  5]   8.00-9.00   sec  97.5 MBytes   818 Mbits/sec    0   3.05 MBytes       
    [  5]   9.00-10.00  sec  97.5 MBytes   818 Mbits/sec    0   3.05 MBytes       
    [  5]  10.00-10.04  sec  3.75 MBytes   803 Mbits/sec    0   3.05 MBytes       
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate         Retr
    [  5]   0.00-10.04  sec   971 MBytes   811 Mbits/sec    0             sender
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    

    Es ist nicht voll die Bandbreite der Gigabit Schnittstelle. Ob das jetzt normal ist, kann ich nicht sagen, ich mache dazu aber noch ein paar Tests.

    Die Quelle des Scriptes habe ich nicht mehr vorliegen. Möchte mich aber hier dafür bedanken! Ich habe es etwas angepasst, damit es einfacher ist es zu administrieren. Bitte auf diese zwei Zeilen achten!

    # TEST Please remove!!
    iptables -A INPUT -i $OUTIF -s ${OUTNET} -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
    

    Das habe ich mir eingebaut, um über das WAN auf den ROCKPro64 zu kommen. Das ist, je nach Anwendung, nicht unbedingt sinnvoll. Also aufpassen und ggf. auskommentieren!

  • So ganz langsam, komme ich bei meinem ROCKPro64 weiter 🙂 Was habe ich im Hinterkopf? Ich würde gerne einen Router / Firewall damit bauen, den ich an Stelle meiner pfSense hängen kann. Da ich diese im Prinzip nur zur Trennung meiner Netze benutze und den Zugriff von außen entsprechend blocke, sollte das auch mit meinem Wissen machbar sein 😉

    Oben, im ersten Beitrag seht ihr, was ich mit den beiden Schnittstellen anstelle. Hier noch mal was ich vorhabe.

    Schnittstellen

    • WAN (eingebaute LAN-Schnittstelle) eth0
    • LAN (USB-c to LAN Adapter) enx00e04c68026f
    • WLAN nicht benutzt!

    Die WAN Schnittstelle stellt die Internetverbindung her. In meinem Fall, hänge ich damit an meiner Fritzbox und beziehe mittels DHCP die Daten.

    Die LAN Schnittstelle, soll mehrere Netzwerke zur Verfügung stellen. Zum Üben, fangen wir mit zwei Netzwerken an. Da wir am ROCKPro64 ja nicht viele Netzwerkschnittstellen haben, möchte ich das gerne mittels VLAN realisieren. Dazu benutzt man dann später einen VLAN fähigen Switch. Dieser trennt dann die Netze wieder, die vorher zusammen auf der LAN Schnittstelle übertragen wurden.

    Als Switch liegt hier ein Netgear GS108E rum. Ok, genug der Erklärung, dann mal ran an die VLAN Lösung 🙂

    Software

    rock64@rock64:~$ uname -a
    Linux rock64 4.4.202-1237-rockchip-ayufan-gfd4492386213 #1 SMP Sat Nov 23 13:55:47 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux
    

    Und das brauchen wir
    apt install vlan

    Das Paket vlan wird nicht benötigt. Danke Nico für den Tipp! Das Paket

    vlan/bionic-updates,now 1.9-3.2ubuntu6 arm64 [installed]
     user mode programs to enable VLANs on your ethernet devices
    

    Wenn man folgende Dateien braucht, ist das sinnvoll.
    https://packages.debian.org/de/stretch/amd64/vlan/filelist

    Ich benötige das so aber nicht. Also, habe ich das Paket wieder deinstalliert. Somit ist die ganze VLan Geschichte im Kernel drin, dafür braucht es kein Kernelmodul oder was Anderes.

    Netzwerk Konfiguration

    /etc/netplan/eth0.yaml

    network:
      version: 2
      renderer: networkd
      ethernets:
        eth0:
          dhcp4: true
    
        enx00e04c68026f: {}
    
      vlans:
          eth1.100:
              id: 100
              link: enx00e04c68026f
              addresses: [192.168.1.1/24]
          eth1.200:
              id: 200
              link: enx00e04c68026f
              addresses: [192.168.2.1/24]
    

    Hier sieht man, das ich auf eth0 DHCP setze und auf die Schnittstelle enx00e04c68026f zwei VLANs mit ID 100 und ID 200. Wenn man weiß wie es geht, kein Hexenwerk. Das Resultat sieht so aus.

    rock64@rock64:/etc$ ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
        link/ether 62:03:b0:d6:dc:b3 brd ff:ff:ff:ff:ff:ff
        inet 192.168.3.10/24 brd 192.168.3.255 scope global dynamic eth0
           valid_lft 3909sec preferred_lft 3909sec
        inet6 2a02:908:1266:9690:6003:b0ff:fed6:dcb3/64 scope global dynamic mngtmpaddr noprefixroute 
           valid_lft 7158sec preferred_lft 558sec
        inet6 fe80::6003:b0ff:fed6:dcb3/64 scope link 
           valid_lft forever preferred_lft forever
    3: enx00e04c68026f: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:e0:4c:68:02:6f brd ff:ff:ff:ff:ff:ff
        inet6 fe80::2e0:4cff:fe68:26f/64 scope link 
           valid_lft forever preferred_lft forever
    4: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state DORMANT group default qlen 1000
        link/ether ac:83:f3:e6:1f:b2 brd ff:ff:ff:ff:ff:ff
    5: eth1.200@enx00e04c68026f: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 00:e0:4c:68:02:6f brd ff:ff:ff:ff:ff:ff
        inet 192.168.2.1/24 brd 192.168.2.255 scope global eth1.200
           valid_lft forever preferred_lft forever
        inet6 fe80::2e0:4cff:fe68:26f/64 scope link 
           valid_lft forever preferred_lft forever
    6: eth1.100@enx00e04c68026f: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 00:e0:4c:68:02:6f brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.1/24 brd 192.168.1.255 scope global eth1.100
           valid_lft forever preferred_lft forever
        inet6 fe80::2e0:4cff:fe68:26f/64 scope link 
           valid_lft forever preferred_lft forever
    

    Sollte so weit klar sein!? Ich habe dafür etwas Zeit gebraucht um das zu verstehen. Aber dafür macht man das ja 🙂

    IPTables

    Der nächste Schritt wäre dann, das Firewall Script anzupassen. Hier mal direkt das Ergebnis.

    #!/bin/sh
    # This is a more complex setup, for a home firewall:
    # * One interface plug to the ISP conection (eth0). Using DHCP.
    # * One interface plug to the local LAN switch (eth1). Using 192.168.0.0/24.
    # * Traffic open from the LAN to the SSH in the firewall.
    # * Traffic open and translated, from the local LAN to internet.
    # * Traffic open from internet, to a local web server.
    # * Logging of dropped traffic, using a specific ''log level'' to configure a separate file in syslog/rsyslog.
    
    PATH='/sbin'
    
    ## Network
    INNET="192.168.1.0/24"
    IN_NET2="192.168.2.0/24"
    
    OUTNET="192.168.3.0/24"
    
    INIF="eth1.100"
    IN_IF2="eth1.200"
    
    OUTIF="eth0"
    
    
    ## INIT
    
    # Flush previous rules, delete chains and reset counters
    iptables -F
    iptables -X
    iptables -Z
    iptables -t nat -F
    
    # Default policies
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    
    echo -n '1' > /proc/sys/net/ipv4/ip_forward
    echo -n '0' > /proc/sys/net/ipv4/conf/all/accept_source_route
    echo -n '0' > /proc/sys/net/ipv4/conf/all/accept_redirects
    echo -n '1' > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    echo -n '1' > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
    
    # Enable loopback traffic
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    
    # Enable statefull rules (after that, only need to allow NEW conections)
    iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
    
    # Drop invalid state packets
    iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
    iptables -A OUTPUT -m conntrack --ctstate INVALID -j DROP
    iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP
        
    ## INPUT
        
    # Incoming ssh from the LAN
    iptables -A INPUT -i $INIF -s ${INNET} -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
       
    # TEST Please remove!!
    iptables -A INPUT -i $OUTIF -s ${OUTNET} -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
        
    # Allow any connection from this host.
    iptables -A INPUT -i lo -j ACCEPT
           
    # Allow any connection from the local network.
    iptables -A INPUT -s ${INNET} -j ACCEPT
    iptables -A INPUT -s ${IN_NET2} -j ACCEPT
        
    # Allow all broadcast traffic.
    iptables -A INPUT -m pkttype --pkt-type broadcast -j ACCEPT
           
    ## OUTPUT
            
      
    # Enable al outgoing traffic to internet
    iptables -A OUTPUT -o $OUTIF -d ${OUTNET} -j ACCEPT
       
    # Enable access traffic, from the firewall to the LAN network
    iptables -A OUTPUT -o $INIF -d ${INNET} -j ACCEPT
    iptables -A OUTPUT -o $IN_IF2 -d ${IN_NET2} -j ACCEPT
    
    ## FORWARD
    
    # We have dynamic IP (DHCP), so we've to masquerade
    iptables -t nat -A POSTROUTING -o $OUTIF -j MASQUERADE
    iptables -A FORWARD -o $OUTIF -i $INIF -s ${INNET} -m conntrack --ctstate NEW -j ACCEPT
    iptables -A FORWARD -o $OUTIF -i $IN_IF2 -s ${IN_NET2} -m conntrack --ctstate NEW -j ACCEPT
    
    # Redirect HTTP (tcp/80) to the web server (192.168.0.2)
    #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \
    # -j DNAT --to-destination 192.168.0.2:80
    #
    #iptables -A FORWARD -i eth0 -p tcp --dport 80 \
    # -o eth1 -d 192.168.0.2 \
    # -m conntrack --ctstate NEW -j ACCEPT
    
    ## LOGGING
    
    iptables -A INPUT -j LOG --log-level 4 --log-prefix '[FW INPUT]: '
    iptables -A OUTPUT -j LOG --log-level 4 --log-prefix '[FW OUTPUT]: '
    iptables -A FORWARD -j LOG --log-level 4 --log-prefix '[FW FORWARD ]: '
    

    Das Script vom ersten Beitrag habe ich jetzt nur um das zweite Netzwerk erweitert. Jetzt noch den DHCP-Server.

    DHCP-Server

    /etc/dhcp/dhcpd.conf

    Die Ergänzung am Ende der Datei, die ich vorgenommen habe.

     # On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
     # Separate multiple interfaces with spaces, e.g. "eth0 eth1".
     INTERFACESv4="enx00e04c68026f";
     INTERFACESv6="";
     
     #authoritative;
     
     # Sample /etc/dhcpd.conf
     # (add your comments here) 
     #option subnet-mask 255.255.255.0;
     #option broadcast-address 192.168.1.255;
     #option routers 192.168.1.1;
     #option domain-name-servers 192.168.3.1, 1.1.1.1;
     
     subnet 192.168.1.0 netmask 255.255.255.0 {
     option subnet-mask 255.255.255.0;
     option broadcast-address 192.168.1.255;
     option routers 192.168.1.1;
     option domain-name-servers 192.168.3.1, 1.1.1.1;
     range 192.168.1.10 192.168.1.100;
     #range 192.168.1.10 192.168.1.20;
     }
     
     # Sample /etc/dhcpd.conf
     # (add your comments here) 
     #option subnet-mask 255.255.255.0;
     #option broadcast-address 192.168.2.255;
     #option routers 192.168.1.1;
     #option domain-name-servers 192.168.3.1, 1.1.1.1;
     
     subnet 192.168.2.0 netmask 255.255.255.0 {
     option subnet-mask 255.255.255.0;
     option broadcast-address 192.168.2.255;
     option routers 192.168.2.1;
     option domain-name-servers 192.168.3.1, 1.1.1.1;
     range 192.168.2.10 192.168.2.100;
     #range 192.168.1.10 192.168.1.20;
     }
    

    Das wäre alles auf dem ROCKPro64, einmal durchstarten und es sollte alles passen.

    NETGEAR

    Bildschirmfoto vom 2020-01-26 11-35-11.png

    VLAN / 802.1Q

    Bildschirmfoto vom 2020-01-26 11-35-59.png

    • Port 1 Uplink
    • Port 2 VLAN ID 100
    • Port 3 VLAN ID 200

    Am Uplink kommt der ROCKPro64 dran, an den beiden VLANs habe ich jeweils ein Notebook dran gehangen. Wenn ich das Notebook an ID 100 hänge und mir mittels DHCP eine Adresse hole, bekomme ich eine Adresse aus dem IP-Bereich

    range 192.168.1.10 192.168.1.100;
    

    Wenn ich das Notebook an ID 200 hänge, bekomme ich

    range 192.168.2.10 192.168.2.100;
    

    An beiden Notebooks komme ich ins Internet. Die Netze sind am Switch getrennt. Heißt, ich komme nicht auf das andere Notebook drauf. Das sollte so weit ich das überblicke ausreichend sein. Wenn nicht, dann bitte um ich um einen entsprechenden Kommentar.

    ToDo

    • Anpassung an ipv6

    Anmerkung

    Am Anfang wollte ich mich an folgende Anleitung halten
    https://wiki.debian.org/NetworkConfiguration#Howto_use_vlan_.28dot1q.2C_802.1q.2C_trunk.29_.28Etch.2C_Lenny.29

    Das scheint etwas veraltet zu sein, das Modul 8021q ist nicht vorhanden. Was nun? Lange gesucht....und nichts gefunden. Das scheint so nicht gebraucht zu werden. Hmm? 🤔 Direkt im Kernel vorhanden? Über Aufklärung würde ich mich freuen.

  • Das geht auch ganz gut mit Kamils Image. Wenn man ein paar Dinge beachtet.

    Interface Namen

    Wie man die Namen der Schnittstellen vernünftig hinbekommt, hatte ich hier schon mal erklärt. Ohne diese Änderung bekomme ich keine VLan Interfaces 🤔

    Vorher

    root@rockpro64:/etc/network/interfaces.d# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
        link/ether 62:03:b0:d6:dc:b3 brd ff:ff:ff:ff:ff:ff
        inet 192.168.3.5/24 brd 192.168.3.255 scope global dynamic eth0
           valid_lft 6235sec preferred_lft 6235sec
        inet6 fe80::6003:b0ff:fed6:dcb3/64 scope link 
           valid_lft forever preferred_lft forever
    3: enx00e04c68026f: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:e0:4c:68:02:6f brd ff:ff:ff:ff:ff:ff
        inet6 fe80::d14d:4937:6f2a:2c4c/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    4: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state DORMANT group default qlen 1000
        link/ether 52:9c:c8:8f:c2:3b brd ff:ff:ff:ff:ff:ff
    

    Nach der Änderung und dem Reboot sieht das dann so aus.

    root@rockpro64:/etc/network/interfaces.d# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
        link/ether 62:03:b0:d6:dc:b3 brd ff:ff:ff:ff:ff:ff
        inet 192.168.3.5/24 brd 192.168.3.255 scope global dynamic eth0
           valid_lft 6012sec preferred_lft 6012sec
        inet6 fe80::6003:b0ff:fed6:dcb3/64 scope link 
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:e0:4c:68:02:6f brd ff:ff:ff:ff:ff:ff
        inet6 fe80::bdcd:2144:4621:39b9/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    4: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state DORMANT group default qlen 1000
        link/ether d6:93:e6:6d:59:fb brd ff:ff:ff:ff:ff:ff
    

    Netzwerk

    /etc/network/interfaces.d/eth1

     auto eth1.100
     iface eth1.100 inet static
             address 192.168.1.1/24
             vlan-raw-device eth1
     
     auto eth1.200
     iface eth1.200 inet static
             address 192.168.2.1/24
             vlan-raw-device eth1
    

    Hier lege ich zwei VLans an, einmal eth1.100 und einmal eth1.200

    Ergebnis

    root@rockpro64:/etc/network/interfaces.d# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
        link/ether 62:03:b0:d6:dc:b3 brd ff:ff:ff:ff:ff:ff
        inet 192.168.3.5/24 brd 192.168.3.255 scope global dynamic eth0
           valid_lft 6012sec preferred_lft 6012sec
        inet6 fe80::6003:b0ff:fed6:dcb3/64 scope link 
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:e0:4c:68:02:6f brd ff:ff:ff:ff:ff:ff
        inet6 fe80::bdcd:2144:4621:39b9/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    4: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state DORMANT group default qlen 1000
        link/ether d6:93:e6:6d:59:fb brd ff:ff:ff:ff:ff:ff
    5: eth1.100@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 00:e0:4c:68:02:6f brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.1/24 brd 192.168.1.255 scope global eth1.100
           valid_lft forever preferred_lft forever
        inet6 fe80::2e0:4cff:fe68:26f/64 scope link 
           valid_lft forever preferred_lft forever
    6: eth1.200@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 00:e0:4c:68:02:6f brd ff:ff:ff:ff:ff:ff
        inet 192.168.2.1/24 brd 192.168.2.255 scope global eth1.200
           valid_lft forever preferred_lft forever
        inet6 fe80::2e0:4cff:fe68:26f/64 scope link 
           valid_lft forever preferred_lft forever
    

    Den Rest könnt ihr den oberen beiden Beiträgen entnehmen.

  • Das Setup heute mal getestet um zu sehen, ob das auch so funktioniert.

    • LAN an meine Fritzbox (DHCP)
    • an eth1.100 mein Notebook
    • an eth1.200 meine PS4

    Und dann mal gemütlich eine Runde MW gezockt. Läuft alles einwandfrei 🙂

  • Nextcloud - Update auf 28.0.0

    Nextcloud
    5
    0 Stimmen
    5 Beiträge
    338 Aufrufe
    FrankMF

    28.0.1 ist da. Den Log Reader wieder aktiviert. Gleiches Verhalten. Kann ich so leider nicht gebrauchen, also wieder deaktiviert.

  • GoAccess - Visual Web Log Analyzer

    Verschoben Linux
    1
    0 Stimmen
    1 Beiträge
    93 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    13 Beiträge
    798 Aufrufe
    N

    @frankm Alles Klar!
    Wie schon erwähnt, für meine Zwecke rechts! Die Jahre über hat gute Dienste geleistet (PCI-e und HDD) und wird hoffentlich auch noch ein paar Jahre bis zum nächsten Umbau tun!
    Vielen Dank!

  • Der 3. ROCKPro64

    ROCKPro64
    3
    0 Stimmen
    3 Beiträge
    911 Aufrufe
    FrankMF

    Nachdem ich jetzt mein NAS neu gemacht habe, schauen wir mal, was die Chinesen geliefert haben. Bestellt hatte ich

    ROCKPro64 v2.1 2GB RAM Kühlkörper Netzteil 3A USB-Adapter für eMMC-Modul

    Endlich habe ich mal an den USB-Adapter für das eMMC-Modul gedacht 🙂

    0_1540029624802_IMG_20181020_115348_ergebnis.jpg

    Was ist mir aufgefallen? Das Versionsdatum ist neu (siehe oben) Die PCIe NVMe Karte ist neu

    Bei der PCIe NVMe Karte liegt eine Abstandshülse aus Messing und eine winzig kleine Schraube bei. Damit bekomme ich aber nicht die NVMe-SSD befestigt. Ich habe dann gemurkst 😉 Da sollte Pine64 unbedingt nachbessern!

    So sieht das dann zusammengebaut aus.

    0_1540029756582_IMG_20181020_115425_ergebnis.jpg

    0_1540029767082_IMG_20181020_115438_ergebnis.jpg

    Da ich ein paarmal gelesen hatte, das Leute Probleme mit dem PCIe NVMe Adapter hatten, direkt als erstes mal ein Test ob das reibungslos funktioniert.

    Sys rock64@rockpro64:/mnt$ uname -a Linux rockpro64 4.4.132-1075-rockchip-ayufan-ga83beded8524 #1 SMP Thu Jul 26 08:22:22 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux lspci rock64@rockpro64:/mnt$ sudo lspci -vvv [sudo] password for rock64: 00:00.0 PCI bridge: Rockchip Inc. RK3399 PCI Express Root Port Device 0100 (prog-if 00 [Normal decode]) Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort+ <TAbort+ <MAbort+ >SERR+ <PERR+ INTx- Latency: 0 Interrupt: pin A routed to IRQ 238 Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 I/O behind bridge: 00000000-00000fff Memory behind bridge: fa000000-fa0fffff Prefetchable memory behind bridge: 00000000-000fffff Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR- BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [80] Power Management version 3 Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0+,D1+,D2-,D3hot+,D3cold-) Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME+ Capabilities: [90] MSI: Enable+ Count=1/1 Maskable+ 64bit+ Address: 00000000fee30040 Data: 0000 Masking: 00000000 Pending: 00000000 Capabilities: [b0] MSI-X: Enable- Count=1 Masked- Vector table: BAR=0 offset=00000000 PBA: BAR=0 offset=00000008 Capabilities: [c0] Express (v2) Root Port (Slot+), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0 ExtTag- RBE+ DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 5GT/s, Width x4, ASPM L1, Exit Latency L0s <256ns, L1 <8us ClockPM- Surprise- LLActRep- BwNot+ ASPMOptComp+ LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt+ AutBWInt+ LnkSta: Speed 5GT/s, Width x4, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise- Slot #0, PowerLimit 0.000W; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd Off, Power+ Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL+ CmdCplt- PresDet- Interlock- Changed: MRL- PresDet- LinkState- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Via message ARIFwd+ DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled ARIFwd- LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1- EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest- Capabilities: [100 v2] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+ AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn- Capabilities: [274 v1] Transaction Processing Hints Interrupt vector mode supported Device specific mode supported Steering table in TPH capability structure Kernel driver in use: pcieport 01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961 (prog-if 02 [NVM Express]) Subsystem: Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 237 Region 0: Memory at fa000000 (64-bit, non-prefetchable) [size=16K] Capabilities: [40] Power Management version 3 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] MSI: Enable- Count=1/32 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [70] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0.000W DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset- MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend- LnkCap: Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L0s unlimited, L1 <64us ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+ LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk- ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt- LnkSta: Speed 5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Not Supported DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1- EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest- Capabilities: [b0] MSI-X: Enable+ Count=8 Masked- Vector table: BAR=0 offset=00003000 PBA: BAR=0 offset=00002000 Capabilities: [100 v2] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+ AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn- Capabilities: [148 v1] Device Serial Number 00-00-00-00-00-00-00-00 Capabilities: [158 v1] Power Budgeting <?> Capabilities: [168 v1] #19 Capabilities: [188 v1] Latency Tolerance Reporting Max snoop latency: 0ns Max no snoop latency: 0ns Capabilities: [190 v1] L1 PM Substates L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+ PortCommonModeRestoreTime=10us PortTPowerOnTime=10us L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1- T_CommonMode=0us LTR1.2_Threshold=0ns L1SubCtl2: T_PwrOn=10us Kernel driver in use: nvme

    Da sieht alles gut aus. x4 alles Bestens!

    iozone rock64@rockpro64:/mnt$ sudo iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 Iozone: Performance Test of File I/O Version $Revision: 3.429 $ Compiled for 64 bit mode. Build: linux Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins Al Slater, Scott Rhine, Mike Wisner, Ken Goss Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR, Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner, Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone, Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root, Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer, Vangel Bojaxhi, Ben England, Vikentsi Lapa. Run began: Sat Oct 20 10:08:28 2018 Include fsync in write timing O_DIRECT feature enabled Auto Mode File size set to 102400 kB Record Size 4 kB Record Size 16 kB Record Size 512 kB Record Size 1024 kB Record Size 16384 kB Command line used: iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 Output is in kBytes/sec Time Resolution = 0.000001 seconds. Processor cache size set to 1024 kBytes. Processor cache line size set to 32 bytes. File stride size set to 17 * record size. random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 102400 4 63896 108269 91858 95309 32845 73173 102400 16 123393 236653 273766 275807 118450 199130 102400 512 471775 570571 484612 496942 441345 575817 102400 1024 544229 642558 508895 511834 486506 647765 102400 16384 1044520 1100322 1069825 1092146 1089301 1086757 iozone test complete.

    Das sieht nicht optimal aus, schau ich mir später an. Das hier soll nur ein kurzer Test sein ob das Board rennt 🙂

    Nachdem ich mittlerweile zwei ROCKPro64 im "produktiven" Einsatz habe, war es immer sehr mühsam mal eben was zu testen. Man will die anderen ja nicht immer ausmachen, dran rumhantieren usw. Deswegen jetzt der dritte, der im Moment dann die Rolle des Testkandidaten einnimmt. Ab sofort kann ich wieder nach Lust und Laune, neue Images testen usw.

  • 0 Stimmen
    2 Beiträge
    724 Aufrufe
    FrankMF
    Ergänzung

    Mal ein paar Filme vom meinem aktuellen NAS auf die Platte an der PCIe SATA-Karte geschaufelt.

    0_1535474720924_rp64_copy_NAS_to_SATA.png

    Ok, Geschwindigkeit ist für ein Datengrab noch akzeptabel.

  • NVMe-Platte einrichten

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    1k Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    1 Beiträge
    787 Aufrufe
    Niemand hat geantwortet
  • Minicom

    Linux
    1
    0 Stimmen
    1 Beiträge
    473 Aufrufe
    Niemand hat geantwortet