[Fwd: Re: [TriLUG] OpenVPN: TAP vs TUN]
Paul G. Szabady
Paul at ThyService.com
Mon Nov 21 16:43:59 EST 2005
Josh,
That was it!
Thanks for your help. I REALLY appreciate it!
--
Paul
@ Thy Service
> I think I see a problem. In your server config you have the line:
>
> dev tap
>
> but your tap interface is tap0, so perhaps
>
> dev tap0
>
> would fix the problem. "dev tap0" is what I have in my server.conf
>
> Josh
>
> On 11/21/05, Paul G. Szabady <Paul at thyservice.com> wrote:
>> Mark,
>>
>> The LAN IPs are in different subnets. However, the tunnel ends should
>> be
>> in the same subnet, due to the bridging. Right?
>>
>> client side
>> LAN network: 192.168.2.0/255.255.255.0
>> LAN IP: 192.168.2.100
>> TAP/VPN IP: 192.168.0.200
>> Gateway: 192.168.2.1
>>
>> server side
>> bridged IP (br0): 192.168.0.2
>> LAN network: 192.168.2.0/255.255.255.0
>> Gateway: 192.168.0.1
>>
>>
>> --
>> Paul
>> @ Thy Service
>>
>> > Paul -
>> >
>> > not sure if this will help or not, but are the IP's on the tunnel ends
>> in
>> > the same subnet?
>> >
>> > here's the script I use for my tunnel --
>> >
>> > echo "Starting up IP tunnel fr0..."
>> > modprobe ip_gre
>> > echo 1 >/proc/sys/net/ipv4/ip_forward
>> > ip tunnel add fr0 mode gre remote 172.25.211.84 local 172.22.179.252
>> ttl
>> > 255
>> > ip addr add 192.168.99.10 dev fr0
>> > ip link set fr0 up
>> > ip route add 192.168.7.0/24 dev fr0
>> > route add -net 192.169.1.0/24 dev fr0
>> > route add -net 192.168.21.0/24 gw 192.168.99.10 dev fr0
>> >
>> >
>> > Not sure if it helps or not..
>> >
>> > This end: The other end:
>> > eth0 - 172.22.179.200 172.25.211.84
>> > eth1 - 10.10.10.253 192.168.21.250
>> > (fr0) - 192.168.99.10 (ral0) 192.168.7.1
>> > gw = 192.168.21.254
>> >
>> > Need a route entry from "This end" to the gateway on the other...
>> >
>> >
>> > - Mark
>> >
>> >> Greetings Josh, et al:
>> >>
>> >> Well, I feel like I'm getting closer, but still no cigar. :(
>> >>
>> >> I can at least start openvpn and bridging without losing connection
>> to
>> >> the
>> >> server (always a plus when it's remote), and I can connect to it with
>> a
>> >> client, but I can't seem to talk either way through the tunnel. Here
>> >> are
>> >> my config files. Does anything jump out at anyone as being wrong?
>> >> Maybe
>> >> I'm doing things in the wrong order?
>> >>
>> >> I apologize in advance for the length of this email, but I wanted to
>> >> include as much detail as possible.
>> >>
>> >> ============
>> >> server.conf:
>> >> ============
>> >> port 1194
>> >> proto udp
>> >> dev tap
>> >> ca ca.crt
>> >> cert server.crt
>> >> key server.key
>> >> dh dh1024.pem
>> >> ifconfig-pool-persist ipp.txt
>> >> server-bridge 192.168.0.2 255.255.255.0 192.168.0.200 192.168.0.249
>> >> keepalive 10 120
>> >> cipher BF-CBC
>> >> comp-lzo
>> >> user nobody
>> >> group nobody
>> >> persist-key
>> >> persist-tun
>> >> status openvpn-status.log
>> >> verb 4
>> >> mute 20
>> >>
>> >> =============================
>> >> (windows XP) client_001.opvn:
>> >> =============================
>> >> remote <FQDN for openvpn server - changed for privacy> 1194
>> >> dev tap
>> >> tls-client
>> >> client
>> >> proto udp
>> >> nobind
>> >> comp-lzo
>> >> verb 3
>> >> mute 20
>> >> ca ca.crt
>> >> cert client_001.crt
>> >> key client_001.key
>> >> ns-cert-type server
>> >> cipher BF-CBC
>> >>
>> >> Almost stock server start-up script (/etc/rc.d/init.d/openvpn) which
>> >> also calls bridge-start:
>> >>
>> >> #!/bin/sh
>> >> #
>> >> # openvpn This shell script takes care of starting and stopping
>> >> # openvpn on RedHat or other chkconfig-based system.
>> >> #
>> >> # chkconfig: 345 24 76
>> >> #
>> >> # description: OpenVPN is a robust and highly flexible tunneling
>> >> application that
>> >> # uses all of the encryption, authentication, and
>> >> certification features
>> >> # of the OpenSSL library to securely tunnel IP networks
>> >> over
>> >> a single
>> >> # UDP port.
>> >> #
>> >>
>> >> # Contributed to the OpenVPN project by
>> >> # Douglas Keller <doug at voidstar.dyndns.org>
>> >> # 2002.05.15
>> >>
>> >> # To install:
>> >> # copy this file to /etc/rc.d/init.d/openvpn
>> >> # shell> chkconfig --add openvpn
>> >> # shell> mkdir /etc/openvpn
>> >> # make .conf or .sh files in /etc/openvpn (see below)
>> >>
>> >> # To uninstall:
>> >> # run: chkconfig --del openvpn
>> >>
>> >> # Author's Notes:
>> >> #
>> >> # I have created an /etc/init.d init script and enhanced openvpn.spec
>> to
>> >> # automatically register the init script. Once the RPM is installed
>> you
>> >> # can start and stop OpenVPN with "service openvpn start" and
>> "service
>> >> # openvpn stop".
>> >> #
>> >> # The init script does the following:
>> >> #
>> >> # - Starts an openvpn process for each .conf file it finds in
>> >> # /etc/openvpn.
>> >> #
>> >> # - If /etc/openvpn/xxx.sh exists for a xxx.conf file then it
>> executes
>> >> # it before starting openvpn (useful for doing openvpn --mktun...).
>> >> #
>> >> # - In addition to start/stop you can do:
>> >> #
>> >> # service openvpn reload - SIGHUP
>> >> # service openvpn reopen - SIGUSR1
>> >> # service openvpn status - SIGUSR2
>> >> #
>> >> # Modifications:
>> >> #
>> >> # 2003.05.02
>> >> # * Changed == to = for sh compliance (Bishop Clark).
>> >> # * If condrestart|reload|reopen|status, check that we were
>> >> # actually started (James Yonan).
>> >> # * Added lock, piddir, and work variables (James Yonan).
>> >> # * If start is attempted twice, without an intervening stop, or
>> >> # if start is attempted when previous start was not properly
>> >> # shut down, then kill any previously started processes, before
>> >> # commencing new start operation (James Yonan).
>> >> # * Do a better job of flagging errors on start, and properly
>> >> # returning success or failure status to caller (James Yonan).
>> >> #
>> >> # 2005.04.04
>> >> # * Added openvpn-startup and openvpn-shutdown script calls
>> >> # (James Yonan).
>> >> #
>> >>
>> >> # Location of openvpn binary
>> >> openvpn=""
>> >> openvpn_locations="/usr/sbin/openvpn /usr/local/sbin/openvpn"
>> >> for location in $openvpn_locations
>> >> do
>> >> if [ -f "$location" ]
>> >> then
>> >> openvpn=$location
>> >> fi
>> >> done
>> >>
>> >> # Lockfile
>> >> lock="/var/lock/subsys/openvpn"
>> >>
>> >> # PID directory
>> >> piddir="/var/run/openvpn"
>> >>
>> >> # Our working directory
>> >> work=/etc/openvpn
>> >>
>> >> # Source function library.
>> >> . /etc/rc.d/init.d/functions
>> >>
>> >> # Source networking configuration.
>> >> . /etc/sysconfig/network
>> >>
>> >> # Check that networking is up.
>> >> if [ ${NETWORKING} = "no" ]
>> >> then
>> >> echo "Networking is down"
>> >> exit 0
>> >> fi
>> >>
>> >> # Check that binary exists
>> >> if ! [ -f $openvpn ]
>> >> then
>> >> echo "openvpn binary not found"
>> >> exit 0
>> >> fi
>> >>
>> >> # See how we were called.
>> >> case "$1" in
>> >> start)
>> >> echo -n $"Starting openvpn: "
>> >>
>> >> /sbin/modprobe tun >/dev/null 2>&1
>> >>
>> >> # From a security perspective, I think it makes
>> >> # sense to remove this, and have users who need
>> >> # it explictly enable in their --up scripts or
>> >> # firewall setups.
>> >>
>> >> echo 1 > /proc/sys/net/ipv4/ip_forward
>> >> /etc/rc.d/init.d/bridge-start
>> >>
>> >> # Run startup script, if defined
>> >> if [ -f $work/openvpn-startup ]; then
>> >> $work/openvpn-startup
>> >> fi
>> >>
>> >> if [ ! -d $piddir ]; then
>> >> mkdir $piddir
>> >> fi
>> >>
>> >> if [ -f $lock ]; then
>> >> # we were not shut down correctly
>> >> for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do
>> >> if [ -s $pidf ]; then
>> >> kill `cat $pidf` >/dev/null 2>&1
>> >> fi
>> >> rm -f $pidf
>> >> done
>> >> rm -f $lock
>> >> sleep 2
>> >> fi
>> >>
>> >> rm -f $piddir/*.pid
>> >> cd $work
>> >>
>> >> # Start every .conf in $work and run .sh if exists
>> >> errors=0
>> >> successes=0
>> >> for c in `/bin/ls *.conf 2>/dev/null`; do
>> >> bn=${c%%.conf}
>> >> if [ -f "$bn.sh" ]; then
>> >> . $bn.sh
>> >> fi
>> >> rm -f $piddir/$bn.pid
>> >> $openvpn --daemon --writepid $piddir/$bn.pid --config $c
>> >> --cd
>> >> $work
>> >> if [ $? = 0 ]; then
>> >> successes=1
>> >> else
>> >> errors=1
>> >> fi
>> >> done
>> >>
>> >> if [ $errors = 1 ]; then
>> >> failure; echo
>> >> else
>> >> success; echo
>> >> fi
>> >>
>> >> if [ $successes = 1 ]; then
>> >> touch $lock
>> >> fi
>> >> ;;
>> >> stop)
>> >> echo -n $"Shutting down openvpn: "
>> >> for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do
>> >> if [ -s $pidf ]; then
>> >> kill `cat $pidf` >/dev/null 2>&1
>> >> fi
>> >> rm -f $pidf
>> >> done
>> >>
>> >> # Run shutdown script, if defined
>> >> if [ -f $work/openvpn-shutdown ]; then
>> >> $work/openvpn-shutdown
>> >> fi
>> >>
>> >> success; echo
>> >> rm -f $lock
>> >> ;;
>> >> restart)
>> >> $0 stop
>> >> sleep 2
>> >> $0 start
>> >> ;;
>> >> reload)
>> >> if [ -f $lock ]; then
>> >> for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do
>> >> if [ -s $pidf ]; then
>> >> kill -HUP `cat $pidf` >/dev/null 2>&1
>> >> fi
>> >> done
>> >> else
>> >> echo "openvpn: service not started"
>> >> exit 1
>> >> fi
>> >> ;;
>> >> reopen)
>> >> if [ -f $lock ]; then
>> >> for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do
>> >> if [ -s $pidf ]; then
>> >> kill -USR1 `cat $pidf` >/dev/null 2>&1
>> >> fi
>> >> done
>> >> else
>> >> echo "openvpn: service not started"
>> >> exit 1
>> >> fi
>> >> ;;
>> >> condrestart)
>> >> if [ -f $lock ]; then
>> >> $0 stop
>> >> # avoid race
>> >> sleep 2
>> >> $0 start
>> >> fi
>> >> ;;
>> >> status)
>> >> if [ -f $lock ]; then
>> >> for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do
>> >> if [ -s $pidf ]; then
>> >> kill -USR2 `cat $pidf` >/dev/null 2>&1
>> >> fi
>> >> done
>> >> echo "Status written to /var/log/messages"
>> >> else
>> >> echo "openvpn: service not started"
>> >> exit 1
>> >> fi
>> >> ;;
>> >> *)
>> >> echo "Usage: openvpn
>> >> {start|stop|restart|condrestart|reload|reopen|status}"
>> >> exit 1
>> >> ;;
>> >> esac
>> >> exit 0
>> >>
>> >> =========================
>> >> ifconfig output (server):
>> >> =========================
>> >> br0 Link encap:Ethernet HWaddr 00:11:11:CC:97:FC
>> >> inet addr:192.168.0.2 Bcast:192.168.0.255
>> Mask:255.255.255.0
>> >> inet6 addr: fe80::211:11ff:fecc:97fc/64 Scope:Link
>> >> UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
>> >> RX packets:1603 errors:0 dropped:0 overruns:0 frame:0
>> >> TX packets:679 errors:0 dropped:0 overruns:0 carrier:0
>> >> collisions:0 txqueuelen:0
>> >> RX bytes:127991 (124.9 KiB) TX bytes:107444 (104.9 KiB)
>> >>
>> >> eth0 Link encap:Ethernet HWaddr 00:11:11:CC:97:FC
>> >> inet6 addr: fe80::211:11ff:fecc:97fc/64 Scope:Link
>> >> UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
>> >> RX packets:1619 errors:0 dropped:0 overruns:0 frame:0
>> >> TX packets:671 errors:0 dropped:0 overruns:0 carrier:0
>> >> collisions:0 txqueuelen:1000
>> >> RX bytes:158296 (154.5 KiB) TX bytes:110458 (107.8 KiB)
>> >> Interrupt:169
>> >>
>> >> lo Link encap:Local Loopback
>> >> inet addr:127.0.0.1 Mask:255.0.0.0
>> >> inet6 addr: ::1/128 Scope:Host
>> >> UP LOOPBACK RUNNING MTU:16436 Metric:1
>> >> RX packets:1002 errors:0 dropped:0 overruns:0 frame:0
>> >> TX packets:1002 errors:0 dropped:0 overruns:0 carrier:0
>> >> collisions:0 txqueuelen:0
>> >> RX bytes:2528944 (2.4 MiB) TX bytes:2528944 (2.4 MiB)
>> >>
>> >> tap0 Link encap:Ethernet HWaddr 00:FF:02:F4:5C:60
>> >> inet6 addr: fe80::2ff:2ff:fef4:5c60/64 Scope:Link
>> >> UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
>> >> RX packets:0 errors:0 dropped:0 overruns:0 frame:0
>> >> TX packets:0 errors:0 dropped:900 overruns:0 carrier:0
>> >> collisions:0 txqueuelen:0
>> >> RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
>> >>
>> >> =====================================================
>> >> route -n (server: (local = 192.168.0.2/255.255.255.0)
>> >> =====================================================
>> >> Kernel IP routing table
>> >> Destination Gateway Genmask Flags Metric Ref
>> Use
>> >> Iface
>> >> 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0
>> 0
>> >> br0
>> >> 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0
>> 0
>> >> br0
>> >>
>> >> ==============================================
>> >> ipconfig (windows client - TAP-Win32 Adapter):
>> >> ==============================================
>> >> Connection-specific DNS Suffix . :
>> >> Description . . . . . . . . . . . : TAP-Win32 Adapter V8
>> >> Physical Address. . . . . . . . . : 00-FF-F1-4B-A4-C6
>> >> Dhcp Enabled. . . . . . . . . . . : Yes
>> >> Autoconfiguration Enabled . . . . : Yes
>> >> IP Address. . . . . . . . . . . . : 192.168.0.200
>> >> Subnet Mask . . . . . . . . . . . : 255.255.255.0
>> >> Default Gateway . . . . . . . . . :
>> >> DHCP Server . . . . . . . . . . . : 192.168.0.0
>> >> Lease Obtained. . . . . . . . . . : Monday, November 21, 2005
>> 11:29:23
>> >> AM
>> >> Lease Expires . . . . . . . . . . : Tuesday, November 21, 2006
>> 11:29:23
>> >> AM
>> >>
>> >> =============================
>> >> route print (windows client):
>> >> =============================
>> >> C:\>route print (local = 192.168.2.100/255.255.255.0)
>> >> ===========================================================================
>> >> Interface List
>> >> 0x1 ........................... MS TCP Loopback interface
>> >> 0x10005 ...00 06 5b ca e2 74 ...... Intel(R) PRO/1000 MT Network
>> >> Connection
>> >> 0x30006 ...00 ff f1 4b a4 c6 ...... TAP-Win32 Adapter V8
>> >> ===========================================================================
>> >> ===========================================================================
>> >> Active Routes:
>> >> Network Destination Netmask Gateway Interface
>> >> Metric
>> >> 0.0.0.0 0.0.0.0 192.168.2.1 192.168.2.100
>> >> 10
>> >> 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1
>> >> 1
>> >> 192.168.2.0 255.255.255.0 192.168.2.100 192.168.2.100
>> >> 10
>> >> 192.168.2.100 255.255.255.255 127.0.0.1 127.0.0.1
>> >> 10
>> >> 192.168.2.255 255.255.255.255 192.168.2.100 192.168.2.100
>> >> 10
>> >> 192.168.0.0 255.255.255.0 192.168.0.200 192.168.0.200
>> >> 20
>> >> 192.168.0.200 255.255.255.255 127.0.0.1 127.0.0.1
>> >> 20
>> >> 192.168.0.255 255.255.255.255 192.168.0.200 192.168.0.200
>> >> 20
>> >> 224.0.0.0 240.0.0.0 192.168.2.100 192.168.2.100
>> >> 10
>> >> 224.0.0.0 240.0.0.0 192.168.0.200 192.168.0.200
>> >> 20
>> >> 255.255.255.255 255.255.255.255 192.168.2.100 192.168.2.100
>> >> 1
>> >> 255.255.255.255 255.255.255.255 192.168.0.200 192.168.0.200
>> >> 1
>> >> Default Gateway: 192.168.2.1
>> >> ===========================================================================
>> >> Persistent Routes:
>> >> None
>> >>
>> >>
>> >>
>> >> --
>> >> Paul
>> >> @ Thy Service
>> >>
>> >>
>> >> ---------------------------- Original Message
>> >> ----------------------------
>> >> Subject: Re: [TriLUG] OpenVPN: TAP vs TUN
>> >> From: "Paul G. Szabady" <Paul at ThyService.com>
>> >> Date: Fri, November 18, 2005 4:38 pm
>> >> To: "Triangle Linux Users Group discussion list"
>> >> <trilug at trilug.org>
>> >> --------------------------------------------------------------------------
>> >>
>> >> Josh,
>> >>
>> >> I owe you a beer! That's the *key* piece I was missing:
>> >>
>> >> setup the default gateway, since it gets lost when eth0 is
>> >> deconfigured (this step I had to add myself, since it is not
>> mentioned
>> >> in
>> >> the ethernet bridging howto):
>> >>> route add default gw $gw
>> >>
>> >> I've set this up on my laptop at home and it works. Now to implement
>> in
>> >> production. However, I think I'll go onsite, just to be safe. ;)
>> >>
>> >> Thanks for your help!
>> >>
>> >> --
>> >> Paul
>> >> @ Thy Service
>> >>
>> >>> You can assign an IP to a bridge interface in linux, this makes it
>> not
>> >> exactly a bridge, but its what I did to get bridge mode working with
>> >> OpenVPN with a single NIC.
>> >>>
>> >>> I wrote up a nice HOWTO and stuck in on the OpenVPN wiki, but their
>> >>> wiki
>> >> has now been down for months. You can get my (hard to read) notes
>> here:
>> >>>
>> >>> http://vickeryj.freeshell.org/notes/
>> >>>
>> >>> In short, I brought up the tap device like so:
>> >>>
>> >>>> openvpn --mktun --dev tap0
>> >>>
>> >>> and bridge it with the ethernet device like this:
>> >>>
>> >>>> brctl addbr br0
>> >>>> brctl addif br0 eth0
>> >>>> brctl addif br0 tap0
>> >>>
>> >>> then stick everything in promiscuous mode:
>> >>>
>> >>>> ifconfig tap0 0.0.0.0 promisc up
>> >>>> ifconfig eth0 0.0.0.0 promisc up
>> >>>
>> >>> then assign the ip that eth0 used to have to the bridge device (this
>> >> might be what is missing if you are loosing network connectivity to
>> the
>> >> box):
>> >>>
>> >>>> ifconfig br0 $eth_ip netmask $eth_netmask broadcast $eth_broadcast
>> >>>
>> >>> setup the default gateway, since it gets lost when eth0 is
>> >>> deconfigured (this step I had to add myself, since it is not
>> mentioned
>> >> in the ethernet bridging howto):
>> >>>> route add default gw $gw
>> >>>
>> >>> if you want to do this remotely, all those lines need to be in a
>> >>> script,
>> >> as you will lose network connectivity to the box until the last
>> ifconfig
>> >> line is run.
>> >>>
>> >>> Josh
>> >>>
>> >>> On 11/18/05, Paul G. Szabady <Paul at thyservice.com> wrote:
>> >>>> Jim,
>> >>>>
>> >>>> Done that, but note, I'm not even at the point of connecting a
>> client
>> >>>> yet.
>> >>>>
>> >>>> --
>> >>>> Paul
>> >>>> @ Thy Service
>> >>>>
>> >>>> > make sure source and destination IP addresses are *not* on the
>> same
>> >> network address.
>> >>>> >
>> >>>> > regards,
>> >>>> >
>> >>>> > jim
>> >>>> >
>> >>>> > Jim Ray, President
>> >>>> > Neuse River Network, Inc.
>> >>>> >
>> >>>> > tel: 919-838-1672 x111
>> >>>> > toll free: 800-617-7652
>> >>>> > cell: 919-606-1772
>> >>>> > http://www.Neuse.Net
>> >>>> >
>> >>>> > Ask about our Clean Technologies. Established in the Carolinas
>> >>>> 1997.
>> >>>> >
>> >>>> >
>> >>>> >
>> >>>> > Paul G. Szabady wrote:
>> >>>> >
>> >>>> >>Greetings,
>> >>>> >>
>> >>>> >>I am trying to set up a TAP style VPN but I'm apparently missing
>> a
>> >> key piece of information and was hoping someone could clarify this
>> >> for me.
>> >>>> >>
>> >>>> >>I have a linux (CentOS 4.2) server w/OpenVPN (openvpn-2.1_beta7-1
>> >> installed from RPM built from src), and a windows 2000 server behind
>> >> a linksys router. I need to be able to access the windows server on
>> >> the local LAN from the internet, with an IP address in the same
>> >> subnet as
>> >>>> the
>> >>>> >>windows server, hence the desire to set up using TAP/bridge mode.
>> >> (Setting up TUN was easy, but didn't work as I needed it to.) The
>> >>>> linux
>> >>>> >>machine has a single NIC, which is why this is so confusing to
>> me.
>> >>>> When
>> >>>> >> I
>> >>>> >>set up OpenVPN w/TAP, I lose all network access to the linux
>> server.
>> >> Having had a "home grown linux switch" (old pc w/6 NICs running in
>> >>>> bridge
>> >>>> >>mode), this makes sense. I believe I have followed all the
>> >>>> >>instructions/notes/suggestions from the openVPN howto as well as
>> the
>> >> Ethernet-Bridge-netfilter howto. But I'm still missing something.
>> >>>> >>
>> >>>> >>The big question: If I am apparently invisible to the network,
>> how
>> >>>> does
>> >>>> >>one make a connection (VPN or other) to the linux server?
>> >>>> >>
>> >>>> >>
>> >>>> >>
>> >>>> > --
>> >>>> > TriLUG mailing list :
>> >>>> http://www.trilug.org/mailman/listinfo/trilug
>> >>>> > TriLUG Organizational FAQ : http://trilug.org/faq/
>> >>>> > TriLUG Member Services FAQ :
>> http://members.trilug.org/services_faq/
>> >>>>
>> >>>> --
>> >>>> TriLUG mailing list :
>> >>>> http://www.trilug.org/mailman/listinfo/trilug
>> >>>> TriLUG Organizational FAQ : http://trilug.org/faq/
>> >>>> TriLUG Member Services FAQ :
>> http://members.trilug.org/services_faq/
>> >>>>
>> >>> --
>> >>> TriLUG mailing list :
>> >> http://www.trilug.org/mailman/listinfo/trilug TriLUG Organizational
>> FAQ
>> >> : http://trilug.org/faq/
>> >>> TriLUG Member Services FAQ : http://members.trilug.org/services_faq/
>> >>>
>> >>
>> >>
>> >>
>> >> --
>> >> TriLUG mailing list :
>> >> http://www.trilug.org/mailman/listinfo/trilug
>> >> TriLUG Organizational FAQ : http://trilug.org/faq/
>> >> TriLUG Member Services FAQ : http://members.trilug.org/services_faq/
>> >>
>> >> --
>> >> This message has been scanned for viruses and
>> >> dangerous content by MailScanner, and is
>> >> believed to be clean.
>> >>
>> >
>> >
>> >
>> > --
>> > This message has been scanned for viruses and
>> > dangerous content by MailScanner, and is
>> > believed to be clean.
>> >
>> > --
>> > TriLUG mailing list :
>> http://www.trilug.org/mailman/listinfo/trilug
>> > TriLUG Organizational FAQ : http://trilug.org/faq/
>> > TriLUG Member Services FAQ : http://members.trilug.org/services_faq/
>> >
>>
>> --
>> TriLUG mailing list :
>> http://www.trilug.org/mailman/listinfo/trilug
>> TriLUG Organizational FAQ : http://trilug.org/faq/
>> TriLUG Member Services FAQ : http://members.trilug.org/services_faq/
>>
> --
> TriLUG mailing list : http://www.trilug.org/mailman/listinfo/trilug
> TriLUG Organizational FAQ : http://trilug.org/faq/
> TriLUG Member Services FAQ : http://members.trilug.org/services_faq/
>
More information about the TriLUG
mailing list