My Network

Network Topology

Extant Network
Previous Network

Joule runs Debian Linux with Shorewall and OpenVPN. Dalton is similar to Joule.

Software Packages

Dnsmasq
Mgetty
OpenVPN
Shorewall

Features

MTU in Debian Lenny

Debian Lenny running on Joule set the MTU on the link to the ISP to 576. This is the smallest MTU value allowed by RFC 791 whereas the value normally used for Ethernet v2 is 1500. This appears to be a bug in Debian Lenny. In my network, a consequence was that Heaviside and Cantor received frames without fail whereas frames exceeding the 576 MTU were not transmitted. So, for example, small emessages were transmitted but large messages were not. This line in /etc/network/interfaces solves the problem.
post-up /sbin/ip link set $IFACE mtu 1500

Configuration files in Dalton.

This command will remove any line containing only a comment and any blank line from /etc/dnsmasq.conf.
egrep -v '(^ *#)|(^ *$)' /etc/dnsmasq.conf


# dalton:/etc/dnsmasq.conf 
# Upstream nameservers. 
server=142.103.1.1@eth0 
server=137.82.1.1@eth0 
except-interface=eth0 
# Cantor, Sparc and Toshiba have static addresses. 
no-dhcp-interface=DmzBel00bb74 
no-dhcp-interface=DmzACS0713 
# Systems subnetted via DHCP. 
dhcp-range=172.24.1.3,172.24.1.4 
# Temporary link to Carnot for netboot and system installation. 
# dhcp-range=172.24.1.5,static 
# dhcp-host=08:00:20:0e:84:78,172.24.1.5,infinite 
# dhcp-option=option:root-path,/export/172.24.1.5/root/ 
# dhcp-boot=netbsd 
# enable-tftp 
# tftp-root=/tftpboot

# dalton:/etc/hosts 
127.0.0.1     localhost.localdomain localhost
# Static addresses at UBC. 142.103.107.137     dalton.invalid dalton 142.103.107.138     carnot.invalid carnot 142.103.107.139 sparc.invalid sparc
# Endpoints of joule-dalton tunnel. 10.4.0.1          joule.invalid     joule # 10.4.0.2     dalton # Endpoints of armada-dalton tunnel. 10.4.1.1          armada.invalid     armada # 10.4.1.2     dalton
# Private subnets at UBC. Three subordinate hosts on this subnet. # 172.24.1.1     dalton.invalid     dalton 172.24.1.2     cantor.invalid     cantor
# Machines in the Local zone with connections using DHCP. # 172.24.1.3,172.24.1.4     
# Addresses specified in /etc/ppp/options.ttyS0 # 172.24.3.1 dalton.invalid dalton # 172.24.3.2 machine connected through the modem.
# Addresses specified in /etc/ppp/options.ttyS1 # 172.24.4.1 dalton.invalid dalton # 172.24.4.2 machine connected through the null-modem cable.
# The connection to Carnot depends upon proxy arp. # 172.25.2.1     dalton.invalid     dalton # 172.25.2.2     carnot.invalid     carnot
# The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters

# dalton:/etc/inittab 
# Start mgetty for the null modem and for the modem. 
T0:23:respawn:/sbin/mgetty ttyS0 
T1:23:respawn:/sbin/mgetty ttyS1

# dalton:/etc/network/interfaces 
# This file describes the network interfaces available on your system 
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface auto lo iface lo inet loopback
# The primary network interface auto eth0 allow-hotplug eth0 iface eth0 inet static address xxx.yyy.107.137 netmask 255.255.255.128 broadcast xxx.yyy.107.255 gateway xxx.yyy.107.254
# Interface to Cantor connected by an Ethernet crossover. auto LocBel7411cc allow-hotplug LocBel7411cc iface LocBel7411cc inet static address 172.24.1.1 netmask 255.255.255.0
# Interface to Toshiba 4000 Web server connected by an Ethernet crossover. # Reference http://www.shorewall.net/shorewall_setup_guide.htm . auto DmzACS0713 allow-hotplug DmzACS0713 iface DmzACS0713 inet static address 172.25.1.1 netmask 255.255.255.0
# Interface to Sparcstation connected by an Ethernet crossover. auto DmzBel00bb74 allow-hotplug DmzBel00bb74 iface DmzBel00bb74 inet static address 172.25.2.1 netmask 255.255.255.0

