Podane są poniżej przykłady niektórych typowych konfiguracji. Są to tylko rady ponieważ jest tyle sposobów ustawienia swojej sieci ile istnieje sieci do skonfigurawania, ale te mogą przydać ci się na początek.
Wielu z was posiada małe, lokalne sieci w domu i chcecie podłaczyć te komputery do swojej lokalnej sieci radiowej. Właśnie takiego układu używam sam w domu. Zadbałem o to, aby dostać odpowiednią liczbę właściwych adresów, tak, aby można było je uchwycić jednym routingiem dla wygody i używam ich na swojej lokalnej sieci ethernet. Wasz koordynator adresów IP pomoże wam w tym również jeśli chcecie tego sprobować. Adresy mojej lokalne sieci Ethernet tworzą podsekcję adresów sieci radiowej. Następujące ustawienie jest rzeczywistę dla linuxa jako routera na mojej sieci w domu:
--- .
| Network /---------\ . Network
| 44.136.8.96/29| | . 44.136.8/24 \ | /
| | Linux | . \|/
| | | . |
| eth0 | Router | . /-----\ /----------\ |
|---------------| |-----| TNC |----| Radio |---/
| 44.136.8.97 | and | . \-----/ \----------/
| | | sl0
| | Server | 44.136.8.5
| | | .
| | | .
| \_________/ .
--- . . . . . .
#!/bin/sh
# /etc/rc.net
# To ustawienie dostarcza jednego portu AX.25 w KISS i jednego interfejsu
# Ethernet.
echo "/etc/rc.net"
echo " Configuring:"
echo -n " loopback:"
/sbin/ifconfig lo 127.0.0.1
/sbin/route add 127.0.0.1
echo " done."
echo -n " ethernet:"
/sbin/ifconfig eth0 44.136.8.97 netmask 255.255.255.248 \
broadcast 44.136.8.103 up
/sbin/route add 44.136.8.97 eth0
/sbin/route add -net 44.136.8.96 netmask 255.255.255.248 eth0
echo " done."
echo -n " AX.25: "
kissattach -i 44.136.8.5 -m 512 /dev/ttyS1 4800
ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.8.255
route add -host 44.136.8.5 sl0
route add -net 44.136.8.0 window 1024 sl0
echo -n " Netrom: "
nrattach -i 44.136.8.5 netrom
echo " Routing:"
/sbin/route add default gw 44.136.8.68 window 1024 sl0
echo " default route."
echo done.
# end
/etc/ax25/axports
# name callsign speed paclen window description
4800 VK2KTJ-0 4800 256 2 144.800 MHz
/etc/ax25/nrports
# name callsign alias paclen description
netrom VK2KTJ-9 LINUX 235 Linux Switch Port
/etc/ax25/nrbroadcast
# ax25_name min_obs def_qual worst_qual verbose
4800 1 120 10 1
W jądrze trzeba uaktywnić IP_FARWARDING.
Pliki konfiguracyjne AX.25 są mniej więcej takie same ja przykłady we wcześniejszych sekcjach, więc zajrzyj do nich gdy trzeba.
Zdecydowałem się przypisać adres IP dla portu radiowego, który nie nałeży do bloku mojej domowej sieci. Nie musiałem tak robić, można było śmiało użyć 44.136.8.97 na tym porcie.
44.136.8.68 to moja lokalna bramka do enkapsulacji IPIP, zatem tutaj kieruję ścieżkę domyślną.
Każdy komputer na sieci Ethernet ma ścieżkę:
route add -net 44.0.0.0 netmask 255.0.0.0 \
gw 44.136.8.97 window 512 mss 512 eth0
Stosowanie parametrów mss i window oznacza, że uzyskuję maksymalne osiągi zarówno na płączeniach Ethernet jak i radiowych.
- na routerze mam odpalone rzownież ftp, http, smail i inne demony więc jest on jedynym komputerem, który innym serwuje usługi - mój router to pokorne 386DX20 z 20 Mb twardego dysku i bardzo minimalną wersją linuxa.
Linux jest obecnie pospolicie używany jako bramka dla enkapsulacji TCP/IP po całym świecie. Nowy sterownik 'tunnel' obsługuje wielokrotne ścieżki enkapsulacji i sprawia, że demon ipip jest przestarzały.
Typowa konfiguracja wygłądałaby w takowy sposób:
--- .
| Network /---------\ . Network
| 154.27.3/24 | | . 44.136.16/24 \ | /
| | Linux | . \|/
| | | . |
| eth0 | IPIP | . /-----\ /----------\ |
---|---------------| |-----| TNC |----| Radio |---/
| 154.27.3.20 | Gateway | . \-----/ \----------/
| | | sl0
| | | 44.136.16.1
| | | .
| | | .
| \_________/ .
--- . . . . . .
Pliki którymi trzeba się zająć to:
# /etc/rc.net
# ustawiamy tutaj jeden port radiowy AX.25 w trybie KISS, jeden Ethernet,
# używamy sterownika 'tunnel' do IPIP encap/decapsulation
#
#
echo "/etc/rc.net"
echo " Configuring:"
#
echo -n " loopback:"
/sbin/ifconfig lo 127.0.0.1
/sbin/route add 127.0.0.1
echo " done."
#
echo -n " ethernet:"
/sbin/ifconfig eth0 154.27.3.20 netmask 255.255.255.0 \
broadcast 154.27.3.255 up
/sbin/route add 154.27.3.20 eth0
/sbin/route add -net 154.27.3.0 netmask 255.255.255.0 eth0
echo " done."
#
echo -n " AX.25: "
kissattach -i 44.136.16.1 -m 512 /dev/ttyS1 4800
/sbin/ifconfig sl0 netmask 255.255.255.0 broadcast 44.136.16.255
/sbin/route add -host 44.136.16.1 sl0
/sbin/route add -net 44.136.16.0 netmask 255.255.255.0 window 1024 sl0
#
echo -n " tunnel:"
/sbin/ifconfig tunl0 44.136.16.1 mtu 512 up
#
echo done.
#
echo -n "Routing ... "
source /etc/ipip.routes
echo done.
#
# end.
and:
# /etc/ipip.routes
# This file is generated using the munge script
#
/sbin/route add -net 44.134.8.0 netmask 255.255.255.0 tunl0 gw 134.43.26.1
/sbin/route add -net 44.34.9.0 netmask 255.255.255.0 tunl0 gw 174.84.6.17
/sbin/route add -net 44.13.28.0 netmask 255.255.255.0 tunl0 gw 212.37.126.3
...
...
...
/etc/ax25/axports
# name callsign speed paclen window description
4800 VK2KTJ-0 4800 256 2 144.800 MHz
Niektóre uwagi do zanotowania:
- Nowy sterownik 'tunnel' używa pola gw w tablicach routingowych w miejsce parametru 'pointopoint' do określenia adresu odległej bramki IPIP. Oto dlaczego obecnie obsługuje wielokrotne ścieżki na każdym interfejsie. - Można ustawić dwa interfejsy sieciowe z tym samym adresem. W tym przykładzie zarówno interfejs sl0 jak i tunl0 przyjęły adres IP portu radiowego. Czyni się tak w tym celu, aby odległa bramka widziała poprawne adresy na enkapsulo- wanych datagramach wysyłanych do niej z twojej bramki. - polecenia 'route' do określania enkapsulowanych ścieżek można wygenerować używając modyfikowanej wersji "skryptu munge". Podane jest to niżej. Polecenia route wpisane byłyby potem do osobnego pliku i czytane przez bash z /etc/ipip.routes (założywszy, że nazwałeś plik z poleceniami routingu nazwą /etc/ipip.routes) tak jak na ilustracji. Plik źródłowy musi mieć format w stylu poleceń 'route' pod NOS-em. - Zauważ stosowanie argumentu 'window' dla polecenia 'route'. Ustawienie tego parametru na właściwą wartość polepsza osiągi na łączu radiowym
Oto nowy skrypt 'tunnel-munge':
#!/bin/sh
#
# From: Ron Atkinson <n8fow@hamgate.cc.wayne.edu>
#
# This script is basically the 'munge' script written by Bdale N3EUA
# for the IPIP daemon and is modified by Ron Atkinson N8FOW. It's
# purpose is to convert a KA9Q NOS format gateways route file
# (usually called 'encap.txt') into a Linux routing table format
# for the IP tunnel driver.
#
# Usage: Gateway file on stdin, Linux route format file on stdout.
# eg. tunnel-munge < encap.txt > ampr-routes
#
# NOTE: Before you use this script be sure to check or change the
# following items:
#
# 1) Change the 'Local routes' and 'Misc user routes' sections
# to routes that apply to your own area (remove mine please!)
# 2) On the fgrep line be sure to change the IP address to YOUR
# gateway Internet address. Failure to do so will cause serious
# routing loops.
# 3) The default interface name is 'tunl0'. Make sure this is
# correct for your system.
echo "#"
echo "# IP tunnel route table built by $LOGNAME on `date`"
echo "# by tunnel-munge script v960307."
echo "#"
echo "# Local routes"
echo "route add -net 44.xxx.xxx.xxx netmask 255.mmm.mmm.mmm dev sl0"
echo "#"
echo "# Misc user routes"
echo "#"
echo "# remote routes"
fgrep encap | grep "^route" | grep -v " XXX.XXX.XXX.XXX" | \
awk '{
split($3, s, "/")
split(s[1], n,".")
if (n[1] == "") n[1]="0"
if (n[2] == "") n[2]="0"
if (n[3] == "") n[3]="0"
if (n[4] == "") n[4]="0"
if (s[2] == "1") mask="128.0.0.0"
else if (s[2] == "2") mask="192.0.0.0"
else if (s[2] == "3") mask="224.0.0.0"
else if (s[2] == "4") mask="240.0.0.0"
else if (s[2] == "5") mask="248.0.0.0"
else if (s[2] == "6") mask="252.0.0.0"
else if (s[2] == "7") mask="254.0.0.0"
else if (s[2] == "8") mask="255.0.0.0"
else if (s[2] == "9") mask="255.128.0.0"
else if (s[2] == "10") mask="255.192.0.0"
else if (s[2] == "11") mask="255.224.0.0"
else if (s[2] == "12") mask="255.240.0.0"
else if (s[2] == "13") mask="255.248.0.0"
else if (s[2] == "14") mask="255.252.0.0"
else if (s[2] == "15") mask="255.254.0.0"
else if (s[2] == "16") mask="255.255.0.0"
else if (s[2] == "17") mask="255.255.128.0"
else if (s[2] == "18") mask="255.255.192.0"
else if (s[2] == "19") mask="255.255.224.0"
else if (s[2] == "20") mask="255.255.240.0"
else if (s[2] == "21") mask="255.255.248.0"
else if (s[2] == "22") mask="255.255.252.0"
else if (s[2] == "23") mask="255.255.254.0"
else if (s[2] == "24") mask="255.255.255.0"
else if (s[2] == "25") mask="255.255.255.128"
else if (s[2] == "26") mask="255.255.255.192"
else if (s[2] == "27") mask="255.255.255.224"
else if (s[2] == "28") mask="255.255.255.240"
else if (s[2] == "29") mask="255.255.255.248"
else if (s[2] == "30") mask="255.255.255.252"
else if (s[2] == "31") mask="255.255.255.254"
else mask="255.255.255.255"
if (mask == "255.255.255.255")
printf "route add -host %s.%s.%s.%s gw %s dev tunl0\n"\
,n[1],n[2],n[3],n[4],$5
else
printf "route add -net %s.%s.%s.%s gw %s netmask %s dev tunl0\n"\
,n[1],n[2],n[3],n[4],$5,mask
}'
echo "#"
echo "# default the rest of amprnet via mirrorshades.ucsd.edu"
echo "route add -net 44.0.0.0 gw 128.54.16.18 netmask 255.0.0.0 dev tunl0"
echo "#"
echo "# the end"