Linux/Internet-yhteyden jakaminen Ubuntulla

Sisältö:

  • Asiakaskoneet omassa aliverkossa
  • Asiakaskoneet samassa verkossa (siltaaminen)
  • Asiakaskoneet samassa verkossa (siltaaminen wlanilla) kera wlan (wpa2-psk)
  • Mokkula-yhteyden jakaminen wifillä

Asiakaskoneet omassa aliverkossa

muokkaa
   Internet
    |
    |
   ADSL (192.168.1.1)
    |
    |
   Ubuntu-palvelin (eth0 192.168.1.33, eth1 192.168.0.1) (dhcp:llä 192.168.0.10 - 192.168.0.210 )
    |
   Kytkin
    |
   Asiakas 1 - 200

Asetetaan verkkokortit

Koodia:

sudo nano /etc/network/interfaces

Lainaus

   # The loopback network interface
   auto lo
   iface lo inet loopback
   
   # Yhteys DSL paatteeseen
   auto eth0
   iface eth0 inet static
           address 192.168.1.33
           network 192.168.1.0
           netmask 255.255.255.0
           broadcast 192.168.1.255
           gateway 192.168.1.1
   
   # Laite jolla jaetaan yhteys asiakaskoneille
   auto eth1
   iface eth1 inet manual
           address 192.168.0.1
           network 192.168.0.0
           netmask 255.255.255.0
           broadcast 192.168.0.255
           gateway 192.168.1.1


Tarkistetaan DNS-palvelin

Koodia:

   sudo nano /etc/resolv.conf

Lainaus

   nameserver 192.168.1.1


Käynistetään verkkopalvelut uudelleen ja testataan Internet-yhteys

Koodia:

   sudo /etc/init.d/networking restart
   ping google.fi
   PING google.fi (209.85.173.94) 56(84) bytes of data.
   64 bytes from lpp01m01-in-f94.1e100.net (209.85.173.94): icmp_req=1 ttl=53 time=48.0 ms
   64 bytes from lpp01m01-in-f94.1e100.net (209.85.173.94): icmp_req=2 ttl=53 time=54.6 ms
   64 bytes from lpp01m01-in-f94.1e100.net (209.85.173.94): icmp_req=3 ttl=53 time=47.7 ms
   ^X64 bytes from lpp01m01-in-f94.1e100.net (209.85.173.94): icmp_req=4 ttl=53 time=47.3 ms
   ^C
   --- google.fi ping statistics ---
   4 packets transmitted, 4 received, 0% packet loss, time 3002ms
   rtt min/avg/max/mdev = 47.386/49.441/54.639/3.017 ms


Asennetaan dhcp-palvelin.

Koodia:

   sudo apt-get install dhcp3-server


Varmuuskopioidaan conffi.

Koodia:

   sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak


Poistetaan alkuperäinen conffi.

Koodia:

   sudo rm /etc/dhcp/dhcpd.conf


Kirjoitetaan uusi.

Koodia:

   sudo nano /etc/dhcp/dhcpd.conf

Lainaus

   # /etc/dhcp/dhcpd.conf
   default-lease-time 600;
   max-lease-time 7200;
   option subnet-mask 255.255.255.0;
   option broadcast-address 192.168.1.255;
   option routers 192.168.0.1;
   option domain-name-servers 192.168.0.1;
   ddns-update-style none;
   log-facility local7;
   # dhcp
   subnet 192.168.0.0 netmask 255.255.255.0 {
   authoritative;
   range 192.168.0.10 192.168.0.210;
   }


Määritellään kuuneltavat laitteet

Koodia:

   sudo nano /etc/default/isc-dhcp-server

Lainaus

   INTERFACES="eth1"


Käynistetään / uudelleenkäynnistetään dhcp-palvelu

Koodia:

   sudo /etc/init.d/isc-dhcp-server restart


Jos Internet-yhteys ei toimi suoraan näillä, niin heitä perään pari iptables-tulikomentoa

