336 lines
10 KiB
Plaintext
336 lines
10 KiB
Plaintext
== Configuring OsmoGGSN
|
|
|
|
All configuration of OsmoGGSN is performed using the VTY. For more
|
|
general information on the VTY interface, see <<vty>>.
|
|
|
|
=== Configuring a virtual GGSN instance
|
|
|
|
OsmoGGSN can run multiple GGSN instances inside one program/process.
|
|
Each GGSN instance binds to its own transport-layer GTP IP address and
|
|
has its own set of APNs and associated IP address pools + tun/gtp
|
|
devices.
|
|
|
|
In most usage cases, yo will only have a single GGSN instance inside
|
|
your configuration file, like in below example:
|
|
|
|
.Example: Single GGSN configuration section
|
|
----
|
|
ggsn ggsn0
|
|
gtp state-dir /tmp
|
|
gtp bind-ip 127.0.0.6
|
|
apn internet
|
|
gtpu-mode tun
|
|
tun-device tun4
|
|
type-support v4
|
|
ip prefix dynamic 176.16.222.0/24
|
|
ip dns 0 192.168.100.1
|
|
ip dns 1 8.8.8.8
|
|
ip ifconfig 176.16.222.0/24
|
|
no shutdown
|
|
----
|
|
|
|
|
|
==== Creating/Editing a GGSN instance
|
|
|
|
Creating/Editing a GGSN instance can be done by the following sequence
|
|
of VTY commands:
|
|
|
|
----
|
|
OsmoGGSN> enable <1>
|
|
OsmoGGSN# configure terminal <2>
|
|
OsmoGGSN(config)# ggsn ggsn0 <3>
|
|
OsmoGGSN(config-ggsn)# <4>
|
|
----
|
|
<1> Change into privileged mode
|
|
<2> Enter the interactive configuration mode
|
|
<3> Create or edit the GGSN instance `ggsn0`. The name can be any ASCII
|
|
string, its significance is only to the local user.
|
|
<4> Your prompt is now in the `ggsn` config node, where you can
|
|
configure the properties of this GGSN instance.
|
|
|
|
NOTE:: After creating a new GGSN instance, it is in `shutdown` mode. See
|
|
<<unshutdown_apn>> to take it out of shutdown, but make sure to configure it fully
|
|
before taking it out of shutdown.
|
|
|
|
==== Configuring a GGSN instance
|
|
|
|
The following two mandatory configuration statements have to be given
|
|
for every GGSN instance:
|
|
|
|
----
|
|
OsmoGGSN(config-ggsn)# gtp state-dir /var/lib/ggsn/ggsn0 <1>
|
|
OsmoGGSN(config-ggsn)# gtp bind-ip 127.0.0.6 <2>
|
|
----
|
|
<1> Store the GSN restart state in the specified directory
|
|
<2> Bind the GGSN instance to the specified local IPv4 address
|
|
|
|
There are some further configuration statements that can be used at the
|
|
GGSN node, some examples are given below. For a full list, see the
|
|
_OsmoGGSN VTY reference manual_ <<vty-ref-osmoggsn>>.
|
|
|
|
----
|
|
OsmoGGSN(config-ggsn)# default-apn foobar <1>
|
|
----
|
|
<1> Configure a default APN to be used if the user-requested APN is not
|
|
found. The named APN must previously be configured
|
|
|
|
|
|
==== Deleting a GGSN instance
|
|
|
|
A GGSN instance can be removed like this
|
|
|
|
.Example: Deleting a GGSN instance
|
|
----
|
|
OsmoGGSN> enable <1>
|
|
OsmoGGSN# configure terminal <2>
|
|
OsmoGGSN(config)# no ggsn ggsn0 <3>
|
|
----
|
|
<1> Change into privileged mode
|
|
<2> Enter the interactive configuration mode
|
|
<3> Delete the GGSN instance
|
|
|
|
|
|
==== Taking a GGSN instance out of shutdown
|
|
|
|
.Example: Taking a GGSN instance out of shutdown
|
|
----
|
|
OsmoGGSN> enable <1>
|
|
OsmoGGSN# configure terminal <2>
|
|
OsmoGGSN(config)# ggsn ggsn0 <3>
|
|
OsmoGGSN(config-ggsn)# no shutdown ggsn <4>
|
|
----
|
|
<1> Change into privileged mode
|
|
<2> Enter the interactive configuration mode
|
|
<3> Enter the config ndoe of the GGSN instance `ggsn0`
|
|
<4> Take the GGSN instance out of shutdown
|
|
|
|
|
|
==== Shutting a GGSN instance down
|
|
|
|
If you would like to take a GGSN instance out of service, you can
|
|
put it into shutdown mode. This will make the entire GGSN unavailable
|
|
to user traffic and permit you to e.g. reconfigure it before taking it
|
|
out of shutdown again.
|
|
|
|
.Example: Shutting down a GGSN instance
|
|
----
|
|
OsmoGGSN> enable <1>
|
|
OsmoGGSN# configure terminal <2>
|
|
OsmoGGSN(config)# ggsn ggsn0 <3>
|
|
OsmoGGSN(config-ggsn)# shutdown ggsn <4>
|
|
----
|
|
<1> Change into privileged mode
|
|
<2> Enter the interactive configuration mode
|
|
<3> Enter the config ndoe of the GGSN instance `ggsn0`
|
|
<4> Shut down the GGSN instance
|
|
|
|
|
|
=== Configuring an Access Point Name
|
|
|
|
An Access Point Name (APN) represents a connection to an external packet
|
|
data network, such as the public Internet or private corporate networsk.
|
|
|
|
APNs are selected by terminals (MS/UE) when establishing PDP contexts.
|
|
|
|
Each OsmoGGSN GGSN instance can have any number of APNs configured.
|
|
Each APN is identified by a string name.
|
|
|
|
==== Creating/Editing an APN
|
|
|
|
.Example: Creating a new APN
|
|
----
|
|
OsmoGGSN> enable <1>
|
|
OsmoGGSN# configure terminal <2>
|
|
OsmoGGSN(config)# ggsn ggsn0 <3>
|
|
OsmoGGSN(config-ggsn)# apn internet <4>
|
|
OsmoGGSN(config-ggsn-apn)# <5>
|
|
----
|
|
<1> Change into privileged mode
|
|
<2> Enter the interactive configuration mode
|
|
<3> Enter the config node of the GGSN instance `ggsn0`
|
|
<4> Create or Edit an APN called `internet`
|
|
<5> Your prompt is now in the `ggsn` config node, where you can
|
|
configure the properties of this GGSN instance.
|
|
|
|
NOTE:: The newly-create APN is created in `shutdown` mode. See <<unshutdown_apn>> to take it
|
|
out of shutdown.
|
|
|
|
|
|
==== Configuring an APN
|
|
|
|
.Example: Configuring an APN
|
|
----
|
|
OsmoGGSN(config-ggsn-apn)# gtpu-mode tun <1>
|
|
OsmoGGSN(config-ggsn-apn)# type-support v4 <2>
|
|
OsmoGGSN(config-ggsn-apn)# ip prefix dynamic 176.16.222.0/24 <3>
|
|
OsmoGGSN(config-ggsn-apn)# ip dns 0 192.168.100.1 <4>
|
|
OsmoGGSN(config-ggsn-apn)# ip dns 1 8.8.8.8 <5>
|
|
OsmoGGSN(config-ggsn-apn)# ip ifconfig 176.16.222.0/24 <6>
|
|
----
|
|
<1> Use the userspace GTP-U handling using a TUN device
|
|
<2> Support (only) IPv4 Addresses
|
|
<3> Specify the pool of dynamic IPv4 addresses to be allocated to PDP
|
|
contexts
|
|
<4> Specify the primary DNS server to be provided using IPCP/PCO
|
|
<5> Specify the secondary DNS server to be provided using IPCP/PCO
|
|
<6> Request OsmoGGSN to configure the `tun4` device network/netmask
|
|
|
|
NOTE:: If you use the optional `ip ifconfig` command to set the network
|
|
device address/mask, OsmoGGSN must run with root or `CAP_NET_ADMIN`
|
|
support. It might be better to configure related tun devices at system
|
|
startup and run OsmoGGSN as non-privileged user. See <<ggsn_no_root>> for more
|
|
details.
|
|
|
|
|
|
==== Deleting an APN
|
|
|
|
An APN configuration can be removed like this
|
|
|
|
.Example: Deleting an APN
|
|
----
|
|
OsmoGGSN> enable <1>
|
|
OsmoGGSN# configure terminal <2>
|
|
OsmoGGSN(config)# ggsn ggsn0 <3>
|
|
OsmoGGSN(config-ggsn)# no apn internet <4>
|
|
----
|
|
<1> Change into privileged mode
|
|
<2> Enter the interactive configuration mode
|
|
<3> Enter the config node of the GGSN instance `ggsn0`
|
|
<4> Delete the APN `internet`
|
|
|
|
[[unshutdown_apn]]
|
|
==== Taking an APN out of shutdown
|
|
|
|
In order to bring a deactived APN in `shutdown` state into active
|
|
operation, use the `no shutdown` command at the APN node as explained in
|
|
the following example:
|
|
|
|
.Example: Taking an APN out of shutdown
|
|
----
|
|
OsmoGGSN> enable <1>
|
|
OsmoGGSN# configure terminal <2>
|
|
OsmoGGSN(config)# ggsn ggsn0 <3>
|
|
OsmoGGSN(config-ggsn)# apn internet <4>
|
|
OsmoGGSN(config-ggsn-apn)# no shutdown <5>
|
|
----
|
|
<1> Change into privileged mode
|
|
<2> Enter the interactive configuration mode
|
|
<3> Enter the config ndoe of the GGSN instance `ggsn0`
|
|
<4> Enter the config ndoe of the APN `internet`
|
|
<5> Take the APN out of shutdown
|
|
|
|
|
|
==== Shutting an APN down
|
|
|
|
If you would like to take an APN instance out of service, you can
|
|
put it into shutdown mode. This will make the APN unavailable
|
|
to user traffic and permit you to e.g. reconfigure it before taking it
|
|
out of shutdown again.
|
|
|
|
.Example: Shutting down an APN
|
|
----
|
|
OsmoGGSN> enable <1>
|
|
OsmoGGSN# configure terminal <2>
|
|
OsmoGGSN(config)# ggsn ggsn0 <3>
|
|
OsmoGGSN(config-ggsn)# apn internet <4>
|
|
OsmoGGSN(config-ggsn-apn)# shutdown <5>
|
|
----
|
|
<1> Change into privileged mode
|
|
<2> Enter the interactive configuration mode
|
|
<3> Enter the config ndoe of the GGSN instance `ggsn0`
|
|
<4> Enter the config ndoe of the APN `internet`
|
|
<5> Shut down the APN
|
|
|
|
[[ggsn_no_root]]
|
|
=== Configuring for running without root privileges
|
|
|
|
It's possible to run OsmoGGSN without root privileges if the tun devices are already configured.
|
|
|
|
The interface creation + configuration must then happen before osmo-ggsn starting up. This can be
|
|
achieved by means such as
|
|
|
|
* a custom shell script run as root before starting osmo-ggsn (e.g. as init script)
|
|
* systemd .netdev and .network files, if your system is using systemd-networkd (see `networkctl status`).
|
|
|
|
==== Manual TUN device creation / configuration
|
|
|
|
If you chose to go for custom shell/init scripts, you may use the `ip` program which is the standard
|
|
tool for network interface configuration on Linux, part of the `iproute2` package. In order to
|
|
create a tun device, you must call it like this:
|
|
|
|
.Example: iproute2 command to create a tun device
|
|
----
|
|
# ip tuntap add dev apn0 mode tun user username group groupname
|
|
----
|
|
|
|
Where _username_ and _groupname_ correspond to the User and Group that will have ownership over the
|
|
device, i.e. the privileges which you intend to run osmo-ggsn under, and _apn0_ will be the
|
|
name of the network device created. After creating the interface, you can configure its addresses
|
|
using standard means like `ip addr add` or your distribution-specific utilities/tools
|
|
to match the `ip prefix dynamic` config item, and activate the link, for example:
|
|
|
|
----
|
|
# ip addr add 192.168.7.0/24 dev apn0
|
|
# ip link set apn0 up
|
|
----
|
|
|
|
==== systemd based TUN device creation+configuration
|
|
|
|
If you want to have systemd take care of creating and configuring a tun device for you,
|
|
you can use the below example config files.
|
|
|
|
.Example: device config via systemd-networkd using apn0.netdev
|
|
----
|
|
[NetDev]
|
|
Name=apn0 <1>
|
|
Kind=tun
|
|
|
|
[Tun]
|
|
User=username <2>
|
|
Group=username <3>
|
|
----
|
|
<1> The network interface name of the newly-created device
|
|
<2> The username under which you will run OsmoGGSN
|
|
<3> The group name under which you will run OsmoGGSN
|
|
|
|
.Example: network settings via systemd-networkd using ggsn.network
|
|
----
|
|
[Match]
|
|
Name=apn0 <1>
|
|
|
|
[Network]
|
|
Address=192.168.7.1 <2>
|
|
IPMasquerade=yes <3>
|
|
----
|
|
<1> The netowrk device name, which must match the one in the apn0.netdev unit file above
|
|
<2> The local IP address configured on the device
|
|
<3> Requesting systemd to configure IP masquerading for this interface. Depending on your needs,
|
|
You may not want this if you have proper end-to-end routing set up, and want to have transparent
|
|
inbound IP access to your GPRS-attached devices.
|
|
|
|
==== Config Changes
|
|
|
|
With the tun device pre-configured in one of the ways outlined above, the main
|
|
changes in your osmo-ggsn.cfg file are:
|
|
|
|
* remove `ip ifconfig` directive,
|
|
* make sure that `no shutdown` is present in the `apn` section as well as
|
|
`no shutdown ggsn` in the `ggsn` section.
|
|
|
|
.Example: using externally configured tun device `apn0` as non-root
|
|
----
|
|
ggsn ggsn0
|
|
gtp state-dir /tmp
|
|
gtp bind-ip 127.0.0.6
|
|
apn internet
|
|
gtpu-mode tun
|
|
tun-device apn0
|
|
type-support v4
|
|
ip prefix dynamic 192.168.7.0/24
|
|
ip dns 0 192.168.100.1
|
|
ip dns 1 8.8.8.8
|
|
no shutdown
|
|
default-apn internet
|
|
no shutdown ggsn
|
|
----
|