I've figured out what the problem was. It seems unlikely, but just in case anyone else has the same issue: I had a BLTouch connected to the board, but I had connected two of the wires to the wrong pins. This apparently caused the board to boot into a weird state where some features worked, and others didn't (e.g. connecting to the PC with USB and talking to the board with Pronterface still seemed to work fine, but the Ethernet port did not).
Connecting the BLTouch properly has fixed this issue.