Koodia:

   sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT
   sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


Voit myös suorittaa pelkästään iptables komennot ja määrittää ip:n asiakaskoneille käsin. Vanhemmille versiolle vastaava ohje löytyy tältä langalta

Asiakaskoneet samassa verkossa (siltaaminen)

muokkaa
   Internet
    |
    |
   ADSL (192.168.1.1) dhcp:llä 192.168.1.50 - 192.168.1.250)
    |
    |
   Ubuntu-palvelin (eth0 192.168.1.33, eth1 0.0.0.0)
    |
   Kytkin
    |
   Asiakas 1 - 200

Jos haluat asiakaskoneet samaan verkkoon kuin esim DSL pääte (jossa yleensä myös wlani) on siltaaminen järkevempi (ja helpompi) ratkaisu. (Tosin ketjuun verkottaminen ei ehkä ole hirveän järkevää mutta, nojaa...)

Päivitetään tietokanta ja asennetaan tarvittavat palikat

Koodia:

   sudo apt-get update
   sudo apt-get install bridge-utils


Muokataan interfaces uuteen uskoon

Koodia:

   sudo nano /etc/network/interfaces

Lainaus

   # The loopback network interface
   auto lo
   iface lo inet loopback
   
   # Yhteys DSL paatteeseen
   auto eth0
   iface eth0 inet manual
   
   # Laite jolla jaetaan yhteys asiakaskoneille
   auto eth1
   iface eth1 inet manual
   
   
   #Siltaus
   auto br0
   iface br0 inet static
           address 192.168.1.33
           network 192.168.1.0
           netmask 255.255.255.0
           broadcast 192.168.1.255
           gateway 192.168.1.1
           bridge_ports eth0 eth1
           bridge_fd 0
           bridge_hello 2
           bridge_maxage 12
           bridge_stp off


Uudelleenkäynistetään verkkopalvelu.

Koodia:

   sudo /etc/init.d/networking restart

Asiakaskoneet samassa verkossa (siltaaminen wlanilla) kera wlan (wpa2-psk)

muokkaa
   Internet
    |
    |
   ADSL (192.168.1.1) dhcp:llä 192.168.1.50 - 192.168.1.250)
    |
    |
   Ubuntu-palvelin (eth0 192.168.1.33, wlan0 192.168.1.x)
    |
   Kytkin
    |
   Asiakas 1 - 200


Asennetaan hostapd

Koodia:

   sudo apt-get install hostapd


luodaan conffi kansio ja tiedosto

Koodia:

   sudo mkdir /etc/hostapd
   sudo nano /etc/hostapd/hostapd.conf


Itse käytän wpa2-salausta joten conffi sen mukaan (suosittelen muillekkin)

Koodia:

   interface=wlan0
   bridge=br0
   driver=nl80211
   hw_mode=g
   channel=11
   ieee8021x=0
   eap_server=0
   logger_syslog=-1
   logger_syslog_level=2
   logger_stdout=-1
   logger_stdout_level=1
   dump_file=/tmp/hostapd.dump
   ctrl_interface=/var/run/hostapd
   ctrl_interface_group=0
   ssid=langattomanverkonimi
   macaddr_acl=0
   auth_algs=1
   wpa=2
   #wpa_psk=d897a2df7e3b82b8916fd974f11543ff367b824a1d48324db13546f6348dc72c
   wpa_passphrase=verkonsalasana #vähintään 7 merkkiä
   wpa_key_mgmt=WPA-PSK
   wpa_pairwise=TKIP CCMP


Asennetaan dnsmasq dhcp-palvelimen tilalle

Koodia:

   sudo apt-get install dnsmasq chkconfig


Tehdään conffi

Koodia:

   sudo nano /etc/dnsmasq.conf

Koodia:

   interface=wlan0
   dhcp-range=net:wlan0,192.168.1.100,192.168.1.150,255.255.255.0,1440m
   dhcp-option=wlan0,3,192.168.1.1
   dhcp-option=wlan0,6,208.67.222.222,208.67.220.220


