RSS

Ubuntu 13.10 personal post-installation mini guide

Okey. It is the end of 2013. I have gave Unity a try for a day, but goodbye again Unity.

xubuntu is almost perfect, howerver, as usual, customization is always required.

And I confess, I have just copied and pasted almost everything from the old entry. So not much excited.

Please note, I have got myself a new laptop, so the procedure will be even simpler.

1.1) enable Canonical’s ‘partner’ repository:

sudo nano /etc/apt/sources.list

1.2) uncomment the following lines:

deb http://archive.canonical.com/ubuntu saucy partner
deb-src http://archive.canonical.com/ubuntu saucy partner

2) To get the latest WineHQ:

sudo add-apt-repository ppa:ubuntu-wine/ppa

3) Then, update data base:

sudo apt-get update

4) (Optional) To find out what you have installed:

dpkg --get-selections | sed 's:install$::' > InstalledPackages.txt

5) Then, remove what I do not want:

sudo apt-get purge abiword* catfish espeak* gmusicbrowser gnome-mines gnome-sudoku gnomine gnumeric* ibus-pinyin* nano parole pidgin* plymouth-theme* ristretto thunderbird* xchat*

6) Then, upgrade system:

sudo apt-get dist-upgrade

7) Then, install what I want:

sudo apt-get install audacious brasero chromium-browser easytag geeqie guvcview ibus-table-cangjie3 ibus-table-cantonhk ibus-table-quick3 ttf-mscorefonts-installer skype smplayer synaptic unrar vim virtualbox virtualbox-guest-additions-iso vlc winetricks

8) As of every new version of Ubuntu, there are some minor bugs in the system. This time again is the sound card volume control. If you find you have a gray out speaker in your Indicator Plugin, you may try this.

8.1) Edit the following file:

sudo vim /usr/share/dbus-1/services/indicator-sound.service

8.2) Comment out the last line and add a new line as follow:

[D-BUS Service]
Name=com.canonical.indicator.sound
#Exec=/usr/lib/x86_64-linux-gnu/indicator-sound/indicator-sound-service
Exec=/usr/lib/indicator-sound-gtk2/indicator-sound-service

8.3) Logout then Login again, and you should good to go.

Advertisements
 
Leave a comment

Posted by on November 5, 2013 in Linux, Ubuntu, xUbuntu

 

Tags: , , , , , , , , ,

TP-Link TL-WR1043ND – Openwrt – Ch09_Buttons

0) Briefing

  • As my Scan Button on my scanner is not working with OpenWRT/Linux, I am going to use the QSS button on my TP-Link TL-WR1043ND to act as my scan button.
    When I press the QSS button, OpenWRT will instruct my scanner to scan an image, save it to the share folder, so I can access it through Samba.
  • The printer / scanner I am using is HP Deskjet F2280 All-in-one
  • You should have already done:
  • What next
    • Just need to add and edit some config files

——————————————————————————–

1) Button handler script – for TP-Link 1043ND

  • If you are using other router, you may need other script, check it yourself.
  • Add the following folder and edit the sript:
    mkdir /etc/hotplug.d/button && vim /etc/hotplug.d/button/00-button
  • Add the following lines to the script:

    #!/bin/sh
    . /lib/functions.sh
    do_button () {
    local button
    local action
    local handler
    local min
    local max

    config_get button $1 button
    config_get action $1 action
    config_get handler $1 handler
    config_get min $1 min
    config_get max $1 max

    [ “$ACTION” = “$action” -a “$BUTTON” = “$button” -a -n “$handler” ] && {
    [ -z “$min” -o -z “$max” ] && eval $handler
    [ -n “$min” -a -n “$max” ] && {
    [ $min -le $SEEN -a $max -ge $SEEN ] && eval $handler
    }
    }
    }

    config_load system
    config_foreach do_button button

——————————————————————————–

2) Tell the system what to do when button pressed

  • Execute the following commands:
    uci add system button    
    uci set system.@button[-1].button=wps
    uci set system.@button[-1].action=pressed
    uci set system.@button[-1].handler='logger Shit things happen'
    uci commit system
  • Press the button, you should see “Shit things happen” when you read system log by:
    logread
  • If your button is working, set it to work with SANE when pressed:
    uci set system.@button[-1].handler='scanimage --format=tiff --mode Gray --resolution 300 > /mnt/shares/public/$(date +"%Y%m%d-%H%M%S").tiff'
    uci commit system

