• onlinepersona@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    11 hours ago

    The problem with networking is debugging it. The worst is debugging iptables and nftables. Figuring out which chain they are going to is a massive hassle. How come we don’t have any graphical tools whatsoever for this work?

    • printf("%s", name);@piefed.blahaj.zoneOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      11 hours ago

      As for iptables, doesn’t -j tell you where the packets are going? Or do you mean what their destination addresses and ports are? For that, on Linux, I use ss or lsof. I have never used it myself, but doesn’t ufw have some GUI?

      • onlinepersona@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        10 hours ago

        Reading the iptables dump is not for beginners. Far from it. A packet can go through all tables and chains or none. And allowing a packet in one chain then begs the questions which is the next table or chain. There are maybe 100 flags and nobody can memorise them all.

        Ufw just allows adding rules, ss doesn’t trace packages as they go through the firewall, it can show you open ports and established connections, but it can show you which tables and chains a packet went through. lsof is even more rudimentary than ss and literally means “list open files”. Since everything is a file in linux, that’s a lot of files. Again, no tracing.

        Somebody will say “just tcpdump”. Again, no that doesn’t trace which tables and chains a packet goes through. The entire firewall is a blackbox to tcpdump. At least to my knowledge. All it sees is which packets arrived and which were sent on the selected interfaces, and whether they was successful or not.

        Nothing I know of traces a packet through the firewall and presents in a TUI nor GUI. I know that it’s possible to make copies of packets and send then to custom chains that can log the chain and packet it came from. There might even be a way of generating a trace by adding a rule to a chain, which means adding it to every chain, but I’m not sure I’ve seen something do that.

        • printf("%s", name);@piefed.blahaj.zoneOP
          link
          fedilink
          English
          arrow-up
          0
          ·
          10 hours ago

          I digress. The documentation on iptables alone is an arduous read at best and requires dedication to get through and to understand. With that said, while you “cannot” (loosely said) follow any one singular packet from an iptables listing, using tcpdump will at least let you know wherefrom it connections originate and where they are terminating. Again, it is a hard read, not very beginner friendly, but I think it is also enough for the majority of threat models.

          Question: does the person that feels that reading and understand iptables listings and tcpdumps really need to know - through an easy to read/understand UI - what chains and tables any one specific packet has traversed? What scenario/threat model/situation would that be? I’m all for discussing and widening my point of view, so don’t hold back! 😊

          • onlinepersona@programming.dev
            link
            fedilink
            English
            arrow-up
            0
            ·
            8 hours ago

            Regarding your question, I’ve had trouble multiple times with docker (and other software) that required trying to find out just where a packet was getting stuck. The worst thing is when you open a port in the container to 0.0.0.0, send a request to it (HTTP, telnet, or otherwise) from the host via the container’s IP and the packet doesn’t arrive. Then you have to run through the gamut of:

            • are the interfaces up?
            • is it the IP address that’s wrong?
            • is the the port wrong?
            • is the network mask correct?
            • is the gateway IP correct?
            • is the firewall somehow interfering?

            There might be other things I’m missing, but once I get to the firewall stage, most of the time I just give up, put the service into a VM and try accessing it from there - if I really really care. Otherwise, I drop it and move on.

            I did just find this Network address translation part 1 – packet tracing which allows tracing a packet through the firewall via xtables-monitor. It’s in my notes now, so if I run into the problem again, I might have a place to start next time.

            But still, that’s just on my machine. Once things happen on the network and there are routers and other things involved, it’s very difficult for me to debug.