> ## Documentation Index
> Fetch the complete documentation index at: https://docs.avert.ldeo.columbia.edu/llms.txt
> Use this file to discover all available pages before exploring further.

# Networking

The system is designed with a local area network (LAN) in mind - an array of nodes connected via radios. The embeddedTS-7970 has two ethernet ports, and can have a number of additional ethernet ports added via the USB 2.0 ports. These ports can all be configured to operate on separate LANs.

## Persistent network interface naming

In order to make things a little easier, we have opted to hardcode the names of the network interfaces. This is achieved by adding a `udev` ruleset for each hardware port, which have a unique MAC address. These can be identified using `ip addr show`. Look for the `end0` (commonly port B) and `enp0s1` (commonly port A) and record the MAC addresses for each. These may also be listed on the physical ports as well.

Create a new file called `70-persistent-net.rules` (the name doesn’t matter, it only requires the `.rules` file extension) and populate it with a pair of lines (see below) for each port, replacing `<MACADDR>` with the hardware MAC address.

```bash 70-persistent-net.rules wrap theme={null}
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="<MACADDR>", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
/etc/network/interfaces.d/eth0
```

Move or copy this file to `/etc/udev/rules.d/`:

```bash theme={null}
sudo mv 70-persistent-net.rules /etc/udev/rules.d/.
```

## Configuring a network port

Each network port can be defined using an interface file, which should be saved to the `/etc/network/interfaces.d` directory, with the filename corresponding to the network name specified in the previous section.

A network interface can either be defined as DHCP—it will be assigned an IP address by a separate, dedicated device, e.g., a router—or static—the IP address, netmask, and potentially gateway are fixed. An example interface file for each looks like:

<CodeGroup>
  ```bash DHCP theme={null}
  auto eth0
  iface eth0 inet dhcp
  ```

  ```bash Static theme={null}
  auto eth0
  iface eth0 inet static
    address 192.168.18.100/24
  ```
</CodeGroup>