——————————————————————————–

Appendix : References

 
Leave a comment

Posted by on May 12, 2013 in Networking, Router

 

Tags: , , , , , , , , , , ,

TP-Link TL-WR1043ND – Openwrt – Ch08_Photo_scanner_server

0) Briefing

  • To setup a service that I can remotely control my scanner and scan image directly to my computer.
  • The printer / scanner I am using is HP Deskjet F2280 All-in-one
  • You should have already done:
  • What next
    • Install sane-backends ( 9052 Byte in total )
      • Dependency : libjpeg libtiff libusb librt libv4l sane-libs zlib
    • Install sane-frontends ( 180 Byte in size )
    • Install HP printer/scanner library – hplip ( 6836 Byte in total )
      • Dependency : libpng libstdcpp cups
      • If you are not using HP, install something else.
    • Install xinetd for SANE ( 152 Byte in size )

——————————————————————————–

1) Install SANE softwares

  • Open up your favorite terminal and login into the router
    ssh root@192.168.1.1
  • These commands will update database:
    opkg update
  • Install SANE, HP library and related files (16095 Byte in size), use other library if you are not using HP scanner:
    opkg install sane-backends sane-frontends hplip
  • Check if SANE can detect your scanner or not:
    scanimage -L
  • Should have similar result:

    device `hpaio:/usb/Deskjet_F2200_series?serial=CN88M4Q0Z40534′ is a Hewlett-Packard Deskjet_F2200_series all-in-one

——————————————————————————–

2) Setup SANE as a network enable service

  • This part involve quite some effort to get SANE network enable. Personally, I think SANE in OpenWRT is not very complete. But don’t worry, all you need to do is to create and edit some config files.

2.1) Get around the check_host error in SANE

  • This is the most important step to get around the check host problem of SANE. You must get this done first. Otherwise even you got all the below settings right, you will still unable to get SANE work over the network.
    The problem is SANE wants to know the router own host name but SANE could not find it.
  • Edit the following file:
    vim /etc/host
  • Add the following line:

    192.168.1.1 OpenWRT

    IP_address = your_router_IP
    host_name = any_name_of_your_choice

2.2) Allow who can use your scanner from your network

  • Edit the following file:
    vim /etc/sane.d/saned.conf
  • To allow only a subnet of computers to use your scanner, add the following line:

    192.168.1.0/24

  • To allow all computer, add the following line, just a “+” sign:

    +

  • Start SANE in debug mode, so we can do some test after setting up the client software
    saned -d 128

——————————————————————————–

3) Setup client side softwares

3.1) In Ubuntu:

  • Install the following software:
    sudo apt-get install sane-utils
  • If you also want graphical interface, install this as well:
    sudo apt-get install simple-scan
  • Edit the following file, to tell SANE where the network enabled scanner is:
    sudo vim /etc/sane.d/net.conf
  • Add the following line:

    192.168.1.1

  • We can test the connectivity from client to server now, from your computer:
    scanimage -L
  • On client side you should see this:

    device `net:192.168.3.1:hpaio:/usb/Deskjet_F2200_series?serial=CN88M4Q0Z40534′ is a Hewlett-Packard Deskjet_F2200_series all-in-one

  • On OpenWRT you should see similar result in saned debug output:

    [saned] check_host: access by remote host: 192.168.1.75
    [saned] init: access granted to mary@192.168.1.75
    [saned] bailing out, waiting for children…
    [saned] bail_out: all children exited

3.2) In Microsoft Windows

——————————————————————————–

4) Set SANE as a daemon

  • SANE is setup now, but it will not startup by itself on boot, since SANE cannot set as a daemon in OpenWRT. So it has to be resided with xinetd.

4.1) Install xinetd

  • Install xinetd (extended Internet daemon) (152 Byte in size):
    opkg install xinetd

4.2) Config xinetd for SANE

4.2.1) Listening port

  • Check if SANE listening port is listed in /etc/service:
    cat /etc/service | grep sane
  • You should see the follow line, if not, add it to /etc/service

    sane-port    6566/tcp    sane saned

