Hola:
En el código que estás haciendo no hay nada mal hasta donde puede verse.
Quizás no se esté ejecutando en el orden correcto : debe llamarse a Nat(...) que tiene pinta de ser el constructor de la clase antes de llamar a insertarEntradaEnTabla(...) que imagino es un método de la misma clase Nat.
Un posible error que suele ser habitual en gente que empieza es que declaran sin querer dos variables con el mismo nombre, inicializando una y usando otra. En tu caso, podrías tener ese error si has puesto "RegistroDeTraduccionInterfaz [] tabla" en algún otro sitio aparte del que muestras en el código, ya que estarías declarando otra variable con el mismo nombre.
Se bueno.
Ya encontré el fallo, efectivamente lo que he puesto está bien, el error era que en el programa principal justo después de crear la tabla se invocaba una clase que vaciaba esta tabla y dentro de esta clase lo único que había era un this.tabla = null
Se me olvidó poner también lo de tabla = new RegistroDeTraduccionInterfaz[ 10000 ]
El problema que tengo ahora es el siguiente:
IstInterfaz Publico = buscaIstPrivado(paquete.getIstOrigen());
paquete.getIstOrigen().setDireccion(Publico.getDireccion());
paquete.getIstOrigen().setPuerto(Publico.getPuerto());
Teniendo en cuenta que buscaIstPrivado devuelve un IstInterfaz y crea la primera entrada en la tabla (tabla[0]) por que cuando hago las dos líneas siguientes, aparte de afectar a "paquete" afecta a la tabla?
Quiero decir, si justo después de IstInterfaz Publico = buscaIstPrivado (paquete.getIstOrigen()); hago System.out.println(tabla[0].getIstPrivado().getDireccion()); me aparece una dirección llamemosle A. Bien, pues si este print lo hago tras la última sentencia, la dirección es diferente.
Las clases creo que por el nombre se entiende lo que hacen, pero lo pongo:
getIstOrigen() --> retorna el Ist
setDireccion(InetAddress) --> cambia la dirección
setPuerto(int) --> cambia el puerto
paquete es del mismo tipo que la tabla --> RegistroDeTraduccionInterfaz