# dalton:/etc/mgetty/mgetty.config 
debug 4 
data-only y 
issue-file /etc/issue.mgetty 
# The null-modem cable. 
port ttyS0 
  direct y 
  speed 38400 
  toggle-dtr n 
# The modem. 
port ttyS1 
  ringback y 
  ringback-time 15 
  speed 38400 
  init-chat "" AT&F1S0=0&B1&H1&R2&D3&C1 OK

# dalton:/etc/mgetty/login.config 
/AutoPPP/ -     a_ppp   /usr/sbin/pppd
*       -       -       /bin/login @

# dalton:/etc/ppp/options, exceptions from stock file. 
asyncmap 0x0 
auth 
crtscts 
lock 
hide-password 
+pap 
-vj 
kdebug 1 
usehostname 
proxyarp 
lcp-echo-interval 30 
lcp-echo-failure 4 
noipx

# dalton:/etc/ppp/options.ttyS0 
# crossover serial cable. 
local 
netmask 255.255.255.0 
172.24.3.1:172.24.3.2

# dalton:/etc/ppp/options.ttyS1 
modem 
netmask 255.255.255.0 
172.24.4.1:172.24.4.2

# dalton:/root/ArmadaDaltonKey 
# 2048 bit OpenVPN static key 
  ...

# dalton:/root/JouleDaltonKey 
# 2048 bit OpenVPN static key 
  ...

# dalton:/etc/openvpn/ad.conf 
# Openvpn imposes a limit on the length of the name of a configuration file.  
# If the name is too long, the tunnel fails to open and this file is ad.conf  
# rather than ArmadaDalton.conf. 
# 
# Default protocol is udp. 
# Default port is 1194. 
dev tun 
# Peer Armada has a dynamic address; no remote option here. 
# Local and remote endpoints of the tunnel. 
ifconfig 10.4.1.2 10.4.1.1 
verb 5 
secret /root/ArmadaDaltonKey 1 
ping 120

# dalton:/etc/openvpn/jd.conf 
# Openvpn imposes a limit on the length of the name of a configuration file.  
# If the name is too long, the tunnel fails to open and this file is jd.conf  
# rather than JouleDalton.conf. 
# 
# Default protocol is udp. 
# Default port is 1194. 
dev tun 
# Peer Joule has a dynamic address; no remote option here. 
# Local and remote endpoints of the tunnel. 
ifconfig 10.4.0.2 10.4.0.1 
verb 5 
secret /root/jouledaltonkey 1 
ping 120 
# Subnet at home reached _via_ the tunnel. 
route 172.23.0.0 255.255.0.0 
# Shaw ftp server _via_ the tunnel.  
# route ftp.shaw.ca  
route 64.59.128.134 
# Shaw mail server _via_ the tunnel. 
# route shawmail.gv.shawcable.net  
route 24.71.223.43 
route 64.59.128.135

Shorewall configuration files are published under the terms of the GNU Lesser General Public License as published by the Free Software Foundation.

# dalton:/etc/default/shorewall 
startup=1

# dalton:/etc/shorewall/interfaces 
#ZONE INTERFACE BROADCAST OPTIONS 
net   eth0      detect    dhcp,tcpflags,routefilter,nosmurfs,logmartians 
dmz   Dmz+      detect    tcpflags,nosmurfs,routeback 
loc   Loc+      detect    tcpflags,nosmurfs,routeback 
loc   ppp+      detect    tcpflags,nosmurfs,routeback 
# This is for the openvpn tunnel. 
vpn   tun0 
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

# dalton:/etc/shorewall/masq 
#INTERFACE SOURCE ADDRESS PROTO PORT(S) IPSEC MARK 
#Masq the local subnets except Carnot.  Includes Cantor and the PPP links. 
eth0   172.24.0.0/16 
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