4.2.2) Add SANE to xinetd

  • Create folder /etc/xinetd.d and edit /etc/xinetd.d/sane by:
    mkdir /etc/xinetd.d && vim /etc/xinetd.d/sane
  • Add the following lines:

    service sane-port
    {
    disable        = no
    socket_type    = stream
    wait           = no
    user           = root
    group          = root
    server         = /usr/sbin/saned
    port           = 6566
    protocol       = tcp
    }

4.3) Start xinetd and set as service:

  • Enable xinetd to startup itself at boot, and start the service now:
    /etc/init.d/xinetd enable
    /etc/init.d/xinetd start

——————————————————————————–

Appendix : References

 
4 Comments

Posted by on May 11, 2013 in Networking, Router

 

Tags: , , , , , , , , , , ,

TP-Link TL-WR1043ND – Openwrt – Ch07_Samba_file_server

0) Briefing

  • Why Samba not NFS? In simple answer: Password protected.
  • You might want to get:
    • USB external storage (Visit Ch05 to see how). Router has limited internal memory, so not much fun to have a share such a small space. But of course, I cannot stop you!
  • What next
    • Install Samba server ( 1992 Byte in size )
    • (Optional) Install luci-app-samba webpage app ( 92 Byte in size )

——————————————————————————–

1) Install Samba server software

  • Open up your favorite terminal and login into the router
    ssh root@192.168.1.1
  • These commands will update database:
    opkg update
  • Install Samba server (1992 Byte in size):
    opkg install samba36-server
  • If you want to set your Samba via web interface, install (92 Byte in size):
    opkg install luci-app-samba

——————————————————————————–

2) Add a user

  • You do not want everyone connected to your network will be able to see your files, so you need some kind of security to Samba. To have Samba secure, you need to have Samba User Account. To have Samba User Account, you need to have Linux system user account.

2.1) Setup new Linux system group for users account

  • To add new group, edit the following file:
    vim /etc/group
  • Add the following line

    john:x:1001

    1. First field : group_name = john
    2. Second field : group_password = x (I don’t think you can setup any)
    3. Third field : group_id = assign a unique number between 1000 & 65534

2.2) Setup new Linux system user account

  • To add new user account, edit the following file:
    vim /etc/passwd
  • Add the following line

    john:x:1001:1001:John Watson:/var:/bin/false

    1. First field : user_name = john
    2. Second field : user_password = x (Password store in somewhere else)
    3. Third field : user_id = assign a unique number between 1000 & 65534 
    4. Forth field : group_id = the group id you have set above
    5. Fifth field : user_info = can be lots of things, Google yourself.
    6. Sixth field : user_home_directory
    7. Seventh field : user_login_startup_program = first program auto startup when login. Usually is a command shell, now we don’t start anything

2.3) Setup user password:

  • To setup user password:
    passwd john

2.4) Setup a Samba user:

  • To setup a Samba user:
    smbpasswd -a john

——————————————————————————–

3) Samba config

  • Please note :

    Do NOT edit /etc/samba/smb.conf , it is a automatically generated file

3.1) Samba global config

  • Edit the following file:
    vi /etc/samba/smb.conf.template
  • Do not change anything between “|”
  • The only settings I changed:

    null passwords = no

3.2) Add a share folder:

  • I have setup two type of share folders, one is public read/write allowed, the other one is user login required.
  • Edit the following file:
    vi /etc/config/samba
  • Here is my /etc/config/samba details:

    config samba
    option workgroup ‘WORKGROUP’
    option name ‘OpenWRT Samba’
    option description ‘OpenWRT share folder’
    option homes ‘0’

    config sambashare
    option name ‘Pubilc’
    option path ‘/mnt/shares/public’
    option read_only ‘no’
    option guest_ok ‘yes’
    option create_mask ‘0666’
    option dir_mask ‘0666’

    config sambashare
    option name ‘Private’
    option path ‘/mnt/shares/private’
    option read_only ‘no’
    option guest_ok ‘no’
    option create_mask ‘0600’
    option dir_mask ‘0600’

3.3) Start Samba and set as service:

  • Enable Samba to startup itself at boot, and start the service now:
    /etc/init.d/samba enable
    /etc/init.d/samba start

——————————————————————————–

Appendix : References

 
2 Comments

Posted by on May 10, 2013 in Networking, Router

 

Tags: , , , , , , , , ,

TP-Link TL-WR1043ND – Openwrt – Ch06_Printing

