| Usando XFBB em conjunto com o TNOS |
1 - Introducao
Este presente texto tem por finalidade ajudar os colegas radioamadores que tenham o interesse de colocar em funcionamento, dentro do ambiente do O.S. Linux, o TNOS-2.xx em conjunto com o XFBB 7.00 (ou LinFBB).
Este texto feito por mim reflete a experiencia que tive durante as duas semanas em que destrinchei todos os problemas tecnicos relativos e instalacao do XFBB, desde a configuracao do kernel do Linux, passando pela configuracao dos módulos do AX25-utils, do XFBB e finalmente nos acrescimos que devem ser feitos no autoexec.nos do TNOS.
Este texto vai partir do principio que o leitor esta usando o TNOS e quer continuar usando-o, aproveitando a versatilidade do mesmo em conjunto com as features do XFBB e do suporte de AX25 tanto do kernel do Linux como das AX25-utils.
Para a elaboracao deste trabalho, contei com a ajuda dos colegas Luiz Catalan (PP5AQ) (TNOS), Cesar Santos (PY1SW) (AX25 e XFBB) e outros durante a fase de configuracao do RJNODE instalado na UFRJ.
A configuracao que vem a seguir e a final que esta rodando no RJNODE, ela difere de algumas outras configuracoes por nao utilizar o servidor de FIFO do TNOS (porque encontrei problemas de ordem tecnica nele) e por ter a possibilidade de se ecoar as portas de AX25, que estao monitoradas pelo XFBB e linkadas ao TNOS, na lista de nodes NET/ROM possibilitando assim o acesso tanto via radio (com o TNOS fazendo o roteamento) como via NET/ROM (com o roteamento tambem pelo TNOS).
Este texto e valido para as seguintes versoes de softwares utilizados (podem ser baixadas pelos links):
Kernel versao 2.0.30, Kernel versao 2.0.31, Kernel versao 2.0.32, Kernel versao 2.0.33,
Kernel versao 2.0.34+ax25modules14f ou Kernel versao 2.0.34
OBS.: Os kernel 2.0.34+ax25modules14f foi um port que fiz nos ax25-modules14f para que o mesmo pudesse ser adicionado no kernel 2.0.34 (na epoca nao havia ainda saido a versao 14h e os kernel anteriores ao 2.0.34 estao com um grave bug de segurança). Recomendo, uma vez que a versaao 14h saiu, que voce baixe o kernel 2.0.34 puro e adicione os patches do ax25-modules14h.
ax25-module-14f (Kernels 2.0.30 a 2.0.33) ou ax25-module-14h (Kernel 2.0.34)
ax25-utils-2.1.42a
OBS.: Infelizmente o ax25-utils-2.1.42a nao compilam sob glibc2/libc6 ainda, e recomendavel que voce nao faca ainda upgrade para nenhuma versao de linux que utilize glibc2 (RedHat 5.0 ou superior) antes de compilar esses binarios sob libc5. Espero que o autor corrija para breve esse problema pois todos os linux tendem a migrar para essa nova biblioteca
Tnos versao 2.22pl2 ou Tnos versao 2.30
OBS.: Foi verificado um problema na versao 2.30 do TNOS que so ocorre em codicoes especiais em determinados tipos de hardware, se o TNOS 2.30 travar, utilize o TNOS 2.22pl2
XFBB versao 7.00e ou superior
2 - Compilacao do kernel do Linux
Esta parte nao tem grandes misterios, apenas o cuidado que se deve ter de compilar o kernel do Linux com suporte de AX25, NETROM, ROSE (opcional) e SLIP/PPP.
Apesar do AX25-HOWTO avisar para nao compilar o kernel com suporte para SLIP/PPP, ele e necessario para que o TNOS funcione, partindo do presuposto que se esta usando e se quer continuar usando o TNOS.
Vale colocar que o conflito com o suporte de AX25 so ocorreria se fossem utilizados integralmente os as features das AX25-utils, o que nao se aplica no nosso caso onde as features que utilizaremos nao provocarao conflitos.
Por experiencia minha, recomendo que voce nao utilize como modulos de carregamento dinamico do kernel qualquer aplicativo ligado ao AX25, o sistema descarrega o modulo muito rapidamente.
Para configurar o kernel, siga os passos a seguir:
1 - Logue-se como root do sistema.
2 - Copie o arquivo linux-2.0.34.tar.gz para o diretorio /usr/src (e.g. cp linux-2.0.34.tar.gz /usr/src).
3 - Apague ou renomeie o diretorio com o kernel antigo (rm -rf linux ou mv linux linux.old).
4 - Descomprima o kernel novo (e.g. tar -xzvf linux-2.0.34.tar.gz).
5 - Aplique os patches no kernel: (e.g. patch -p0 (ax25-2.0.30-2.1.42-4.diff) Nao ha diferenças nos patches para as versões do kernel da 2.0.30 a 2.0.33. Para o kernel 2.0.34 utilize os patches do modulo 14h (e.g. patch -p0 (ax25-2.0.34-2.1.47-4.diff)
6 - Entre no diretorio do kernel (cd linux ou cd /usr/src/linux).
7 - Configure o kernel (make config) segundo suas necessidades locais, porem nos tópicos relativos a AX25, NET/ROM e SLIP/PPP, siga as instruções abaixo:
I - Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [Y/n/?] Y
II - Enable loadable module support (CONFIG_MODULES) [Y/n/?] Y
III - Set version information on all symbols for modules (CONFIG_MODVERSIONS) [N/y/?] N
IV - Kernel daemon support (e.g. autoload of modules) (CONFIG_KERNELD) [Y/n/?] Y (Somente se voce usa suporte de carregamento automatico de modulos)
V - Kernel math emulation (CONFIG_MATH_EMULATION) [N/y/?] N
VI - Networking support (CONFIG_NET) [Y/n/?] Y
VII - Limit memory to low 16MB (CONFIG_MAX_16M) [N/y/?] N
VIII - PCI bios support (CONFIG_PCI) [Y/n/?] Y (Somente se a sua placa-mae possui barramento PCI)
IX - System V IPC (CONFIG_SYSVIPC) [Y/n/?] Y
X - Kernel support for a.out binaries (CONFIG_BINFMT_AOUT) [Y/m/n/?] Y
XI - Kernel support for ELF binaries (CONFIG_BINFMT_ELF) [Y/m/n/?] Y
XII - Kernel support fot JAVA binaries (CONFIG_BINFMT_JAVA) [N/y/m/?] N
XIII - Compile kernel as ELF - if your GCC is ELF-GCC (CONFIG_KERNEL_ELF) [Y/n/?] Y
XIV - Processor type (386, 486, Pentium, PPro) (Coloque aqui o processador da sua placa)
..
..
..
XV - Loopback device support (CONFIG_BLK_DEV_LOOP) [M/n/y/?] M (ou Y caso voce nao tenha habilitado o kerneld)
XVI - Multiple devices driver support (CONFIG_BLK_DEV_MD) [N/y/?] N
XVII - RAM disk support (CONFIG_BLK_DEV_RAM) [N/y/m/?] N
XVIII - XT harddisk support (CONFIG_BLK_DEV_XD) [N/y/m/?] N (Somente coloque Y se o seu HD for do tipo MFM)
XIX - Network firewalls (CONFIG_FIREWALL) [N/y/?] N ou Y se voce quizer implantar ou tiver implatado firewall no seu sistema!
XX - Network aliasing (CONFIG_NET_ALIAS) [Y/n/?] Y
XXI - TCP/IP networking (CONFIG_INET) [Y/n/?] Y
XXII - IP: forwarding/gatewaying (CONFIG_IP_FORWARD) [Y/n/?] Y
XXIII - IP: multicasting (CONFIG_IP_MULTICAST) [N/y/?] N
XXIV - IP: syn cookies (CONFIG_SYN_COOKIES) [Y/n/?] Y
XXV - IP: rst cookies (CONFIG_RST_COOKIES) [N/y/?] N
XXVI - IP: firewalling (CONFIG_IP_FIREWALL) [N/y/?] N ou Y (idem a XIX)
XXVII - IP: firewall packet logging (CONFIG_IP_FIREWALL_VERBOSE) [N/y/?] N ou Y (idem XIX)
XXVIII - IP: masquerading (CONFIG_IP_MASQUERADE) [N/y/?] N ou Y (idem XIX)
XXIX - IP: transparent proxy support (EXPERIMENTAL) (CONFIG_IP_TRANSPARENT_PROXY) [N/y/?] N
XXX - IP: always defragment (CONFIG_IP_ALWAYS_DEFRAGMENT) [N/y/?] N
XXXI - IP: accounting (CONFIG_IP_ACCT) [N/y/?] N
XXXII - IP: optimize as router not host (CONFIG_IP_ROUTER) [Y/n/?] Y
XXXIII - IP: tunneling (CONFIG_NET_IPIP) [M/n/y/?] M (ou Y caso voce nao tenha habilitado o kerneld)
XXXIV - IP: aliasing support (CONFIG_IP_ALIAS) [M/n/y/?] M (ou Y caso voce nao tenha habilitado o kerneld)
XXXV - IP: PC/TCP compatibility mode (CONFIG_INET_PCTCP) [N/y/?] N)
XXXVI - IP: Reverse ARP (CONFIG_INET_RARP) [Y/m/n/?] Y
XXXVII - IP: Disable Path MTU Discovery (normally enable) (CONFIG_NO_PATH_MTU_DISCOVERY) [N/y/?] N
XXXVIII - IP: Drop source routed frames (CONFIG_IP_NOSR) [Y/n/?] Y
XXXIX - IP: Allow large windows (not recommended if (16MB of memory) (CONFIG_SKB_LARGE) [Y/n/?] Y
XL - The IPX protocol (CONFIG_IPX) [N/y/m/?] N
XLI - Appletalk DDP (CONFIG_ATALK) [N/y/m/?] N
XLII - Amateur Radio AX.25 Level 2 (CONFIG_AX25) [Y/m/n/?] Y
XLIII - Amateur Radio NET/ROM (CONFIG_NETROM) [Y/m/n/?] Y
XLIV - Amateur Radio X.25 PLP (Rose) (CONFIG_ROSE) [N/y/m/?] N
XLV - Bridging (EXPERIMENTAL) (CONFIG_BRIDGE) [N/y/?] N
XLVI - Kernel/User network link driver (CONFIG_NETLINK) [N/y/?] N
XLVII - SCSI support (CONFIG_SCSI) [N/y/m/?] N
XLVIII - Network device support (CONFIG_NETDEVICES) [Y/n/?] Y
XLIX - Dummy net driver support (CONFIG_DUMMY) [M/n/y/?] M (ou Y caso voce nao tenha habilitado o kerneld)
L - EQL (serial line load balancing) support (CONFIG_EQUALIZER) [N/y/m/?] N
LI - Frame relay DLCI support (EXPERIMENTAL) (CONFIG_DLCI) [N/y/m/?] N
LII - PLIP (parallel port) support (CONFIG_PLIP) [N/y/m/?] N
LIII - PPP (point-to-point) support (CONFIG_PPP) [Y/m/n/?] Y
LIV - SLIP (serial_line) support (CONFIG_SLIP) [Y/m/n/?] Y
LV - CSLIP compressed headers (CONFIG_SLIP_COMPRESSED) [Y/n/?] Y
LVI - Keepalive and linefill (CONFIG_SLIP_SMART) [Y/n/?] Y
LVII - Six bit SLIP encapsulation (CONFIG_SLIP_MODE_SLIP6) [Y/n/?] Y
LVIII - Radio network interfaces (CONFIG_NET_RADIO) [Y/n/?] Y
LIX - BAYCOM ser12 and par96 driver for AX.25 (CONFIG_BAYCOM) [N/y/m/?] N
LX - Soundcard modem driver for AX.25 (CONFIG_SOUNDMODEM) [N/y/m/?] N
LXI - Serial port KISS driver for AX.25 (CONFIG_MKISS) [Y/m/n/?] Y
LXII - BPQ Ethernet driver for AX.25 (CONFIG_BPQETHER) [N/y/m/?] N
LXIII - Gracilis PackeTwin support for AX.25 (CONFIG_PT) [N/y/m/?] N
LXIV - Ottawa PI and PI/2 support for AX.25 (CONFIG_PI) [N/y/m/?] N
LXV - Z8530 SCC KISS emulation driver for AX.25 (CONFIG_SCC) [N/y/m/?] N
LXVI - STRIP (Metricom starmode radio IP) (CONFIG_STRIP) [N/y/m/?] N
LXVII - AT&T WaveLAN & DEC RoamAbout DS support (CONFIG_WAVELAN) [N/y/m/?] N
LXVIII - WIC Radio IP bridge (EXPERIMENTAL) (CONFIG_WIC) [N/y/m/?] N
..
..
..
E o restante das configurações depende do seu hardware...
Pessoalmente, aconselho nao se usar modularizacao na parte relative a AX25, nao tive uma boa experiencia com o AX25 modularizado porque ele e descarregado da memoria muito rapidamente e alguns daemons como o netromd acusam defeito de paginaçao de memoria quando o mesmo emite o beacom.
8 - Apos configurar o kernel, compile-o (make dep, make clean, make zImage e make modules (caso voce estaja usando o kerneld) ).
9 - Instale o kernel e reboot o sistema (make install, make modules_install (somente se voce usou opçao de carregamento dinâmico de módulos - kerneld) e shutdown -r now).
OBS.: Os procedimentos para a compilaçao com o kernel 2.0.33, 2.0.32, 2.0.31 e 2.0.30 sao os mesmos com algumas poucas diferenças (uma ou duas opções a menos na hora de configurar o kernel, mas os patches funcionam tanto do kernel 2.0.30 ao 2.0.33). O kernel 2.0.34 apresenta muitas novidades, mas basicamente a configuracao dele e semelhante ao que coloquei acima. Recomendo usar o kernel 2.0.34 devido ao mesmo ser mais recente e corrigir bugs gravissimos presentes nas versoes 2.0.30, 2.0.31, 2.0.32 e 2.0.33 (e.g. egg-drop e tier-drop).
3 - Compilacao das AX25-utils
Apos o reboot, se nao ocorrerem problemas, passamos a compilaçao das AX25-utils, primeiro descomprima-as com tar -xzvf ax25-utils-VERSAO.tar.gz.
A compilaçao nao requer grande esforço, voce podera utilizar as opções default, aqui no meu sistema eu apenas coloquei os binarios em diretorios próprios (/usr/local/sbin/ax25 e /usr/local/bin/ax25) mas voce nao necessita fazer isso se nao quizer. O importânte e que os arquivos de configuraçao do AX25 fiquem no diretório /etc/ax25, pois e com essa referencia de diretório que o XFBB foi compilado.
Voce vai necessitar ter mSQL e ncurses instaladas no seu sistema para compilar as AX25-utils, acredito que as tenha uma vez que voce esta usando TNOS.
Nao esqueca o que falei a respeito das ax25-utils nao compilarem ainda sob glibc2 / libc6, tente conseguir os binarios ja pre-compilados sob libc5.
Uma vez compiladas as AX25-utils, digite make install como root. Passaremos agora as configurações das features necessarias do AX25, do XFBB e do autoexec.nos do TNOS.
4 - Configuracao do AX25
Passemos a configuraçao dos modulos de AX25, abaixo serao discriminados os arquivos e as configurações que deverao ser feitas, se necessario. Os links guiam a arquivos de exemplos:
1 - arquivo ax25d.conf : Nao configurado (aqui eu comentei todo este arquivo).
2 - arquivo ax25ipd.conf:
Os pontos principais de configuraçao deste arquivo sao:
socket ip
mode tnc
mycall
myalias
device /dev/ttypc (esta linha e importânte e deve corresponder o ttyp* ao correspondente ptyp* da axport3 (AXIP Worm Hole), aqui eu usei o ttypc.
speed 9600
Aqui o meu ax25ipd esta assim!
3 - arquivo ax25rtd.conf: Nao configurado.
4 - arquivo ax25.profile: Nao configurado.
5 - arquivo axports: Configure 4 portas. Siga as minhas configurações.
6 - arquivo axspawn.conf: Nao configurado (Nao uso a interface de node para os usuarios aqui por motivos de segurânça, neste arquivo voce pode dar acesso ao seu Linux para os usuarios do seu node, isto e, a meu ver, um bruta falha de segurânça, sobretudo porque os usuarios podem ganhar shell na maquina (bash) e depois podem explorar algum bug em programas de setuid para root! Voce entao esta avisado, configure esse arquivo, se desejar, por sua conta e risco :). Voce pode deixar o shell KISS normal ou entao faça como eu e o Catalan preferimos fazer, continuamos usando o TNOS porque nele nao ha riscos com relacao ao interpretador de comandos)
As duas linhas mais importântes sao:
NodeId "alias do node : prefixo"
Nrport "nome da porta de netrom" (deve ter a mesma denominaçao da porta do Linux Switch Port, descrita no arquivo nrports)
Este arquivo e interessante de ser configurado porque ai voce pode rodar o programa node, e entrar nele para testar como o seu XFBB esta acessando as portas de netrom para o forward sem a porta de telnet. (A sua senha pode ser configurado no arquivo node.perms)
Aqui esta um exemplo do meu arquivo node.conf, voce deve configurar a porta do node no arquivo /etc/services e chamar o programa node pelo arquivo /etc/inetd.conf
8 - arquivo node.perms: Configure o seu login e a sua senha aqui, caso voce rode o node temporariamente para testar as portas de netrom.
9 - arquivo nrbroadcast: Siga o exemplo do meu arquivo aqui.
10 - arquivo nrports: Configure as portas de netrom (aqui configurei 3 portas, sendo uma exclusiva para forward, a outras para acesso de usuarios).
Siga este exemplo.
11 - Os demais arquivos, inclusive os da configuracao de rose ports, eu nao configurei pois o TNOS ja da suporte a rose, mas se quizer usar isso tambem no XFBB e so configurar.
5 - Configuraçao do XFBB
Para configurar o XFBB para se linkar ao AX25, voce necessitara apenas configurar o arquivo port.sys (Mas isso e só para fazer a linkagem, nao esqueça que voce necessita configurar TODO o XFBB para este funcionar corretamente).
Este arquivo e muito dificil de ser explicado, voce deve consultar os manuais do XFBB para entender como proceder a configuraçao do mesmo, mais ai vai uma copia do meu port.sys. Compare as configurações dele com a dos arquivos axports e nrports do AX25 que voce ira entender o que se passa.
6 - Configuraçao do TNOS
O arquivo autoexec.nos nao necessitara de nenhuma alteracao nas linhas ja existentes, apenas alguns acrescimos no mesmo:
Uma linha devera ter o seguinte comando de attach: attach asy ttypd - ax25 fbb 2048 1024 9600
Esta linha deve preceder a linha que faz o attach do TNOS na porta de vhf que o liga ao radio. O terminal ttyp* deve casar com o seu correspondente ptyp* que realiza o kissattach da porta axport0 do seu AX25 (olhar o arquivo startxfbb mais adiante).
Apos o comando de attach acima, o seu autoexec.nos deve processar as seguintes linhas:
param fbb min 255
ax25 hport fbb on
pbbs mport fbb on
ifconfig fbb description "Descriçao da porta de link"
netrom interface fbb 230 v
netrom bcpoll fbb
ifconfig vhf rxecho fbb
Aqui segue um exemplo do meu autoexec.nos!
7 - Configuracao do seu arquivo rc.local e startxfbb
Finamente passamos a configuracao do arquivo de boot, antes de continuar cabe uma explicaçao, no meu Linux, por motivos de segurânça e principios que todos nos administradores de rede Internet temos, nao rodo o XFBB como usuario root, e sim como usuario nao root. O XFBB funcionara sem problemas, mesmo sem ser root, desde que ele nao tenha que controlar ou acessar o TNC. Aqui eu faço o roteamento do XFBB atraves do TNOS, o que permite que os usuarios (radioamadores) usem Internet e XFBB numa mesma porta de radio (VHF).
As configuracoes que passei ate agora foram nesse sentido, porem, se voce quizer rodar o XFBB como root mesmo, bastara retirar a chamada do comando SU que precede o comando de chamada do xfbb.sh
No meu Linux eu faço o seguinte: dentro do meu /etc/rc.d/rc.local eu faço a chamada de um arquivo com permissao de execussao (-rwxr-xr-x) chamado startxfbb, dentro do diretório /etc/rc.d, neste arquivo (/etc/rc.d/startxfbb) sao executados os daemons do AX25 (É importânte que esse arquivo seja executado antes do seu arquivo que starta o TNOS (rc.tnos), por isso, e pelo su para usuario nobody, e que eu coloquei a chamada de execussao deste arquivo startxfbb dentro do rc.local).
Observe tambem nos meus arquivos rc.local e startxfbb que eu redireciono as mensagens (de erro ou nao) para um arquivo chamado /var/log/startxfbb.log e para outro chamado /usr/local/xfbb/start.log. Esse redirecionamento podera ser retirado, se voce nao o quizer.
Apos isso, as configurações estarao terminadas (faltando apenas configurar corretamente o XFBB), proceda entao o reboot do sistema, se tudo der certo nao haverao mensagens de erro durante o boot.
Bem, isso e tudo o que eu tinha (e podia) passar para voce, espero que lhe seja de grande valia. Aproveito para colocar mais dois links aqui. Um apontando para o AX25-HOWTO e outro apontando para o manual completo do XFBB.
Aproveito tambem para agradecer aqueles que me ajudaram a configurar o TNOS, o AX25 e o XFBB, em especial os colegas Luiz Catalan (PP5AQ), Cesar Santos (PY1SW), William (PY2GN) e Edson (PU1JTE)
Um forte 73 - Rafael - PY1LCZ
Esta pagina foi especialmente feita por: Rafael Jorge Csura Szendrodi
Por favor, qualquer comentario envie para:
[email protected]
Ultima modificaçao em 27/07/1998
Volta a pagina anterior |