# dalton:/etc/shorewall/policy 
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST 
net     all  DROP     info 
$FW     all  ACCEPT           
loc     all  ACCEPT 
dmz     all  ACCEPT 
vpn     all  ACCEPT 
# THE FOLLOWING POLICY MUST BE LAST 
all     all  REJECT   info 
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE

# dalton:/etc/shorewall/proxyarp 
#ADDRESS        INTERFACE       EXTERNAL        HAVEROUTE PERSISTENT 
142.103.107.138 DmzACS0713      eth0            no        yes 
142.103.107.139 DmzBel00bb74    eth0            no        yes

# dalton:/etc/shorewall/rules 
#ACTION    SOURCE DEST  PROTO  DEST  SOURCE  ORIGINAL  RATE  USER/  MARK 
#                                PORT  PORT(S) DEST      LIMIT GROUP 
SSH/ACCEPT net    $FW 
# Drop Ping from the "bad" net zone and prevent your log from being flooded. 
Ping/DROP  net    $FW 
ACCEPT     $FW    loc   icmp 
ACCEPT     $FW    net   icmp 
ACCEPT     net    dmz   tcp    80 
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

 # /etc/shorewall/shorewall.conf 
IP_FORWARDING=On

# dalton:/etc/shorewall/tunnels 
#TYPE   ZONE GATEWAY   GATEWAY 
#                       ZONE 
# Joule has a dynamic address.  No need to cite a dynamic dns. 
openvpn net  0.0.0.0/0 
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

# dalton:/etc/shorewall/zones 
#ZONE TYPE     OPTIONS IN      OUT 
#                      OPTIONS OPTIONS 
fw     firewall 
net   ipv4 
loc   ipv4 
# This zone is for the servers including Carnot. 
dmz     ipv4 
# The tunnel. 
vpn   ipv4 
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

# dalton:/etc/vsftpd.conf, exceptions from stock file. 
listen=YES 
anonymous_enable=NO 
local_enable=YES 
write_enable=YES 
use_localtime=YES 
connect_from_port_20=YES 
secure_chroot_dir=/var/run/vsftpd/empty 
pam_service_name=vsftpd 
rsa_cert_file=/etc/ssl/private/vsftpd.pem 
force_dot_files=YES

# dalton:/etc/udev/rules.d/70-persistent-net.rules 
# Persistent names for network adapters.  The "Loc" prefix simplifies configuration  
# of Shorewall.  Linksys adapters have legible serial numbers.  The PCI adapter and  
# the Belkin adapter do not have legible serial numbers but there is only one of each  
# and there is no ambiguity.  These documents will help to understand udev and rules. 
# http://en.wikipedia.org/wiki/udev and  
# http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf 
# https://wiki.archlinux.org/index.php/udev 
# A "\" character at the end of a line indicates continuation of the rule.  
# PCI device 0x1039:0x0900 (sis900) 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:01:6c:b0:e6:b1",  
  ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# Ethernet-USB devices named according to the serial number legible to a human.  
# USB device 0x:0x (asix) 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1d:7e:00:ff:98", \ 
  ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="DmzACS0713" 
# USB device 0x:0x (asix) 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:b6:ef:1d:6c", \ 
  ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="LocLCS3196" 
# USB device 0x:0x (asix) 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1d:7e:00:e5:da", \ 
  ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="LocLCS3733" 
# USB device 0x:0x (pegasus) 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:05:1b:00:bb:74", \ 
  ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="DmzBel00bb74" 
# USB device 0x:0x (pegasus) 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:05:1b:74:11:cc", \ 
  ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="LocBel7411cc" 
# USB device 0x:0x (pegasus) 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:05:1b:00:8f:99", \ 
  ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="LocBel008f99"