0) Briefing

  • You should have already done
    • USB external storage (Visit Ch05 to see how). It is because you router is going to act as a printing server. When you press “Print” on you computer, the printing data will be buffered in the router first before send off to the printer, which usually you router will not have enough memory to buffer those huge printing data and result in strange problems.
  • What next
    • Install USB printer kernel module ( 12 Byte in size )
    • Install p910nd Printer Server ( 12 Byte in size )
    • (Optional) Install luci-app-p910nd p910nd webpage app ( 4 Byte in size )

——————————————————————————–

1) Install USB printer kernel module

  • Open up your favorite terminal and login into the router
    ssh root@192.168.1.1
  • These commands will update database:
    opkg update
  • Install kmod-usb-printer (12 Byte in size):
    opkg install kmod-usb-printer
  • Now you can plug in the printer and check if the router detect your printer by:
    dmesg
  • You should see something similar:

    usbcore: registered new interface driver usblp
    usb 1-1: new full-speed USB device number 4 using ehci-platform
    usblp0: USB Bidirectional printer dev ……….

——————————————————————————–

2) Setup p910nd Printer Server

  • Update database and install p910nd (12 Byte in size):
    opkg update && opkg install p910nd

2.1) Edit p910nd config file

  • Edit the following config file
    vi /etc/config/p910nd
  • Here is my /etc/config/p910nd details

    config p910nd
    option device ‘/dev/usb/lp0’
    option port ‘0’
    option bidirectional ‘1’
    option enabled ‘1’

2.2) To start the p910nd daemon:

  • To start the p910nd daemon:
    /etc/init.d/p910nd start
  • To start it up automatically on every boot:
    /etc/init.d/p910nd enable

——————————————————————————–

3) Add printer to client computers

3.1) Linux GUI:

  1. Go to “Settings -> Printers”
  2. Then press “Add”
  3. Then press “Network Printer” -> “Find Network Printer”
  4. In the “Device URI” box put in your router IP address

3.2) Miscosoft Windows 7:

  1. Go to “Control Panel” -> “Devices and Printers”
  2. Press “Add a printer”
  3. Press “Add a local printer”
  4. Select “Create a new port:”, “Type of port: Standard TCP/IP Port”
  5. Hostname or IP address : IP_address_of_your_router
    Port name : any_name_of_your_choice
    Untick “Query the printer and auto……..”
  6. Wait Windows detect the TCP/IP port, but it will fail, don’t worry, just continue.
  7. Select “Custom” -> “Settings…”
  8. Confirm this details:
    Port name : the name you have entered above
    Printer Name or IP Address : the IP address of you router
    Protocol : Raw
    Raw Settings : Port Number : 9100
  9. Install the printer driver:
    Select your printer model, then Next
  10. Give your printer a name you like, then Next
  11. Print a test page if you want to, then you are done.

——————————————————————————–

Appendix : References

 
Leave a comment

Posted by on May 10, 2013 in Networking, Router

 

Tags: , , , , , , , ,

TP-Link TL-WR1043ND – Openwrt – Ch05_USB_Storage

0) Briefing

    • What next
      • My USB thumb drive will be partition in 3 parts. I will be using ext4 for data storage. You may use FAT16/FAT32/NTFS, but you cannot have your drive as rootfs_data ( /overlay )
      • Install USB storage kernel module kmod-usb-storage ( 82 Byte in total )
        • Dependency : kmod-scsi-core
      • Install block-mount( 132 byte in total )
        • Dependency : libuuid libblkid blkid swap-utils
      • Install libext2fs( 168 Byte in total )
        • Dependency : libpathread libcom_err
      • install ext4 file system kernel module kmod-fs-ext4 ( 188 Byte in total )
        • Dependency : kmod-lib-crc16
      • (Optional) Install file system utilities e2fsprogs ( 312 Byte in size )
      • Setup a USB thumb drive to be part of the root memory

——————————————————————————–

1) Install USB storage softwares

  • Open up your favorite terminal and login into the router
    ssh root@192.168.1.1
  • These commands will update database:
    opkg update
  • Install all these softwares (580 Byte in size):
    opkg install kmod-usb-storage block-mount libext2fs kmod-fs-ext4
  • (Optional) If you want to format you USB thumb drive via OpenWRT, you should install:
    opkg install e2fsprogs

——————————————————————————–