Luodaan käynistysscripti

Koodia:

   sudo nano /usr/bin/ap_ctl

Koodia:

   #!/bin/bash
   # broadcasting interface
   BROADCAST="wlan0"
   # receiving interface broadcast is connected to
   RECEIVE="eth0"
   if | $1 == "--start" 
    then
    ## start hostapd
    echo "Starting hostapd"
    echo "    You can view the log at /var/log/hostapd.log"
    # launch hostapd daemon
    hostapd -d /etc/hostapd/hostapd.conf > /var/log/hostapd.log &
    ## start dhcp server
    echo "Starting dnsmasq"
    # set IP address
    ifconfig $BROADCAST 192.168.0.1
    sleep 2
    # launch dhcpd3 daemon
    # echo "INTERFACES=$BROADCAST" > /etc/default/dhcp
    # dhcpd3 $BROADCAST &
    dnsmasq
   elif | $1 == "--stop" 
    then
    # send signal 2 to hostapd and dhcpd3
    killall -2 hostapd  dnsmasq
   elif | $1 == "--ics" 
    then
    # create iptables rules
    iptables -A FORWARD -i $RECEIVE -o $BROADCAST -s 192.168.0.1/24 -m conntrack --ctstate NEW -j ACCEPT
    iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    iptables -A POSTROUTING -t nat -j MASQUERADE
    # set kernel variable(s)
    echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
    # edit kernel configuration
    cp /etc/sysctl.conf /etc/sysctl.conf.ap_ctl
    echo "net.ipv4.conf.default.forwarding=1" >> /etc/sysctl.conf
    echo "net.ipv4.conf.all.forwarding=1" >> /etc/sysctl.conf
    # restart networking
    /etc/init.d/networking restart
   elif | $1 == "--noics" 
    then
    # remove iptables rules
    iptables -D FORWARD 1
    iptables -D FORWARD 1
    # set kernel variable(s)
    echo 0 > /proc/sys/net/ipv4/conf/all/forwarding
    # revert kernel configuration
    mv -i /etc/sysctl.conf.ap_ctl /etc/sysctl.conf
    # restart networking
    /etc/init.d/networking restart
   else
    echo $0
    echo "A tool to manage hostapd and dhcpd3"
    echo "Usage:"
    echo "    -0 --start    Start hostapd and dhcpd3"
    echo "    -1 --stop    Stop hostapd and dhcpd3 with signal 2"
    echo "    -2 --ics    Activate internet connection sharing"
    echo "            between specified interfaces"
    echo "    -3 --noics    Undo internet connection sharing settings"
   fi
   
   exit 0


Asetetaan scripti suoritettavaksi

Koodia:

   sudo chmod +x /usr/bin/ap_ctl


Juoksuta scripti

Koodia:

   sudo ap_ctl --start
   sudo ap_ctl --ics


Jos otit edeliset suoraan copypastella pitäisi asiakaskoneille näkyä nyt uusi langaton verkko

Jos wpa2-salaus ei jostain syystä toimi niin tässä avoimelle verkolle hostapd-conffi:

Koodia:

   interface=wlan0
   bridge=br0
   driver=nl80211
   logger_syslog=-1
   logger_syslog_level=2
   logger_stdout=-1
   logger_stdout_level=2
   dump_file=/tmp/hostapd.dump
   ctrl_interface=/var/run/hostapd
   ctrl_interface_group=0
   ssid=mun-verkko
   hw_mode=g
   channel=11
   beacon_int=100
   dtim_period=2
   max_num_sta=255
   rts_threshold=2347
   fragm_threshold=2346
   macaddr_acl=0
   auth_algs=1
   ignore_broadcast_ssid=0
   wmm_enabled=1
   wmm_ac_bk_cwmin=4
   wmm_ac_bk_cwmax=10
   wmm_ac_bk_aifs=7
   wmm_ac_bk_txop_limit=0
   wmm_ac_bk_acm=0
   wmm_ac_be_aifs=3
   wmm_ac_be_cwmin=4
   wmm_ac_be_cwmax=10
   wmm_ac_be_txop_limit=0
   wmm_ac_be_acm=0
   wmm_ac_vi_aifs=2
   wmm_ac_vi_cwmin=3
   wmm_ac_vi_cwmax=4
   wmm_ac_vi_txop_limit=94
   wmm_ac_vi_acm=0
   wmm_ac_vo_aifs=2
   wmm_ac_vo_cwmin=2
   wmm_ac_vo_cwmax=3
   wmm_ac_vo_txop_limit=47
   wmm_ac_vo_acm=0
   eapol_key_index_workaround=0
   eap_server=0
   own_ip_addr=127.0.0.1

Mokkula-yhteyden jakaminen wifillä

muokkaa

(Periaatteessa edellinen ohje pitäisi toimia myös mokkulan kanssa mutta helpoin tapa on käyttää ap-hotspottia)

   Internet
    |
    |
   USB-Mokkula--Ubuntu wifi-hotspot
                           |
                           |
                         Asiakas 1 - 200

Asennetaan dnsmasq.

Koodia:

   sudo apt-get install dnsmasq chkconfig


Pakotetaan Network Manager unohtamaan DNS-asetus

Koodia:

   sudo nano /etc/NetworkManager/NetworkManager.conf


Kommentoidaan rivi

Lainaus:

   #dns=dnsmasq


Varmistetaan, että dnsmasq kuuntelee paikallista laitetta.

Koodia:

   sudo nano /etc/dnsmasq.conf

Lisää tarvittaessa rivi:

Lainaus:

   listen-address=127.0.0.1


Uudelleenkäynistetään palvelut

Koodia:

   sudo restart network-manager
   sudo /etc/init.d/dnsmasq restart


Jos ei virheitä: Asennetaan ap-hotspot

Koodia:

   sudo add-apt-repository ppa:nilarimogard/webupd8
   sudo apt-get update
   sudo apt-get install ap-hotspot


Annetaan ap-hotspotille asetukset: (VARMISTA, ETTÄ VERKKOLAITTEET OVAT PÄÄLLÄ)

Koodia:

   sudo ap-hotspot configure

Aseta laitteet, anna verkon nimi ja salasana.

Käynnistetään palvelu

Koodia:

   sudo ap-hotspot start

Jaettu wifi-yhteys pitäisi nyt löytyä.


Liikenteen seuraaminen voidaan suorittaa esim. saidarilla (sudo apt-get install saidar)

Koodia:

   samsunix@samuliweb:~$ saidar
   Hostname  : samuliweb      
   Uptime : 4d 12:16:16       Date : 2012-04-23 20:42:46
   
   Load 1    :   0.11   CPU Idle  :  86.68%  Running   :     1   Zombie    :     0
   Load 5    :   0.22   CPU System:   3.02%  Sleeping  :   113   Total     :   115
   Load 15   :   0.17   CPU User  :  11.31%  Stopped   :     1   No. Users :     2
   
   Mem Total :   4971M  Swap Total:  30568M  Mem Used  : 46.95%  Paging in :     0
   Mem Used  :   2334M  Swap Used :      0B  Swap Used :  0.00%  Paging out:    48
   Mem Free  :   2637M  Swap Free :  30568M  Total Used:  6.57%
   
   Disk Name      Read         Write         Network Interface        rx        tx
   sda              0B        49152B         lo                       0B        0B
                                             eth1                   650B      481B
   Total            0B        49152B         eth0                  2916B    26398B
                                             wlan0                  401B      796B
                                             br0                   2675B    25941B
                                             mon.wlan0             1266B        0B
   
                                             Mount Point            Free      Used

Ruusut, risut ja keskustelua oppaasta Ubuntu Suomen foorumeilla.