# dalton:/etc/udev/rules.d/10-local.rules 
# Persistent names for local devices. 
# Use a command such as this to find parameters of device. 
# udevadm info -a -p $(udevadm info -q path -n /dev/snd/by-id/usb-0d8c_C-Media_USB_Audio_Device-00) 
# "udevadm trigger" will activate new rules. 
# 
# The USB audio adapter connected to the speakers. 
SUBSYSTEM=="sound", ATTRS{idProduct}=="0008", SYMLINK+="USBspeakers" 
# The USB audio adapter connected to the headset. 
SUBSYSTEM=="sound", ATTRS{idProduct}=="000c", SYMLINK+="USBheadset"

# dalton:/etc/inetd.conf has these lines. 
daytime     dgram     udp     wait     root     internal 
telnet     stream     tcp     nowait     root     /usr/sbin/tcpd     /usr/sbin/in.telnetd

Task Server based upon incron

When a file is written to a directory, incrond can execute a task according to the file name. For example, Web page development is a repetition of a cycle of edit and test. Editing of a *.html file is performed on a workstation. To test, the file is FTPed to the task server. incrond running on the task server detects the arrival of the file and executes iceweasel on it. The user can then review the display and decide what further changes are needed. Four simple steps suffice to create a working task server.

(1) Make a task invocation script using an editor or using echo or otherwise.

peter@dalton:~$ cat /home/peter/IncronTask 
#!/bin/sh 
# A script to perform tasks for incrond as files arrive at ~. 
case $1 in 
 *.ijs ) /home/peter/j701/bin/jconsole $1 > book1.out 2>&1 ;; 
 *html ) iceweasel --display=:0 "file:///home/peter/"$1 ;; 
 *.jpg ) iceweasel --display=:0 "file:///home/peter/"$1 ;; 
 *.pdf ) evince    --display=:0 "file:///home/peter/"$1 ;; 
 *.png ) iceweasel --display=:0 "file:///home/peter/"$1 ;; 
 *.svg ) iceweasel --display=:0 "file:///home/peter/"$1 ;; 
 *docx ) abiword   --display=:0 "file:///home/peter/"$1 ;; 
 Mail.Text ) iceweasel --display=:0 "file:///home/peter/Mail.Text" ;; 
 *.txt ) iceweasel --display=:0  "file:///home/peter/"$1 ;; 
 *     ) return 0 ;; 
esac 
exit 0
(2) "chmod u+x /home/peter/IncronTask" to make the script executable.

(3) Install the incron package.

(4) As a user, create an incrontab.

peter@dalton:/home/peter# incrontab -e 
/home/peter/ IN_CLOSE_WRITE /home/peter/IncronTask $#
When a file is written in /home/peter, IncronTask is executed with the file name as argument. If the file name ends html, a tab in iceweasel is opened and the html or xhtml file is interpreted. If iceweasel is not running, it is started. When a file with name ending .ijs is written in /home/peter/, the J interpreter is invoked on it with stdout and stderr going into jresults.out. The IN_CLOSE_WRITE event will occur whether the file is written by an editor or sent by FTP. Note that IN_MODIFY is not the appropriate mask in this circumstance. The distinction is explained in a FAQ in "http://inotify.aiken.cz/?section=incron&page=doc&lang=en". Also note that incrond takes the <path> and <command> in incrontab without shell interpretation; ~ is not expanded to the user's home directory and redirection of stdout and stderr is not available.

Configuration files in Joule.

# joule:/etc/dnsmasq.conf 
domain-needed 
bogus-priv 
except-interface=Mainboard 
server=10.4.0.2 
no-dhcp-interface=LocPCI1 
no-dhcp-interface=LocACS29H901847 
# System subnetted via DHCP. 
dhcp-range=172.23.7.2