2) Prepare your USB thumb drive

  • I am using a 8GB thumb drive, and will be chopped into 3 partitions:
    1. Root file system data ( /overlay )
    2. Personal data storage ( /mnt/shares )
    3. Swap

2.1) Partitioning

  • Plug in your external drive into your computer and see if it is present:
    dmesg  | tail -20
  • You should able to see something like USB storage in those lines, but you should be looking at:

    sd 0:0:0:0: [sda] 15124992 512-byte logical blocks: (7.74 GB/7.21 GiB)

    • Your drive is recognized as /dev/sda
    • if you have more than one drive, then it may be /dev/sdb
  • Use fdisk to partition your drive:
    fdisk /dev/sda
  • My partitions on my 8GB thumb drive:
    1. sda1 – 6.2GB – ext4 – Use for personal data ( /mnt/shares )
    2. sda2 – 504MB – ext4 – Root files system data ( /overlay )
    3. sda3 – The rest 300MB+ – Swap
  • Then you should format your drive:
     mkfs.ext4 -O ^has_journal,extent /dev/sda1
     mkfs.ext4 -O ^has_journal,extent /dev/sda2
     mkswap /dev/sda3

2.2) Mounting

  • Now plug in your USB external storage to the router
  • Create a location for you share folder and mount it
    mkdir /mnt/shares && mount /dev/sda1 /mnt/shares
  • To mount your swap partition:
    swapon /dev/sda3
  • To config your drives mount automatically at boot, first you have to find out the UUID of each partition. UUID is used is because Linux system cannot guaranty it will give the same sda or sdb or sdc to a drive. So when you write down the config file to mount sda1 it may not work because your drive may become sdb1 when next boot. Although it is very rare to be happened, now Linux system use UUID. UUID only change when you format your drive.To find out the UUID of your drive:
    blkid
  • Edit this file to tell the system what to mount:
    vi /etc/config/fstab
  • Here is my /etc/config/fstab

    config global automount
    option from_fstab 1
    option anon_mount 1

    config global autoswap
    option from_fstab 1
    option anon_swap 0

    config mount
    option target           /mnt/shares
    option uuid             “e2bbca31-8df9-447e-affd-70c927e59847”
    #option device          /dev/sda1
    option fstype           ext2
    option options          rw,sync
    option enabled          1
    option enabled_fsck     0

    config swap
    option uuid             “5fb9edfd-23f0-48c4-8a96-f2887b469329”
    #option device          /dev/sda2
    option enabled          1

  • When you are done, restart fstab
    /etc/init.d/fstab restart
  • Check are you drives properly mounted:
    df

——————————————————————————–

3) rootfs on external storage ( extroot )

In Linux file system, Root ( / ) is the mother of all folders and files. Every folder and file structure start building from there, just like C: drive in MS Windows.

Additionally, Linux link a USB external storage to a folder when it is plug in, so all other softwares in Linux will think it is just another normal folder rather than something special. They call this Mounting to a folder.

In OpenWRT, there are two main folders. One is /rom, which hold all pre-installed softwares. The other is /overlay, which hold every other data and settings, which included softwares that you manually installed.

What are we going to do now is to ask the system to mount our external drive to /overlay at boot. Imagine the original /overlay like a bin, you put things in it. Then what are we doing next is to put a plastic bag over the bin, which the bag represent the external drive. People still think they put thing into the bin, but actually the bag store everything, and when the bag is remove, it will expose the original stuffs inside the bin.

3.1) Partitioning and formating

  • If you have not partition and format your USB external storage, just follow the Step 2.1 above

3.2) Config to mount your external storage at boot

  • We need to visit the /etc/config/fstab file again:
    vi /etc/config/fstab
  • Add the following data:

    config mount
    option target            /overlay
    option uuid             “a60731b0-c056-4771-993e-c8f8338cc21f”
    #option device          /dev/sda2
    option fstype            ext4
    option options            rw,sync
    option enabled            1
    option enabled_fsck            0

3.3) Copy original /overlay data to external storage

  • As my Bin and Bag explanation above, if you put your new bag inside the bin, people will think it is a empty bin, however, the original stuffs inside the bin is needed. So we need to duplicate them to our bag.
  • First if your drive is not mount, mount it, in my case is sda2:
    mkdir /mnt/sda2 && mount /dev/sda2 /mnt/sda2
  • Then copy the original data to the external storage:
    tar -C /overlay -cvf - . | tar -C /mnt/sda2 -xf -
  • Unmount the external drive then reboot:
    umount /mnt/sda2 && rm -rf /mnt/sda2

