1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Netenv 0.94 - Linux Laptop in verschiedenen Netzwerkumgebungen</title>
</head>
<body>
<h2><a name="top">Nutzen Sie einen Linux Laptop in verschiedenen Netzwerkumgebungen ?</a></h2>
Zu Hause ? Im Bro ? Bei einem Kunden ?
<p>
Falls ja, kann das kleine Paket <i>netenv</i> ntzlich fr Sie sein. Beim
Booten des Laptops knnen Sie die aktuelle Netzwerkumgebung mit Hilfe
eines einfachen Mens auswhlen. Sind Sie zum ersten Mal in
einer Umgebung, so knnen Sie einige Grunddaten zur spteren
Verwendung eingeben.
<p>
<I>Netenv</I> erstellt eine Datei mit einigen Variablen, die die
aktuelle Netzwerkumgebung beschreiben. Diese Datei wird dann beim
PCMCIA-Start benutzt (so z.B. in Debian, RedHat und SuSe). Der
Mechanismus kann auch fr Laptops genutzt werden, die eine
Netzwerkkarte (oft NIC genannt) onboard haben.
<p>
So sieht die Auswahlbox von <i>netenv</i> aus:
<p>
<img src="netenv-chooser-box.png">
<p>
Neben der Grundfunktionalitt der Konfiguration der
NIC kann <i>netenv</i> fr weitere Aufgaben genutzt werden:
<ul>
<li>Auswahl einer XF86Config
<p>
Ntzlich z.B. dann, wenn man das Laptop mal standalone mit dem
Touchpad und mal mit einem CRT Monitor und externer Maus
nutzen mchte.
<p>
<li>Konfiguration des DNS
<p>
Mit den <i>netenv</i>-Daten kann eine geeignete /etc/resolv.conf
angelegt werden.
<p>
<li>Drucker Umgebung
<p>
Mit einer Zuweisung fr z.B. PRINTER kann der Defaultdrucker
gesetzt werden.
<p>
<li>Netscape preferences editieren
<p>
So knnen lstige Timeouts vermieden werden, wenn ohne
Verbindung zu einem Netz gearbeitet wird und nur lokale
Dateien betrachtet werden sollen.
<p>
<li>Fetchmail anpassen
<p>
Wenn ich eine permanente Verbindung zu meinem Mailserver
habe, nutze ich <i>netenv</i>, um fetchmail als Dmon
aufzurufen. Die Mail wird dann zyklisch abgeholt.
<p>
<li>Linking /dev/pilot
<p>
Wenn Sie einen Palm nutzen, knnen Sie /dev/pilot auf das
korrekte serielle Device linken wenn ein Cradle
angeschlossen ist. Andernfalls zeigt der Link auf den IRDA-Port.
</ul>
<p>
<I>Netenv</I> gibt es als Paket fr Debian und RedHat
Linux. Mandrake- und SuSe-Benutzer knnen das RedHat-Paket
benutzen. Selbstverstndlich ist auch ein tar-File verfgbar.
Fr das Mensystem bentigt <i>netenv</i> dialog(1) bzw. gdialog (in
den genannten Distributionen immer enthalten).
<p>
Ein Wort an alle Experten: Ich versuche hier, die Dinge mit Blick auf
Nicht-Experten zu erklren - also bitte Geduld.
<hr>
<p>
<a name="toc">Inhaltsbersicht</a>
<p>
<a href="#top">Was macht <i>netenv</i> ?</a>
<p>
<a href="#download">Wo bekommt man <i>netenv</i> ?</a>
<p>
<a href="#installation">Hinweise zur Installation</a>
<p>
<a href="#basics">Grundlagen</a>
<p>
<a href="#firsttimeconfig">Erstes Erstellen einer Umgebungsbeschreibung</a>
<p>
<a href="#config">Konfiguration</a>
<p>
<a href="#examples">Beispiele</a>
<p>
<a href="#dns">Bemerkungen zu DNS</a>
<p>
<a href="#suse">Bemerkungen fr SuSe 7.3 Benutzer</a>
<p>
<a href="#alternatives">Alternativen zu <i>netenv</i></a>
<p>
<a href="#final">Schluwort</a>
<p>
<hr>
<h2><a name="download">Wo bekommt man <i>netenv</i> ?</h2>
<I>Netenv</I> hat eine Webseite bei Sourceforge:
<a href="http://netenv.sourceforge.net">http://netenv.sourceforge.net</a>
<p>
Aber das wissen Sie wohl schon ...
<p>
Dort ist sowohl das tar-File als auch das RedHat-Paket
verfgbar. Letzteres sollte auch fr Mandrake und Suse benutzbar sein.
<p>
Debian-User
<p>
<I>Netenv</I> gibt es schon recht lange als Debian-Paket. Nheres
siehe unter <a href="http://www.debian.org/distrib/packages">http://www.debian.org/distrib/packages</a>.
<p>
<a href="#toc">Zurck zur Inhaltsbersicht</a>
<h2><a name="installation">Hinweise zur Installation</h2>
Hngt natrlich von der Distribution ab. Bei allen, die rpm-Pakete
benutzen, als root z.B.:
<pre>
rpm -i netenv-0.94-2.i386.rpm
</pre>
In Debian z.B.:
<pre>
dpkg -i netenv-0.92-2.i386.deb
</pre>
Andernfalls:
<pre>
tar xvf netenv-0.94-2.tar
</pre>
Es wird damit ein Shellskript namens <kbd>netenv</kbd>,
ein kleines Hilfsprogramm trpnc, Konfigurationsbeispiele sowie diese Doku
installiert.
Abhngig von der Distribution ist nun ein wenig Handarbeit ntig -
oder eben auch nicht.
<h3>RedHat</h3>
<em>Ich habe keine Kenntnis ber aktuelle
RedHat-Versionen. Wahrscheinlich sind die folgenden Hinweise vllig
veraltet. Vielleicht finden sich im Abschnitt <a
href="#how-to-use-tar">Zur Verwendung des tar-files</a> ntzliche Hinweise.</em>
<p>
Das <i>netenv</i>-RPM wurde unter RedHat 6.1 gepackt. Damit kann es in
allen Distributionen, die RPM nutzen, installiert werden.
<p>
Das Postinstall-Script sorgt dafr, da
<ul>
<li><i>netenv</i> in <kbd>/etc/rc.d/rc.sysinit</kbd> aufgerufen wird
<li>die Einbindung in die Konfiguration der Netzwerkkarte erfolgt.
</ul>
<kbd>/etc/rc.d/rc.sysinit</kbd> sieht dann wie folgt aus:
<pre>
lulu:/home/bav> tail -2 /etc/rc.d/rc.sysinit
# Added by package netenv on 06.03.2000 19:53:10
/usr/sbin/netenv
</pre>
Ferner wird <kbd>/etc/sysconfig/network-scripts/ifcfg-eth0</kbd>
gendert. Direkt nach der Erstinstallation von Redhat sieht diese
Datei z.B. so aus:
<pre>
lulu:/etc/sysconfig/network-scripts>>> cat ifcfg-eth0
DEVICE=eth0
BROADCAST=192.168.200.255
IPADDR=192.168.200.201
NETMASK=255.255.255.0
NETWORK=192.168.200.0
ONBOOT=yes
</pre>
Die Installation von <i>netenv</i> fgt zwei Zeilen hinzu:
<pre>
lulu:/etc/sysconfig/network-scripts>>> tail -3 ifcfg-eth0
ONBOOT=yes
# Added by package netenv on 06.03.2000 19:53:10
if [ -r /tmp/netenv ]; then . /tmp/netenv; fi
</pre>
<h3>SuSe</h3>
Mit Suse 8.x haben sich beim Systemanlauf und bei der
Netzwerkkonfiguration eine Vielzahl von nderungen ergeben. Die aktuelle
Prozedur geht von Suse 8.1 aus, sollte jedoch auch mit 8.0
funktionieren. Fr ltere Versionen siehe den nchsten Abschnitt.
<h4><a name="suse-8-1">SuSe 8.1</h4>
Das Postinstall-Script fgt zwei Zeilen zu /etc/init.d/boot.local hinzu:
<pre>lulu:/etc/init.d> tail -3 boot.local
#
# Added by package netenv on 06.12.2002 10:45:10
/usr/sbin/netenv
</pre>
Damit wird dafr gesorgt, da netenv beim Systemanlauf berhaupt
aufgerufen wird. Netenv nimmt als zu konfigurierende NIC eth0 an. Daher wird
an die Datei <pre>/etc/sysconfig/network/ifcfg-eth0</pre> die Zeile
<pre>if [ -r /tmp/netenv ]; then . /tmp/netenv; fi
</pre>
angehngt. Das ganze sieht dann wie folgt aus:
<pre>lulu:/etc/sysconfig/network> cat ifcfg-eth0
FIREWALL="YES"
BOOTPROTO='static'
BROADCAST='nn.nn.nn.nn'
IPADDR='nn.nn.nn.nn'
NETMASK='nn.nn.nn.nn'
NETWORK='nn.nn.nn.nn'
REMOTE_IPADDR=''
STARTMODE='onboot'
UNIQUE='oxTw.yHaVEFCrUXE'
WIRELESS='no'
if [ -r /tmp/netenv ]; then . /tmp/netenv; fi
</pre>
Die Eintrge IPADDR, NETMASK usw. rhren von der Grundinstallation
her und brauchen nicht gelscht werden. Sie werden durch die
Zuweisungen in /tmp/netenv bersteuert. In diesem Beispiel wird
unterstellt, da die verwendete NIC keine PCMCIA-Karte ist. Falls
doch, mu aus
<pre>STARTMODE='onboot'</pre>
<pre>STARTMODE='hotplug'</pre>
werden.
<h4>SuSe 7.3</h4>
Das Postinstall-Script fgt zwei Zeilen zu /etc/rc.d/boot.local hinzu:
<pre>
mweb@guru:/etc/rc.d > tail -3 boot.local
# before we're going to the first run level.
#
# Added by package netenv on 06.02.2001 20:28:10
/usr/sbin/netenv
</pre>
Fr PCMCIA-Karten wird ein Eintrag in /etc/pcmcia/network.opts
vorgenommen:
<pre>
mweb@guru:/etc/pcmcia > tail -2 network.opts
esac
# Added by package netenv on 06.02.2001 20:28:10
if [ -r /tmp/netenv ]; then . /tmp/netenv; fi
</pre>
Falls das Laptop eine eingebaute Netzwerkkarte hat und so auf PCMCIA
verzichtet werden kann, knnen die mit YAST eingetragenen Parameter
wie folgt bersteuert werden (manuell eintragen !):
<pre>
mweb@guru:/etc/rc.d > head -16 network
#! /bin/sh
# Copyright (c) 1996 SuSE GmbH Nuernberg, Germany. All rights reserved.
#
# Author: Florian La Roche <florian@suse.de>, 1996
# Werner Fink <werner@suse.de>, 1996
# Burchard Steinbild <bs@suse.de>, 1996
# Rolf Haberrecker <rolf@suse.de>, 1998
# Werner Fink <werner@suse.de> (based on a patch of Andries Brouwer) 1999
#
# /sbin/init.d/network
#
. /etc/rc.status
. /etc/rc.config
if [ -r /tmp/netenv ] ; then . /tmp/netenv; fi
</pre>
<h3>Debian</h3>
Das Debian-Paket netenv wird aktuell berarbeitet. Soweit mir bekannt,
knnen PCMCIA-NIC's ohne weitere Konfiguration genutzt
werden.
<p>
Onboard-NIC's allerdings erfordern eine genderte /etc/network/interfaces.
Man kann das mit netenv-Mitteln machen, siehe das Beispielskript
netenv_setup_debian_example. Tut man nichts, wird die NIC immer so wie
bei der Systeminstallation konfiguriert - ganz gleich, was man in
netenv ausgewhlt hat.
<h3>Mandrake</h3>
Mandrake 9 User berichteten, da der splash-screen abgeschaltet werden
mu (disable vga=nnn in /etc/lilo.conf), da andernfalls keine Eingabe
whrend des Systemanlaufs mglich ist. Ferner scheint das verwendete
cdialog nicht stabil zu sein. Erst durch Einsatz eines SuSe-dialog
konnte der Fehler behoben werden.
<h3><a name="how-to-use-tar">Zur Verwendung des tar-Files</h3>
Folgende Schritte sind zu tun:
<pre>
tar zxvf netenv-0.94-2.tar.gz
cd netenv-0.94-2
make
make install # ab hier mu das als user root geschehen !
make config
</pre>
Abhngig von der Distribution mu der letzte Schritt zur Einbindung
von netenv <kbd>make config</kbd> evtl. manuell vorgenommen werden.
<p>
netenv mu <b>vor</b> dem normalen Netzwerk- oder PCMCIA-Start
aufgerufen werden. Suchen Sie nach <kbd>/etc/init.d/boot.local</kbd>
oder einem quivalent. Fr weitere Details siehe den
<a href="#suse-8-1">SuSE 8.1</a> Abschnitt.
<p>
Nachdem so sichergestellt ist, da netenv beim Systemanlauf aufgerufen
wird, mssen die Konfigurationsdaten von den Netzwerk scripts gelesen
werden. Aktuelle Distributionen nutzen <kbd>ifup</kbd> um eine
vorkonfigurierte Netzwerk-Karte zu starten. Dann siehe den
<a href="#suse-8-1">SuSE 8.1</a> Abschnitt fr weitere Details.
<p>
Eine hufige Fehlerquelle besteht in der Verwechslung von eth0 und
eth1 wenn es eine onboard NIC und eine PCMCIA NIC. Oft ist eth0
onboard und eth1 PCMCIA NIC. Man kann das mit <kbd> dmesg | grep
eth</kbd> und <kbd>lspci</kbd> berprfen.
<p>
Netenv prft ob eine eth1 vorhanden ist. Dies ist allerdings
unzulnglich, da der Laptop zum Zeitpunkt der Installation vielleicht
gerade in einer anderen Konfiguration betrieben wurde.
<p>
<a href="#toc">Zurck zur Inhaltsbersicht</a>
<h2><a name="basics">Grundlagen</h2>
Die grundlegende Idee ist, da der Laptopbenutzer whrend des
Bootvorgangs eine Information darber eingibt, wo er sich mit seinem
Laptop gerade befindet. Dies geschieht <b>vor</b> dem Erreichen des run
level 2, d.h. also bevor eine Netzwerkkarte konfiguriert wird.
<p>
Dazu wird dialog(1) benutzt, ein einfaches und den meisten Benutzern
vertrautes Mensystem. Der Bootvorgang wird solange angehalten, bis der
Benutzer seine Wahl getroffen hat. Fr eine voreingestellte Umgebung
reicht es, einmal CR zu drcken.
<p>
Wenn man "lilo" als Bootmanager benutzt, kann man alternativ auch
z.B. eingeben:
<p>
<pre>
linux NETENV=lavie
</pre>
Damit wird eine Shellvariable "NETENV" mit dem Wert "lavie"
definiert. In meinem Fall heit das: Ich bin mit meinem Laptop namens
lulu im Bro. Die Datei mit den Zuweisungen fr IP-Addresse usw. hat
den Namen /etc/netenv/lulu-lavie. Der Linuxkern startet den
init-Prozess mit der Variablen NETENV als Teil seiner Umgebung. Das
gleiche tut dann init mit den sog. rc-Skripten.
<p>
Das netenv-Skript prft, ob NETENV gesetzt ist. Falls ja, wird der
Hochlauf fortgesetzt, ohne da das Auswahlmen erscheint.
<p>
Wenn die aktuelle Umgebung bestimmt ist, kopiert netenv die zugehrige
Beschreibungsdatei nach /tmp/netenv.
<p>
Diese Datei hat die Rechte 644, ist also von jedem Benutzer lesbar.
Sie kann so fr benutzerspezifische Konfiguration genutzt werden.
<p>
<a href="#toc">Zurck zur Inhaltsbersicht</a>
<h2><a name="firsttimeconfig">Erstes Erstellen einer Umgebungsbeschreibung</a></h2>
Nach der Installation sollte der Benutzer root netenv aufrufen. Dazu:
<pre>
netenv
</pre>
Es erscheint eine Eingabemaske, die nur eine Wahlmglichkeit bietet:
<pre>
new Set_up_new_environment
</pre>
Es werden dann nacheinander abgefragt:
<pre>
Enter the current IP-Address or the keyword dhcp ...
Enter the netmask of the current subnet ...
Enter the IP-Address of the current network ...
Enter the Broadcast-Address of the current network ...
Enter the Gateway-Address of the current network ...
Enter the IP-address of the current nameserver ...
</pre>
Falls man sich in einem Netzwerk mit DHCP-Server befindet, gibt man
statt der IP-Addresse dhcp ein. Es wird dann eine /tmp/netenv
erstellt, die nur
<pre>
BOOTPROTO='dhcp'
STARTMODE='hotplug'
</pre>
enthlt. Alle anderen Werte werden dann gem der DHCP-Konfiguration
ermittelt. Falls die NIC onboard ist, sollte netenv
<pre>
STARTMODE='onboot'
</pre>
gesetzt haben.
<p>
Bei statischer IP-Addresse wird nach Eingabe des Wertes fr die
folgenden Werte ein in vielen Fllen sinnvoller Vorschlag eingeblendet.
<p>
Es kommt dann die Frage, ob diese Konfiguration gesichert werden soll:
<pre>
Do you want to save this configuration ?
</pre>
Fr den Namen, den man hier angibt, bitte <b>keine</b> Leerzeichen
verwenden !
<p>
netenv bietet abhngig von der Distribution an, das Netzwerk zu
restarten und so die nderungen zu aktivieren.
<p>
Andernfalls kann man bei einer PCMCIA-NIC entweder die Karte entnehmen und
wieder einfhren <b>oder</b> als Benutzer root das PCMCIA-Skript
ausfhren:
<pre>
/etc/init.d/pcmcia restart
</pre>
In beiden Fllen sollte der cardmanager aus dem PCMCIA-Paket aktiv
werden und die Schnittstelle konfiguriert werden.
<p>
Ein ping auf die angegebene Gateway-Addresse wird es zeigen !
<p>
Falls nicht: Leuchtet die Link-LED ? Prfen Sie die Ausgabe von
<pre>ifconfig eth0</pre>
<p>
Das gerade beschriebene Vorgehen ist auch dann zu whlen, wenn bei
laufendem Laptop zwischen zwei Netzwerkumgebungen gewechselt werden
soll. Auch hier ist ein Reboot nicht ntig - wir nutzen ja Linux ...
<p>
Diejenigen, die statt PCMCIA eine Netzwerkkarte onboard nutzen, mssen
ihr Netzwerk restarten.
<p>
In RedHat 7.0 oder SuSE dazu z.B..
<pre>
/etc/init.d/network restart
</pre>
Netenv fhrt dies bei entsprechender Besttigung aus.
<p>
<a href="#toc">Zurck zur Inhaltsbersicht</a>
<h2><a name="config">Konfiguration</a></h2>
<I>Netenv</I> wird mit Beschreibungdateien konfiguriert. Diese liegen in
<kbd>/etc/netenv</kbd>. Auf einem Laptop mit dem Namen "lulu" werden
Dateien lulu, lulu-foo, lulu-bar usw. ausgewertet.
Das Namensschema ist damit wie folgt:
<pre>
/etc/netenv/<NODE-NAME>-<VALUE-OF-VARIABLE-NETENV>
</pre>
Die Datei, die den Hostnamen des Laptops hat, erscheint im Auswahlmen
immer ganz oben. Hier reicht also einmal auslsen, um den Bootvorgang
fortzusetzen. In dieser Datei sollte also sinnvollerweise die
Beschreibung der am hufigsten genutzten Netzwerkumgebung liegen.
<p>
Die Beschreibungsdateien enthalten Zuweisungen in Shell Syntax, z.B.
<pre>
netenv_id=At_Home_LCD_WheelMouse_pcmcia
...
IPADDR=123.456.78.9
...
NETSCAPE_PROXY_TYPE=2
</pre>
Leerzeichen fhren hier (wie immer in der Shell) zu Problemen.
Fr eine erfolgreiche Konfiguration einer Netzwerkkarte sind
mindestens Zuweisungen von
<pre>
IPADDR
NETMASK
NETWORK
BROADCAST
</pre>
erforderlich. Abhngig von der jeweiligen Situation kann auch
<pre>
GATEWAY
DNS_1
</pre>
notwendig sein. <b>Man kann hier beliebige Variablendefinitionen einfgen -
Hauptsache, alles bleibt syntaktisch korrekt.</b>
Eine Zuweisung in der Form
<pre>
NETENV_SCRIPT=/etc/netenv/netenv_setup
</pre>
nimmt eine Sonderstellung ein. Wenn die hier angezogene
Datei lesbar ist, wird netenv diese Datei nach
der Auswahl der aktuellen Netzwerkumgebung ausfhren (genauer:
sourcen).
<p>
<b>Achtung ! Dies gescheht in einem frhen Status des Bootvorgangs. Es
ist noch kein Netzwerk aktiv ! NETENV_SCRIPT wird mit root-Rechten ausgefhrt !</b>
<p>
Mit Hilfe des hier angezogenen Skriptes kann man dann etliche
sinnvolle Sachen machen. Dazu mehr bei den <a href="#examples">Beispielen</a>.
<p>
<h3>Experten Modus</h3>
Wenn man in der netenv-dialog-box CANCEL whlt, kann man in eine shell
verzweigen. Verlt man diese, steht die Auswahlbox erneut zur
Verfgung.
<b>Sicherheitshinweis:</b>
Das Verzeichnis /etc/netenv und darin liegende Dateien drfen nur fr
den Benutzer root schreibbar sein. netenv prft dies.
<p>
<a href="#toc">Zurck zur Inhaltsbersicht</a>
<h2><a name="examples">Beispiele</a></h2>
Dies ist natrlich der bei weitem wichtigste Abschnitt dieser Doku ...
<p>
Diese Beispiele sind aufeinander aufbauend beschrieben. Also bitte
hintereinander lesen !
<h3>StandAlone_Touchpad</h3>
<pre>
lulu:/etc/netenv>>> cat lulu-touch-pad
netenv_id=StandAlone_Touchpad_no_eth
STARTMODE=manual
export XF86CONFIG_FILE=/etc/X11/XF86Config-4-lcd-touch
NETENV_SCRIPT=/etc/netenv/netenv_setup
# This may be used to edit ~/.netscape/preferences.js
NETSCAPE_PROXY_TYPE=3
</pre>
Dies nutze ich, wenn mein Laptop keine Verbindung zu einem Netz
hat.
<p>
Der Wert der Variablen netenv_id (wie gesagt: Bitte <b>ohne</b>
Leerzeichen) wird als Beschreibung im Auswahlmen benutzt.
<p>
Es wird keine IP-Addresse zugewiesen. Durch das STARTMODE=manual wird
beim Systemanlauf keine NIC konfiguriert. Ich setze
NETENV_SCRIPT=/etc/netenv/netenv_setup. Dieses ist eine
Datei mit Shell-Befehlen. Sie ist dieser Dokumentation <a
href="netenv_setup">hier beigefgt</a>.
<p>
Das Beispiel ist einfach gehalten und kann so als Ausgangsbasis fr
eigene Anpassungen dienen. Hier relevanter Code ist:
<pre>
lulu:/etc/netenv>>> cat netenv_setup
...
# Simple way to configure the X-Server
if [ -r $XF86CONFIG_FILE ]; then
echo $XF86CONFIG_FILE will be used for configuring the X-Server ...
mv /etc/X11/XF86Config /etc/X11/XF86Config.old
ln -s $XF86CONFIG_FILE /etc/X11/XF86Config
fi
...
</pre>
Da ich XF86CONFIG_FILE einen Wert zugewiesen habe, wird ein Link angelegt.
Diesmal von der Beschreibungsdatei, die ich fr mein LCD mit Touchpad
erstellt habe.
<p>
Typischerweise fhre ich mit netenv_setup alle die Aktionen aus, fr
die der User root ntig ist und die das ganze Systeme
betreffen. Einstellungen hingegen, die nur fr meine Arbeitsumgebung
wichtig sind, werden in meiner .xinitrc getroffen. Dazu ein Beispiel:
<p>
NETSCAPE_PROXY_TYPE nutze ich in meiner ganz privaten Konfiguration:
<pre>
lulu:/home/bav> cat .xinitrc
#!/bin/sh
...
if [ -r /tmp/netenv ]; then
. /tmp/netenv
fi
if [ -n "$NETSCAPE_PROXY_TYPE" ]; then
~/tools/edit-ns-preferences $NETSCAPE_PROXY_TYPE
fi
...
</pre>
Das angezogene Skript edit-ns-preferences findet sich bei der
<i>netenv</i>-Dokumentation. Ich vermeide so unntige Network-Timeouts, wenn
ich den Browser starte.
<h3>In_the_Office</h3>
<pre>
lulu:/etc/netenv>>> cat lulu-lavie
# Networkenvironment: netask
netenv_id="lavie_pcmcia_dhcp"
export BOOTPROTO=dhcp
export STARTMODE=hotplug
export PRINTER=cc_hp
NETSCAPE_PROXY_TYPE=2
FETCHMAIL_POLL_INTERVALL=900
</pre>
Im Bro bekomme ich meine Netzwerkkonfiguration von einem
DHCP-Server. STARTMODE=hotplug ist gesetzt, weil mein Laptop keine
onboard-NIC hat und daher die PCMCIA-NIC genutzt werden mu.
<p>
Mit
PRINTER=cc_hp wird der Defaultdrucker auf den Drucker im Bro
gesetzt. NETSCAPE_PROXY_TYPE=2 aktiviert die automatische Proxykonfiguration im Netscape.
<p>
Wenn ich im Bro arbeite, mchte ich, das zyklisch Email
abgeholt wird. Dazu dient FETCHMAIL_POLL_INTERVALL. Folgende Zeilen in
meiner <kbd>~/.xinitrc</kbd> starten fetchmail als Dmon, der dann alle 15 min
gem den Definitionen in meiner <kbd>~/.fetchmailrc</kbd> arbeitet:
<pre>
if [ -n "$FETCHMAIL_POLL_INTERVALL" ]; then
fetchmail -d $FETCHMAIL_POLL_INTERVALL
fi
</pre>
<h3>Laptop_at_home</h3>
Zu Hause nutze ich folgende Beschreibungsdatei. Da ich meistens hier
arbeite, ist der Dateiname gleich dem Nodenamen meines Laptops und
damit der Default. Es reicht also, im Netenv-Auswahlmen einmal auszulsen:
<pre>
lulu:/etc/netenv>>> cat lulu
netenv_id=At_Home_Docking_LCD_WheelMouse_onboard_VPN
IPADDR=nnn.nn.nnn.nnn
NETMASK=nnn.nnn.nnn.nnn
NETWORK=nnn.nn.nnn.nnn
BROADCAST=nnn.nn.nnn.nnn
GATEWAY=nnn.nn.nnn.nnn
SEARCH=foo.bar.com
DNS_1=nnn.nn.nn.nn
DNS_2=nnn.nn.nn.nn
FETCHMAIL_POLL_INTERVALL=900
# If the variable NETENV_SCRIPT points to an readable file,
# it will be run when netenv is executed
NETENV_SCRIPT=/etc/netenv/netenv_setup
ICEWM_INCLUDE_FILE=home
# This defines my CRT with 1024x768 and a wheelmouse
XF86CONFIG_FILE=/etc/X11/XF86Config-4-lcd-wheel
# This may be used to edit ~/.netscape/preferences.js
NETSCAPE_PROXY_TYPE=2
# This may be used to edit ~/.opera/opera6.ini
OPERA_PROXY_FILE=proxy-fsc.ini
# NIC is in the docking unit - like it were onboard
STARTMODE='onboot'
</pre>
Aus der netenv_setup ist hier folgender Abschnitt von Bedeutung:
<pre>
lulu:/etc/netenv>>> cat netenv_setup
...
PROFILE=$1
...
if [ "$PROFILE" = "default" ]; then
print_action linking /dev/pilot
rm -f /dev/pilot; ln -s /dev/ttyS0 /dev/pilot
print_status
print_action calling ptal-init start
/usr/sbin/ptal-init start
print_status
else
# When there is no docking station, start irattach appropiately and
# link /dev/pilot to ircomm0.
print_action running irattach
/usr/sbin/irattach /dev/ttyS3 -s
print_status
print_status linking /dev/pilot
rm -f /dev/pilot; ln -s /dev/ircomm0 /dev/pilot
print_status
fi
...
</pre>
netenv_setup wird mit dem Parameter PROFILE aufgerufen, der hier den Wert
"default" hat (sonst immer Name der Beschreibungsdatei abzglich Hostname).
<p>
Zu Hause habe ich einen Cradle fr meinen Palm. Daher sorge ich dafr,
da /dev/pilot auf den entsprechenden seriellen Anschlu zeigt. Ferner
mu die Software fr meinen HP Officejet gestartet werden. In allen
anderen Umgebungen kann ich den Palm nur ber IRDA ansprechen. ptal
braucht dann nicht gestartet werden.
<p>
Zu Hause befindet sich mein Laptop in einer Docking-Unit. Diese
enthlt eine NIC. Um diese zu verwenden, mu
<pre>STARTMODE='onboot'</pre>
gesetzt werden.
<h3>At_Customer_Foobar</h3>
Frhere Versionen der libc boten einem nicht privilegierten Benutzer
die Mglichkeit, durch Setzen der Umgebungsvariablen HOSTALIASES quasi
eine private /etc/hosts anzulegen. Aus Sicherheitsgrnden steht dieser
Weg in aktuellen Distributionen nicht mehr zur Verfgung.
<p>
Will man nun seine /etc/hosts nicht jedesmal manuell editieren, kann folgender
Mechanismus helfen. Fr mich ist er auch deshalb praktisch, wenn ich
in unterschiedlichen Umgebungen Rechner mit gleichen Namen aber
unterschiedlichen IP-Nummern antreffe.
<p>
Ich habe in meine /etc/hosts Marken wie folgt eingetragen:
<pre>
lulu:/home/bav> cat /etc/hosts
...
# netenv hosts begin
# netenv hosts end
...
</pre>
In meiner aktuellen Beschreibungsdatei definiere ich eine Reihe von
Rechnern mit den dazugehrigen IP-Addressen, die ich erreichen mchte:
<pre>
NETENV_HOST_ENTRIES="192.168.10.11 abba:192.168.10.12 bebe:192.168.10.3 alfa-sw:\
192.168.10.4 beta-sw:192.168.10.13 coca:192.168.10.14 cola"
</pre>
Folgendes Codefragment aus meiner /etc/netenv/netenv_setup sorgt nun
dafr, da nach Auswahl der Umgebung automatisch /etc/hosts editiert
wird:
<pre>
if [ -n "$NETENV_HOST_ENTRIES" ]; then
if egrep '^# netenv hosts begin$' /etc/hosts > /dev/null 2>&1; then
(
awk 'NR==1,/^# netenv hosts begin$/' /etc/hosts
echo $NETENV_HOST_ENTRIES | awk -F'\:' '{ for ( j=1; j<=NF; j++ ) print $j }'
awk '/^# netenv hosts end$/,/*/' /etc/hosts
) > /etc/hosts.netenv
mv /etc/hosts.netenv /etc/hosts
chmod 644 /etc/hosts
echo netenv_setup: /etc/hosts was modified ...
fi
else
if egrep '^# netenv hosts begin$' /etc/hosts > /dev/null 2>&1; then
(
awk 'NR==1,/^# netenv hosts begin$/' /etc/hosts
awk '/^# netenv hosts end$/,/*/' /etc/hosts
) > /etc/hosts.netenv
mv /etc/hosts.netenv /etc/hosts
chmod 644 /etc/hosts
echo netenv_setup: /etc/hosts was cleaned up ...
fi
fi
</pre>
Die /etc/hosts stellt sich danach wie folgt dar:
<pre>
...
# netenv hosts begin
192.168.10.11 abba
192.168.10.12 bebe
192.168.10.3 alfa-sw
192.168.10.4 beta-sw
192.168.10.13 coca
192.168.10.14 cola
# netenv hosts end
...
</pre>
Alle diese Rechner sind fr mich vertrauenswrdig, daher nutze ich in
meiner <kbd>~/.xinitrc</kbd> diesen Mechanismus und sorge noch dafr, da
automatisch X-Displays von diesen Rechner akzeptiert werden:
<pre>
XHOST_PLUS_LISTE=`awk '/^# netenv hosts begin$/,/^# netenv hosts end$/' /etc/hosts | awk '!/^#/ {print $2}'`
xhost $XHOST_PLUS_LISTE
</pre>
Anschlieend liefert xhost mir dann:
<pre>
lulu:/home/bav> xhost
access control enabled, only authorized clients can connect
INET:cola
INET:coca
INET:beta-sw
INET:alfa-sw
INET:bebe
INET:abba
</pre>
<p>
<a href="#toc">Zurck zur Inhaltsbersicht</a>
<h2><a name="dns">Bemerkungen zu DNS</h2>
<I>Netenv</I> nimmt <b>keine</b> DNS Konfiguration vor. Leider gibt es gerade
hier etliche Unterschiede zwischen den Distributionen.
<p>
Der Mechanismus, den David Hinds in seinem PCMCIA-Paket implementiert
hatte, schien mir immer hinreichend (Skript network, Teil des
pcmcia-package). Ein Ausschnitt macht deutlich, was dort geschieht:
<pre>
# Update DNS stuff
cp /etc/resolv.conf /etc/resolv.new
echo "# $DEVICE begin" >> /etc/resolv.new
test "$DOMAIN" && echo "domain $DOMAIN" >> /etc/resolv.new
if [ "$DNSSRVS $DNS_1 $DNS_2 $DNS_3" != " " ] ; then
for DNS in $DNSSRVS $DNS_1 $DNS_2 $DNS_3 ; do
echo "nameserver $DNS" >> /etc/resolv.new
done
fi
echo "# $DEVICE end" >> /etc/resolv.new
mv /etc/resolv.new /etc/resolv.conf
</pre>
Die Datei <kbd>/etc/resolv.conf</kbd> wird auf eine temporre
umkopiert. Wenn eine der Variablen <kbd>DOMAIN, DNSSRVS, DNS_1,
DNS_2</kbd> oder <kbd>DNS_3</kbd> einen Wert haben, werden die
entsprechenden Kommandos abgesetzt. Dieser neue Abschnitt beginnt
mit z.B. <kbd># eth0 begin</kbd> und endet mit z.B. <kbd># eth0
end</kbd>. Dies wird beim Beenden des PCMCIA-Services benutzt, um
diesen Abschnitt wieder zu entfernen. Danach wird die
<kbd>/etc/resolv.conf</kbd> wieder im Originalzustand sein.
<p>
Um dies zu nutzen, ist es also hinreichend, z.B. DNS_1 zu setzen.
<p>
Wenn man das mit <i>netenv</i> machen mchte, kann z.B. folgender Code in
/etc/netenv/netenv_setup eingefgt werden:
<pre>
if [ ! -z "$DNS_1" ]; then
(
echo "# resolv.conf autogenerated by netenv "`date`
if [ ! -z "$DOMAIN" ]; then echo domain $DOMAIN; fi
if [ ! -z "$SEARCH" ]; then echo search $SEARCH; fi
echo nameserver $DNS_1
if [ ! -z "$DNS_2" ]; then echo nameserver $DNS_2; fi
) > /etc/resolv.conf
chmod 644 /etc/resolv.conf
echo netenv: /etc/resolv.conf was set up ...
fi
</pre>
<p>
<a href="#toc">Zurck zur Inhaltsbersicht</a>
<h2><a name="suse">Bemerkungen fr SuSe 7.3 Benutzer</h2>
Wenn man eine Onboard-Ethernetschnittstelle hat (also gar keine
PCMCIA-NIC nutzen mu), mu der normale Eintrag in /etc/rc.config
bersteuert werden. Dies geschieht durch eine Zuweisung der Form
<pre>
IFCONFIG_0="172.25.64.130 broadcast 172.25.64.255 netmask 255.255.255.0 up"
</pre>
Wenn man hingegen DHCP verwenden mchte, mu der Eintrag
<pre>
IFCONFIG_0="dhcpclient"
</pre>
lauten. Dies kann mit mit netenv wie folgt tun. Zunchst das
zugehrige Profil:
<pre>
elli:/etc/netenv> cat elli-ht
# Networkenvironment: DHCP
export USE_DHCP=yes
NETENV_SCRIPT=/etc/netenv/netenv_setup
</pre>
Ferner braucht man ein netenv_setup-Skript mit mindestens folgendem
Inhalt:
<pre>
elli:/etc/netenv> cat netenv_setup
edit_rc_config()
{
if [ ! -r /etc/rc.config ]; then
echo No /etc/rc.config, probably not a SuSE-System, giving up ...
return 1
fi
VARIABLE_TO_CHANGE=$1
shift
echo ${VARIABLE_TO_CHANGE}'="'$*'"' > /tmp/.netenv.tmp.$$
LINE=`awk '/^'$VARIABLE_TO_CHANGE'=/ {LINE=NR} END {print LINE}' /etc/rc.config`
awk -v LINE=$LINE 'NR<LINE' /etc/rc.config > /tmp/.rc.config.netenv
cat /tmp/.netenv.tmp.$$ >> /tmp/.rc.config.netenv
awk -v LINE=$LINE 'NR>LINE' /etc/rc.config >> /tmp/.rc.config.netenv
cat /tmp/.rc.config.netenv > /etc/rc.config
rm -f /tmp/.rc.config.netenv /tmp/.netenv.tmp.$$
echo netenv_setup: rc.config edited, Variable $VARIABLE_TO_CHANGE set to $*
}
if [ "$USE_DHCP" = yes ]; then
edit_rc_config IFCONFIG_0 dhcpclient
else
edit_rc_config IFCONFIG_0 "$IPADDR broadcast $BROADCAST netmask $NETMASK up"
fi
</pre>
<p>
Fr das statische Routing nutzt SuSe die Datei /etc/route.conf. Eine
Default-Route sieht hier wie folgt aus:
<pre>
default 172.246.2.1
</pre>
Ausgehend von dem Beispiel, in dem gezeigt wird, wie man mit netenv
die /etc/hosts editiert, kann man hier entsprechend vorgehen. Als
Beispiel:
<pre>
if grep SuSE /etc/issue 1>/dev/null; then
if [ ! -z "$GATEWAY" ]; then
(
echo "# route.conf autogenerated by netenv "`date`
echo default $GATEWAY 0.0.0.0 eth0
) > /etc/route.conf
echo netenv_setup: /etc/route.conf was modified ...
fi
fi
</pre>
<p>
<a href="#toc">Zurck zur Inhaltsbersicht</a>
<h2><a name="alternatives">Alternativen zu <i>netenv</i></h2>
Wie so oft in Linux gibt es Auswahl. Alternativen zu <i>netenv</i> sind im
<a href="http://tuxmobil.org/Mobile-Guide.db/Mobile-Guide.html">Linux on the
Road - A Guide for Laptops and Mobile Devices</a> von Werner Heuser beschrieben.
<p>
Die, die ich nher angeschaut habe, versuchen, die Netzwerkumgebung zu
bestimmen, indem sie entsprechende arp requests versenden. SuSe
liefert mit 8.x das System Configuration Profile Management scpm. Dies
ist sicherlich mchtig, mir fehlt jedoch ein Benutzerinterface beim Booten.
<p>
<a href="#toc">Zurck zur Inhaltsbersicht</a>
<h2><a name="final">Schluwort</h2>
Ich hoffe, <i>netenv</i> wird Ihnen ntzlich sein. Bei Fragen und
Kommentaren senden Sie eine Mail an <a href="mailto:bav@epost.de">bav@epost.de</a>.
<p>
<a href="#toc">Zurck zur Inhaltsbersicht</a>
<hr>
<address><a href="mailto:bav@epost.de">Gerd Bavendiek</a></address>
<!-- Created: Mon Apr 13 21:25:07 CEST 1998 -->
<!-- hhmts start -->
Last modified: Tue Apr 1 20:55:15 CEST 2003
<!-- hhmts end -->
</body>
</html>
|