# joule:/etc/hosts 
127.0.0.1     localhost.localdomain localhost
#142.103.107.137 dalton.invalid dalton 142.103.107.138 carnot.invalid carnot #142.103.107.139 spare address for testing & etc.
# Endpoints of joule-dalton tunnel. #10.4.0.1 joule.invalid joule 10.4.0.2 dalton.invalid dalton # Endpoints of armada-dalton tunnel. 10.4.1.1          armada.invalid     armada # 10.4.1.2     dalton
# Private subnets at home #172.23.3.1 joule.invalid joule #172.23.3.2 kits.invalid kits
#172.23.4.1 joule.invalid joule 172.23.4.2 curie.invalid curie
172.23.5.1 joule.invalid joule 172.23.5.2 heaviside.invalid heaviside
#172.23.6.1 joule.invalid joule #172.23.6.2      Machine connected by PPP
      #172.23.7.1 joule.invalid joule #172.23.7.2      Machine connected by DHCP
      # Private subnets at UBC #172.24.1.1 dalton.invalid dalton 172.24.1.2 cantor.invalid cantor
#172.24.2.1 dalton.invalid dalton #172.24.2.2 newton.invalid newton
#172.24.3.1 dalton.invalid dalton #172.24.3.2 machine connected through PPP.

# joule:/etc/inittab 
# Start mgetty for the null modem. 
T0:23:respawn:/sbin/mgetty ttyS0

#joule:/etc/network/interfaces 
# This file describes the network interfaces available on your system 
# and how to activate them. For more information, see interfaces(5).
auto lo MainBoard LocPCI1 LocACS29H901343 LocACS29H901847 LocLCS218301788 # The loopback network interface iface lo inet loopback
# The primary network interface allow-hotplug MainBoard iface MainBoard inet dhcp      post-up /sbin/ip link set $IFACE mtu 1500
# Private subnets at home. # The interface to curie allow-hotplug LocPCI1 iface LocPCI1 inet static      address 172.23.4.1      netmask 255.255.255.0
# The interface to heaviside allow-hotplug LocACS29H901847 iface LocACS29H901847 inet static      address 172.23.5.1      netmask 255.255.255.0
# An interface for PPP. # allow-hotplug LocACS29H901343 #iface LocACS29H901343 inet static #     address 172.23.6.1 #     netmask 255.255.255.0
# An interface for DHCP. allow-hotplug LocACS29H901343 iface LocACS29H901343 inet static      address 172.23.7.1      netmask 255.255.255.0

# joule:/etc/mgetty/mgetty.config 
debug 4 
data-only y 
issue-file /etc/issue.mgetty 
# The null-modem cable. 
port ttyS0 
  direct y 
  speed 38400 
  toggle-dtr n

# joule:/etc/mgetty/login.config 
/AutoPPP/ -     a_ppp   /usr/sbin/pppd
*       -       -       /bin/login @

# joule:/etc/ppp/options, exceptions from stock file. 
auth 
crtscts 
lock 
hide-password 
+pap 
kdebug 1 
proxyarp

# joule:/etc/ppp/options.ttyS0 
# crossover serial cable. 
local 
netmask 255.255.255.0 
172.23.6.1:172.23.6.2

# joule:/etc/openvpn/jd.conf 
# 
# Default protocol is udp. 
# Default port is 1194. 
dev tun 
# Peer Dalton has a static address. 
remote 142.103.107.137 
# Local and remote endpoints of the tunnel. 
ifconfig 10.4.0.1 10.4.0.2 
verb 5 
secret /root/jdKey 0 
ping-restart 130 
# Subnet at UBC reached _via_ the tunnel. 
route 172.24.0.0 255.255.0.0

Shorewall configuration files are published under the terms of the GNU Lesser General Public License as published by the Free Software Foundation.

# joule:/etc/default/shorewall 
startup=1

# joule:/etc/shorewall/interfaces 
#ZONE INTERFACE BROADCAST OPTIONS 
net   MainBoard detect    dhcp,tcpflags,routefilter,nosmurfs,logmartians 
loc   Loc+      detect    tcpflags,nosmurfs,routeback 
loc   ppp+      detect    tcpflags,nosmurfs,routeback 
# This is for the tunnel. 
vpn   tun0      -         routeback 
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

# joule:/etc/shorewall/masq 
#INTERFACE SOURCE ADDRESS PROTO PORT(S) IPSEC MARK 
# All local subnets are masqueraded. 
MainBoard  172.23.0.0/16 
# Packets from UBC subnets are masqueraded to allow POP3, SMTP  
# and FTP to the Shaw servers. 
MainBoard  172.24.0.0/16 
# And this masqs Dalton at the other end of the tunnel. 
MainBoard  10.4.0.2/32 
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE

# joule:/etc/shorewall/policy 
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST 
net     all  DROP    info 
$FW     all  ACCEPT      
loc     all  ACCEPT 
vpn     all  ACCEPT 
# THE FOLLOWING POLICY MUST BE LAST 
all     all  REJECT  info 
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE

# joule:/etc/shorewall/rules 
# PROTO refers to the transport and session layer of the 
# OSI model rather than   
# to the application layer.  So most of these PROTOs are tcp.   
# PROTO is not explicit where a macro is used. 
# Stock macros are defined in /usr/share/shorewall/*. 
#ACTION    SOURCE DEST PROTO   DEST    SOURCE  ORIGINAL RATE  USER/ MARK 
#                              PORT    PORT(S)   DEST   LIMIT GROUP 
# Accept SSH connections from the local network and from the net for administration 
SSH/ACCEPT net    $FW 
# Drop Ping from the "bad" net zone and prevent your log from being flooded. 
Ping/DROP  net    $FW 
ACCEPT     $FW    loc   icmp 
ACCEPT     $FW    net   icmp 
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

 # /etc/shorewall/shorewall.conf 
IP_FORWARDING=On

# joule:/etc/shorewall/tunnels 
#TYPE    ZONE  GATEWAY          GATEWAY 
#                                     ZONE 
# Specify the static address of dalton. 
openvpn  net   142.103.107.137 
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

# joule:/etc/shorewall/zones 
#ZONE  TYPE     OPTIONS  IN       OUT 
#                        OPTIONS  OPTIONS 
fw     firewall 
net     ipv4 
loc     ipv4 
vpn     ipv4 
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE

# joule:/etc/vsftpd.conf, exceptions from stock file. 
listen=YES 
anonymous_enable=NO 
local_enable=YES 
write_enable=YES 
use_localtime=YES 
connect_from_port_20=YES 
secure_chroot_dir=/var/run/vsftpd/empty 
pam_service_name=vsftpd 
rsa_cert_file=/etc/ssl/private/vsftpd.pem 
force_dot_files=YES

# joule:/etc/udev/rules.d/70-persistent-net.rules 
# Meaningful names for network adapters.  The "Loc" prefix simplifies configuration  
# of Shorewall.  Linksys adapters have legible serial numbers.  The PCI adapters  
# are numbered 1 and 2 according to position. 
# No ambiguity.  Read here. 
# http://en.wikipedia.org/wiki/udev and  
# http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf 
#   
# PCI device 0x8086:0x2449 (e100) 
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:03:47:c2:94:65", NAME="MainBoard" 
# PCI device 0x10ec:0x8029 (ne2k-pci) 
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:50:ba:52:79:1c", NAME="LocPCI1" 
# USB device 0x13b1:0x0018 (asix) 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1d:7e:00:ee:9f", ATTR{type}=="1", KERNEL=="eth*", NAME="LocLCS218301788" 
# USB device 0x:0x (asix) 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1d:7e:01:3d:c2", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="LocACS29H901343" 
# USB device 0x:0x (asix) 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1d:7e:01:3f:ba", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="LocACS29H901847"

# joule:/etc/inetd.conf has these lines. 
daytime dgram udp wait root internal 
telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd


Valid HTML 4.01!
Best viewed with a Web browser.

HTML.Compile * ~ Desktops.OpenDoc "file:NetworksPage.html#LocalDevices" ~ ET.OpenAscii NetworksPage.html FTP.Open peter@carnot.invalid FTP.PutFiles NetworksPage.html => "~/public_html/NetworksPage.html" ~ FTP.Close

SSH.Connect peter@142.103.107.138 SSH.Send NetworksPage.html => "~/public_html/NetworksPage.html" ~ SSH.Disconnect