——————————————————————————–

4) Quick tips

  • If you do not want to edit /etc/config/fstab, you can edit /etc/fstab:

    /dev/sda2    /overlay    ext3    rw,sync    0    0
    /dev/sda1    /mnt/shares    ext2    rw,sync    0    0
    /dev/sda3    none    swap    sw    0    0

——————————————————————————–

Appendix : References

 
5 Comments

Posted by on May 8, 2013 in Networking, Router

 

Tags: , , , , , , , , , , , , ,

TP-Link TL-WR1043ND – Openwrt – Ch03_VPN_pptpd

0) Briefing

  • Up until now
    • OpenWrt installed, password set = ssh enable, Wifi enable, DDNS done
    • 4.77MB memory left (4884B)
  • What next
    • Install PPTP server
    • Add custom rules to firewall
  • pptpd in Openwrt do not have any web interface, so be prepared.

——————————————————————————–

1) Install pptpd

  • Open up your favorite terminal and login into the router
    ssh root@192.168.1.1
  • These commands will update database, list the software in the database and search the list:
    opkg update && opkg list | grep -a pptpd
  • Install pptpd and kmod-mppe:
    opkg install pptpd kmod-mppe
  • Enable pptpd to startup itself at boot, and start the service now:
    /etc/init.d/pptpd enable
    /etc/init.d/pptpd start

——————————————————————————–

3) Setup pptpd

  • There are 2 files to edit:
    • /etc/ppp/options.pptpd
    • /etc/ppp/chap-secrets

3.1) Edit options.pptpd

  • options.pptpd governed how pptpd should work
  • Edit the following config file
    vi /etc/ppp/options.pptpd
  • Here are the details:
    #debug
    #logfile /tmp/pptp-server.log
    192.168.1.1:

    Your Server address, at the moment the easiest way to get it work is to set it the same as your router address

    auth
    name “pptp-server”

    If you change the server name, remember to change it at /etc/ppp/chap-secrets as well, vice versa

    lcp-echo-failure 3
    lcp-echo-interval 60
    default-asyncmap
    mtu 1482
    mru 1482
    nobsdcomp
    nodeflate
    #noproxyarp
    #proxyarp
    #nomppc
    #mppe required,no40,no56,stateless

    I have disable mppe encryption connection, faster data rate, but less secure.

    require-mschap-v2
    refuse-chap
    refuse-mschap
    refuse-eap
    refuse-pap
    ms-dns 192.168.3.1
    #plugin radius.so
    #radius-config-file /etc/radius.conf

3.2) Edit chap-secrets

  • chap-secrets manage all pptp client login informations
  • First change the read/write right for the file
    chmod 600 /etc/ppp/chap-secrets
  • Edit the following config file
    vi /etc/ppp/chap-secrets
  • Here are the details:
    #USERNAME PROVIDER PASSWORD IPADDRESS
    mary pptp-server her_password 192.168.1.101
    john pptp-server his_password 192.168.1.102

——————————————————————————–

4) Add custom rules to iptables

  • By default iptables only allow passive connection from outside, to enable active connection from the Internet, you have to add rules to iptables and allow pptp client to connect from outside.
  • By adding rules to this file, it will automatically add to the iptables at every reboot
  • Edit the following file:
    vim /etc/firewall.user
  • Add the following lines to the file:

    # This file is interpreted as shell script.
    # Put your custom iptables rules here, they will
    # be executed with each firewall (re-)start.
    iptables -A input_wan -p tcp –dport 1723 -j ACCEPT
    iptables -A input_wan -p gre -j ACCEPT

    iptables -A input_rule -i ppp+ -j ACCEPT
    iptables -A forwarding_rule -i ppp+ -j ACCEPT
    iptables -A forwarding_rule -o ppp+ -j ACCEPT
    iptables -A output_rule -o ppp+ -j ACCEPT

    • The first 2 iptables rules allow remote client to connect from the Internet.
    • The last 4 iptables rules allow connected client to contact local computer and out to the Internet.

——————————————————————————–

Appendix : References

 
1 Comment

Posted by on April 21, 2013 in Networking, Router

 

Tags: , , , , , , , , ,

 
%d bloggers like this: