---
name: "gnunet-nat"
section: "1"
platform: "linux"
package: "gnunet"
version: "0.20.0-7"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/gnunet-nat"
---

# gnunet-nat(1)

interact with the NAT service

## NAME

**gnunet-nat** – interact with the NAT service

## SYNOPSIS

**gnunet-nat** \[**-b** *ADDRESS* \| **--bind=***ADDRESS*\] \[**-c** *FILENAME* \| **--config=***FILENAME*\] \[**-e** *ADDRESS* \| **--external=***ADDRESS*\] \[**-i** *ADDRESS* \| **--in=***ADDRESS*\] \[**-r** *ADDRESS* \| **--remote=***ADDRESS*\] \[**-S** *NAME* \| **--section=***NAME*\] \[**-s** \| **--stun**\] \[**-t** \| **--tcp**\] \[**-u** \| **--udp**\] \[**-W** \| **--watch**\]

## DESCRIPTION

This tool allows testing various NAT traversal functions, as well as attempting auto-configuration.

## OPTIONS

- **-b** *ADDRESS* \| **--bind=***ADDRESS*

  Assume that the service is (locally) bound to ADDRESS.

- **-c** *FILENAME* \| **--config=***FILENAME*

  Use the configuration file FILENAME.

- **-e** *ADDRESS* \| **--external=***ADDRESS*

  Assume that ADDRESS is the globally visible address of the peer.

- **-i** *ADDRESS* \| **--in=***ADDRESS*

  Assuming we are listening at ADDRESS for connection reversal requests.

- **-r** *ADDRESS* \| **--remote=***ADDRESS*

  Ask the peer at ADDRESS for connection reversal, using the local address for the target address of the reversal.

- **-S** *NAME* \| **--section=***NAME*

  Name of section in configuration file to use for additional options.

- **-s** \| **--stun**

  Enable processing of STUN requests. Will try to read UDP packets from the bind address and handle the packets if they are STUN packets. Will only work with UDP.

- **-t** \| **--tcp**

  Use TCP.

- **-u** \| **--udp**

  Use UDP.

- **-W** \| **--watch**

  Watch for connection reversal requests.

## EXAMPLES

### Basic examples

```
# gnunet-nat -i 0.0.0.0:8080 -u
```

We are bound to "0.0.0.0:8080" on UDP and want to obtain all applicable IP addresses.

```
# gnunet-nat -i '[::0]':8080 -t
```

We are bound to "::0" on port 8080 on TCP and want to obtain all applicable IP addresses.

```
# gnunet-nat -i 127.0.0.1:8080 -u
```

We are bound to "127.0.0.1:8080" on UDP and want to obtain all applicable IP addresses:

### ICMP-based NAT traversal

```
# gnunet-nat -Wt -i 192.168.178.12:8080
```

Watch for connection reversal request (you must be bound to NAT range or to wildcard, 0.0.0.0), only works for IPv4:

```
# gnunet-nat -t -r 1.2.3.4:8080 -i 2.3.4.5:8080
```

```
# gnunet-nat -t -r 1.2.3.4:8080 -i 0.0.0.0:8080
```

Initiate connection reversal request from peer at external IPv4 address 1.2.3.4, and let the kernel fill in whatever IPv4 address we happen to have:

### Manual hole punching

```
# gnunet-nat -t -p AUTO:8080
```

Assume manually punched NAT, but determine external IP automatically:

### STUN-based XXX:

```
# gnunet-nat FIXME -s
```

XXX

## SEE ALSO

[gnunet-transport(1)](/gnunet-transport/1.md)

The full documentation for gnunet is maintained as a Texinfo manual. If the [info(1)](/info/1.md) and gnunet programs are properly installed at your site, the command

```
info gnunet
```

should give you access to the complete handbook,

```
info gnunet-c-tutorial
```

will give you access to a tutorial for developers.

Depending on your installation, this information is also available in gnunet(7) and gnunet-c-tutorial(7).

## BUGS

Report bugs by using **https://bugs.gnunet.org** or by sending electronic mail to ⟨*gnunet-developers@gnu.org*⟩.
