6to4 ipv6 på dator med dynamisk ip

Konfiguration av nätverk, hur man använder Ubuntu som server, och håller sin dator säker
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

6to4 ipv6 på dator med dynamisk ip

Inlägg av Pinky »

Hej!

Satt och funderade på att sätta upp en 6to4-address på min server, dvs en ipv6-address som är baserad på ens ipv4-address.
Hittade denna eminenta guide: http://wiki.debian.org/DebianIPv6#IPv66to4Configuration
Men har ett problem: Min server har inte fast IP. Det innebär att jag skulle behöva in och hacka i maskinen varenda gång jag fått en ny ipv4-address. Låt säga att jag lyckas konstruera ett script som kan sköta ändringen, vart sjutton ska jag lägga in det? Vet att det finns trigger-mappar för if-up och if-down, men finns något i stil med if-newadress? :)

Mvh
Martin
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

Re: 6to4 ipv6 på maskin med dhcp-tilldelad address

Inlägg av Emil.s »

För att få en 6to4 att funka så lär du ju ha en endpoint att routa trafiken till. En undrar är var den routern finns, och vilken tillgång du har till den.
Har du root-access så är den nog betydligt enklare att sätta upp ett "riktigt" IPv6 system med radvd.
Home sweet ~/ = http://sandnabba.se
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Re: 6to4 ipv6 på maskin med dhcp-tilldelad address

Inlägg av Pinky »

6to4 endpoints, eller rättare 6to4 routers finns på anycast-addressen 192.88.99.1. Min närmsta ligger visst hos bahnhof och jag har en 40ms ping dit. :)
Sen även om det blir slött så är det mer i lärande syfte att få igång det.

I mina ögon så är detta en mer attraktiv lösning än en tunnelbroker.
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

Re: 6to4 ipv6 på maskin med dhcp-tilldelad address

Inlägg av Emil.s »

Aha, se där ja. Då har jag tyvärr ingen aning. Enda tillägget är väl att dynamisk IP är det värsta man kan råka ut för. :P
Home sweet ~/ = http://sandnabba.se
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Re: 6to4 ipv6 på maskin med dhcp-tilldelad address

Inlägg av Pinky »

Tror jag har hittat nånting här:
http://www.wlug.org.nz/6to4

Återkommer med rapport om det funkar. Sitter fast på trasigt tåg nånstans mellan Sthlm och Gbg just nu, så jag har gott om tid att experimentera. (Älska SSH :D )
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Re: 6to4 ipv6 på maskin med dhcp-tilldelad address

Inlägg av Pinky »

Utanför ämnet: Hmm, blev en massa tågbyten m.m. så det dröjde ett tag tills jag fick tid att prova... Men nuså!

Jag har lagt in scripten för 6to4 med dynamic ip på min server, fast moddat för eth1 istället för ppp och lite så... Mitt problem nu är att jag kan pinga andra 6to4-adresser (2002::-adresser), men när jag ska pinga en "riktig" ipv6-site (2001::-adresser) så verkar det som att det går bra att skicka pingen, men jag får inget svar. Känns som att något är kajko med routingen.

ifconfig ger:

Kod: Markera allt

eth0      Link encap:Ethernet  HWaddr 00:04:75:51:8c:c7  
          inet addr:192.168.1.99  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 2002:53e2:1f45::1/64 Scope:Global
          inet6 addr: 2002:53e2:1f00::1/64 Scope:Global
          inet6 addr: fe80::204:75ff:fe51:8cc7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:73758017 errors:0 dropped:0 overruns:15586 frame:0
          TX packets:135216102 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3230146480 (3.0 GiB)  TX bytes:2806666464 (2.6 GiB)
          Interrupt:10 

eth1      Link encap:Ethernet  HWaddr 00:30:4f:12:e0:68  
          inet addr:83.226.31.69  Bcast:83.226.31.255  Mask:255.255.254.0
          inet6 addr: fe80::230:4fff:fe12:e068/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:44361164 errors:1 dropped:0 overruns:0 frame:0
          TX packets:42279801 errors:0 dropped:0 overruns:1 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2231557466 (2.0 GiB)  TX bytes:3351160521 (3.1 GiB)
          Interrupt:9 Base address:0x2800 

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:4612906 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4612906 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2498727009 (2.3 GiB)  TX bytes:2498727009 (2.3 GiB)

tun6to4   Link encap:IPv6-in-IPv4  
          inet6 addr: ::83.226.31.69/128 Scope:Compat
          UP RUNNING NOARP  MTU:1472  Metric:1
          RX packets:33 errors:0 dropped:0 overruns:0 frame:0
          TX packets:385 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3816 (3.7 KiB)  TX bytes:44924 (43.8 KiB)
eth0 är mitt interna interface, eth1 externa och tun6to4 är mitt 6to4-interface, om jag fattat rätt. :)

Min ipv6-routingtabell:
::/96 dev tun6to4 metric 1 mtu 1472 advmss 1412 hoplimit 4294967295
::/96 via :: dev tun6to4 metric 256 mtu 1472 advmss 1412 hoplimit 4294967295
2002:53e2:1f00::/64 dev eth0 metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
2002:53e2:1f45::/64 dev eth0 metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
2002::/16 dev tun6to4 metric 1024 mtu 1472 advmss 1412 hoplimit 4294967295
2000::/3 via ::192.88.99.1 dev tun6to4 metric 1 mtu 1472 advmss 1412 hoplimit 4294967295
fe80::/64 dev eth0 metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev eth1 metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
Någon med mer ipv6-vana än mig som ser något skummt?
Min tanke är att det finns en route från 6to4-nätet (2002::) till "riktiga" ipv6-nätet (2001::) men ingen route på andra hållet. Enda problemet med den teorin är att det skulle vara ytterst märkligt om så vore fallet. :) Rent logiskt så är det i min maskin det är fel...
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

Re: 6to4 ipv6 på dator med dynamisk ip

Inlägg av Emil.s »

Vilken 2002 adress försöker du att pinga?

Kod: Markera allt

2000::/3 via ::192.88.99.1 dev tun6to4 metric 1 mtu 1472 advmss 1412 hoplimit 4294967295
Har metric 1, så den väger tyngst. Alltså är det den som får alla adresser inom:
2000:0000:0000:0000:0000:0000:0000:0000 - 3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff att skickas via 192.88.99.1.

Dock så har du ju 2 adresser på dit interna interface. Det är möjligtvis inte så att det är någon av adresserna inom det områdena du försöker att pinga?
-------------------------------------------------------------------------------

Hittade problemet tror jag. 1 av adresserna funkar inte, och troligtvis är det den adressen som din gateway försöker att skicka svarstrafiken till?
Hur som hellst

Kod: Markera allt

emil@Sandnabba: ~ $> ping6 2002:53e2:1f45::1
PING 2002:53e2:1f45::1(2002:53e2:1f45::1) 56 data bytes
64 bytes from 2002:53e2:1f45::1: icmp_seq=1 ttl=56 time=78.7 ms
64 bytes from 2002:53e2:1f45::1: icmp_seq=2 ttl=56 time=78.7 ms
^C
--- 2002:53e2:1f45::1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 78.786/78.791/78.797/0.280 ms
emil@Sandnabba: ~ $> ping6 2002:53e2:1f00::1
PING 2002:53e2:1f00::1(2002:53e2:1f00::1) 56 data bytes
^C
--- 2002:53e2:1f00::1 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 2999ms
Så se till att alla adresser som går till din dator fungerar.
Home sweet ~/ = http://sandnabba.se
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Re: 6to4 ipv6 på dator med dynamisk ip

Inlägg av Pinky »

Den första adressen är en som det tipsas om i guiden, som tydligen ska tillhöra wlug.org.nz.
Sedan försöker jag pinga ipv6.google.com. Fast jag ser nu att deras adress börjar på 2a00, men det borde ju täckas av min route.

Kod: Markera allt

andelain:~# ping6 2002:3cea:4272::1
PING 2002:3cea:4272::1(2002:3cea:4272::1) 56 data bytes
64 bytes from 2002:3cea:4272::1: icmp_seq=1 ttl=64 time=369 ms
64 bytes from 2002:3cea:4272::1: icmp_seq=2 ttl=64 time=373 ms
64 bytes from 2002:3cea:4272::1: icmp_seq=3 ttl=64 time=367 ms
64 bytes from 2002:3cea:4272::1: icmp_seq=4 ttl=64 time=346 ms
64 bytes from 2002:3cea:4272::1: icmp_seq=5 ttl=64 time=349 ms
^C
--- 2002:3cea:4272::1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4015ms
rtt min/avg/max/mdev = 346.940/361.423/373.735/11.065 ms
andelain:~# ping6 ipv6.google.com
PING ipv6.google.com(2a00:1450:8003::69) 56 data bytes
Jag provade med din sandnabba.se:

Kod: Markera allt

andelain:~# ping6 www.sandnabba.se
PING www.sandnabba.se(sandnabba.se) 56 data bytes
^C
--- www.sandnabba.se ping statistics ---
9 packets transmitted, 0 received, 100% packet loss, time 8012ms
men utan resultat. Vad har du för ipv6-adress egentligen? Skulle vilja prova med att skriva in adressen istället för DNS-namnet.
Ska försöka ta reda på varför jag har 2 global-adresser på mitt kort, återkommer om det.
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Re: 6to4 ipv6 på dator med dynamisk ip

Inlägg av Pinky »

Startade om burken, förmodligen berodde de dubbla adresserna på att jag kluddat lite med scriptet i början.
Problemen kvarstår dock, bortsett från att nu har jag bara en adress: inet6 addr: 2002:53e2:1f45::1/64

Edit: Nu ser förstår routingtabellen ut såhär, utan den skumma adressen:

Kod: Markera allt

::/96 dev tun6to4  metric 1  mtu 1472 advmss 1412 hoplimit 4294967295
::/96 via :: dev tun6to4  metric 256  mtu 1472 advmss 1412 hoplimit 4294967295
2002:53e2:1f45::/64 dev eth0  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
2002::/16 dev tun6to4  metric 1024  mtu 1472 advmss 1412 hoplimit 4294967295
2000::/3 via ::192.88.99.1 dev tun6to4  metric 1  mtu 1472 advmss 1412 hoplimit 4294967295
fe80::/64 dev eth0  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev eth1  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
Fast nu när jag tittar på routingtabellen..
Routen för 2002:-adresser ser annorlunda ut: 2002::/16 dev tun6to4 metric 1024 mtu 1472 advmss 1412 hoplimit 4294967295
Jämfört med routen för övriga 2000:-adresser: 2000::/3 via ::192.88.99.1 dev tun6to4 metric 1 mtu 1472 advmss 1412 hoplimit 4294967295
Den route med längst bitmask som stämmer vinner ju som bekant. (/16 > /3)
Vad är skillnaden på "dev tun6to4" och " via ::192.88.99.1 dev tun6to4"?
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Re: 6to4 ipv6 på dator med dynamisk ip

Inlägg av Pinky »

Jag ändrade lite i scriptet, min routingtabell ser nu ut såhär:

Kod: Markera allt

::/96 dev tun6to4  metric 1  mtu 1472 advmss 1412 hoplimit 4294967295
::/96 via :: dev tun6to4  metric 256  mtu 1472 advmss 1412 hoplimit 4294967295
2002:53e2:1f45::/64 dev eth0  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
2000::/3 dev tun6to4  metric 1024  mtu 1472 advmss 1412 hoplimit 4294967295
fe80::/64 dev eth0  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev eth1  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
Jag kan fortfarande pinga 2002-adressen, men nu får jag ett annat fel när jag försöker pinga sandnabba.se (Samma resultat med ipv6.google.com)

Kod: Markera allt

andelain:/home/pinky# ping6 2002:3cea:4272::1
PING 2002:3cea:4272::1(2002:3cea:4272::1) 56 data bytes
64 bytes from 2002:3cea:4272::1: icmp_seq=1 ttl=64 time=383 ms
64 bytes from 2002:3cea:4272::1: icmp_seq=2 ttl=64 time=386 ms
^C
--- 2002:3cea:4272::1 ping statistics ---
3 packets transmitted, 2 received, 33% packet loss, time 2005ms
rtt min/avg/max/mdev = 383.982/385.038/386.095/1.225 ms
andelain:/home/pinky# ping6 www.sandnabba.se
PING www.sandnabba.se(sandnabba.se) 56 data bytes
From c-451fe253.53-1-64736c10.cust.bredbandsbolaget.se icmp_seq=1 Destination unreachable: Address unreachable
From c-451fe253.53-1-64736c10.cust.bredbandsbolaget.se icmp_seq=2 Destination unreachable: Address unreachable
From c-451fe253.53-1-64736c10.cust.bredbandsbolaget.se icmp_seq=3 Destination unreachable: Address unreachable
From c-451fe253.53-1-64736c10.cust.bredbandsbolaget.se icmp_seq=4 Destination unreachable: Address unreachable
From c-451fe253.53-1-64736c10.cust.bredbandsbolaget.se icmp_seq=5 Destination unreachable: Address unreachable
From c-451fe253.53-1-64736c10.cust.bredbandsbolaget.se icmp_seq=6 Destination unreachable: Address unreachable
^C
--- www.sandnabba.se ping statistics ---
6 packets transmitted, 0 received, +6 errors, 100% packet loss, time 5016ms
Det måste innebära att nu kommer mina paket inte ens ut. Ändrar tillbaks till det gamla så länge.
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

Re: 6to4 ipv6 på dator med dynamisk ip

Inlägg av Emil.s »

Både ipv6.google.com (2a00:1450:8001::63) och sandnabba.se (2001:16d8:ff13:dead::1) täcks ju av 2000::/3, så det verkar vara där problemet ligger.

Kod: Markera allt

2000::/3 dev tun6to4  metric 1024  mtu 1472
Funkra inte?

Kod: Markera allt

2000::/3 via ::192.88.99.1 dev tun6to4 metric 1 mtu 1472
Funkar?

Rent routingmässigt så ser ju den sista mer korrekt ut.

Du har inte lust att dela med dig av scriptet så man kan testa själv? :)
Home sweet ~/ = http://sandnabba.se
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Re: 6to4 ipv6 på dator med dynamisk ip

Inlägg av Pinky »

Kod: Markera allt

2000::/3 dev tun6to4  metric 1024  mtu 1472
Då får jag address unreachable svaret.

Kod: Markera allt

2000::/3 via ::192.88.99.1 dev tun6to4 metric 1 mtu 1472
Då får jag inget svar alls, dvs jag kan misstänka att mina paket kommer iväg, men att svaren kommer bort sig.

Det som slår mig som riktigt märkligt är att du kan pinga mig, jag menar, det betyder ju att paketen kommer fram till mig och att jag kan skicka svar.

Här är scripten:
/etc/init.d/6to4:

Kod: Markera allt

#! /bin/sh
#
# 6to4  Script to configure a 6to4 "tunnel" device
#
#               Written by Daniel Lawson <daniel@meta.net.nz>

PATH=/sbin:/bin:/usr/sbin:/usr/bin

test -f $DAEMON || exit 0

# Source configuration file
. /etc/default/6to4


start_6to4_tunnel() {
# GET EXTIF IP Address
  PPPIP=`ip -4 addr list $EXTIF | grep inet | awk '{ print $2'}`
# From IanKumlien:
# If you get a /netmask-bits suffix, then change the PPPIP line to:
 PPPIP=`ip -4 addr list $EXTIF | grep inet | awk '{ print $2 }' | cut -d/ -f1`
  echo $PPPIP 
# Set up the tunnel
  ip tunnel add ${IF} mode sit remote any local $PPPIP ttl 255
  ip link set dev ${IF} mtu 1472 up
}

start_routes() {
# Route outgoing 6to4 via the tunnel
  ip -6 route add 2002::/16 dev ${IF}

# If this is your only IPv6 connection, add some more routes as well:
  if [ ${ONLYCONN} == "yes" ]; then
    # This line seems necessary, but I've never found documented 
    # anywhere. Try without if you can.
    ip -6 route add ::/96 dev ${IF} metric 1 

    # Add a route toe the 6to4 Anycast address?
    ip -6 route add 2000::/3 via ::${GWADDR} dev tun6to4 metric 1
  fi
}
 
start_local_network() {
# Add a 6to4 Address to ${INTIF}
  if [ -n ${INTIF} ]; then
    ip -6 addr add $(printf "2002:%02x%02x:%02x%02x::1/64" $(echo ${PPPIP} | tr '.' ' ')) dev ${INTIF}
  fi
}

stop_local_network() {

  if [ -n ${INTIF} ]; then
    
# GET the *old* tunnel ip
    OLDIP=`ip -6 addr list dev ${IF} | grep inet6 | cut -d ":" -f 3 | cut -d '/' -f 1`
# Remove the route via ${INTIF}
    ip -6 route del $(printf "2002:%02x%02x:%02x%02x::/64" $(echo ${OLDIP} | tr '.' ' ')) dev ${INTIF}

# Remove the 6to4 IP assigned to ${INTIF}
    ip -6 addr del $(printf "2002:%02x%02x:%02x%02x::1/64" $(echo ${OLDIP} | tr '.' ' ')) dev ${INTIF}
  fi
}

stop_routes() {
 ip -6 route del 2002::/16 dev ${IF}
 if [ ${ONLYCONN} == "yes" ]; then
   ip -6 route del ::/96 dev ${IF} metric 1
   ip -6 route del 2000::/3 via ::${GWADDR} dev ${IF} metric 1
 fi
}

stop_6to4_tunnel() {
  ip -6 route flush dev ${IF}
  ip link set dev ${IF} down
        ip tunnel del ${IF} 
}

restart_6to4_ad () {
  [ "yes" == "${RADVD}" ] &&
    killall -1 radvd
}



case "$1" in
  start)
        echo -n "Setting up 6to4 IPv6 tunnel ($IF): "
  
  start_6to4_tunnel
  start_routes
  start_local_network
  restart_6to4_ad
        
  ;;
  stop)
        echo -n "Shutting down 6to4 IPv6 tunnel ($IF): "
 
  stop_local_network
  stop_routes
  stop_6to4_tunnel
  restart_6to4_ad
  
        ;;
  restart|force-reload)
        echo -n "Resetting 6to4 IPv6 tunnel ($IF): "

  stop_local_network
  stop_routes
  stop_6to4_tunnel
  start_6to4_tunnel
  start_routes
  start_local_network
  restart_6to4_ad
  
  ;;
  *)
        echo "Usage: $0 {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0
/etc/default/6to4:

Kod: Markera allt

# Defaults for 6to4 initscript
# sourced by /etc/init.d/6to4
# installed at /etc/default/6to4 by the maintainer scripts

#
# This is a POSIX shell fragment
#

# What is the name of your tunnel interface?
IF=tun6to4

# What is the name of your external (real-world) interface?
EXTIF=eth1

# What is the name of your internal (rfc1918) interface?
# If you do not wish to use this feature, then leave this blank. 
# If your internal hosts have real-world addresses themselves, then this
# set of scripts currently wont help you.
INTIF=eth0

# Do you use radvd for dynamic IPv6 addressing within your network?
RADVD=no

# IS this your only IPv6 connection? If you have a freenet6, or some other 
# form of IPv6 connection, then set the following to no. If you are sure
# that this is your only IPv6 connection, set it to yes.
ONLYCONN=yes

# If this is your only IPv6 connection, you need a gateway to forward
# your 6to4 packets onto the 6bone. You should find a gateway that is
# as close to you as possible!
# Helsinki or somewhere similar
GWADDR=192.88.99.1
# AARNET in australia
#GWADDR=192.231.212.5
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

Re: 6to4 ipv6 på dator med dynamisk ip

Inlägg av Emil.s »

Testade ditt script på min netbook som har en mobil uppkoppling, men det funkade inte...

Dock så funkade när man gjorde det manuellt
Följde dock urspringsguiden:
http://tldp.org/HOWTO/Linux+IPv6-HOWTO/ ... nnels.html

Dock så ser en sån uppkoppling ut så här:

Kod: Markera allt

hso0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00                                         
          inet addr:90.237.224.142  P-t-P:90.237.224.142  Mask:255.255.255.255                                              
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1486  Metric:1                                                        
          RX packets:691 errors:0 dropped:0 overruns:0 frame:0                                                              
          TX packets:521 errors:0 dropped:0 overruns:0 carrier:0                                                            
          collisions:0 txqueuelen:10                                                                                        
          RX bytes:683803 (683.8 KB)  TX bytes:81092 (81.0 KB)
Ser dock att din adress (som jag pingade) är satt på ditt interna interface, men ingen adress på tunneln?

När jag körde så satte jag bara adressen på tun6to4 interfacet.

Ska hur som hellst ta en närmare titt på detta, och gå igenom scriptet så jag ser hur det funkar när jag kommer hem. (Torsdag/Fredag).
Home sweet ~/ = http://sandnabba.se
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

Re: 6to4 ipv6 på dator med dynamisk ip

Inlägg av Emil.s »

Sådär!

Var lite rörigt, och skaparen av scriptet verkar inte riktigt ha koll på hur det funkar riktigt...

start_routes() {
# Route outgoing 6to4 via the tunnel
ip -6 route add 2002::/16 dev ${IF} # FEL måste även lägga välja över vilken adress som paketen ska routas.

# If this is your only IPv6 connection, add some more routes as well: # (Varför då?)
if [ ${ONLYCONN} == "yes" ]; then
# This line seems necessary, but I've never found documented
# anywhere. Try without if you can.
ip -6 route add ::/96 dev ${IF} metric 1 # <- Behövs inte. Läggs till automatiskt.

# Add a route toe the 6to4 Anycast address? # Rätt, och detta är också den enda routen, då den täcker den första. Dock så strular "::${GWADDR}", så man får köra manuellt.
ip -6 route add 2000::/3 via ::${GWADDR} dev tun6to4 metric 1
fi
}
Har hur som hellst moddat scriptet lite, så om du sätter INTIF=tun6to4 i /etc/default/6to4, och ändrar funktionen "start_routes" i /etc/init.d/6to4 till följande så bör det funka:

Kod: Markera allt

start_routes() {
    ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 metric 1
}
Ett litet fulhack, men jag kommer att skriva om detta så det blir bra senare. :)
Home sweet ~/ = http://sandnabba.se
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Re: 6to4 ipv6 på dator med dynamisk ip

Inlägg av Pinky »

Det där ser bra ut, ska testa det ikväll om jag hinner. Vad jag inte förstår är varför jag ska sätta INTIF till tun6to4?

Utanför ämnet: Scriptet kan se lite rörigt ut, för jag tror att skaparen antog att man kanske hade en <vad det nu heter, så som du har löst din ipv6-koppling mot en provider av nåt slag> också, och detta bara var en lösning för snabbare routes till 6to4-maskiner. Dessutom att INTIF var ett internt interface (mot LAN) för att kunna ge resten av maskinerna på lanet ipv6-adresser från sitt 6to4-subnät via just radvd.
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

Re: 6to4 ipv6 på dator med dynamisk ip

Inlägg av Emil.s »

Sitter på tåget på väg hem, och har gjort några "fynd".

Testade att sätta INTIF="eth0", och allt ser ut att funka. Dock så händer ingenting när man försöker att pinga något. Antar att det beror på att mii-tool ger:

Kod: Markera allt

root@MobileCommand: ~ #> mii-tool eth0                                                                                      
eth0: no link
Vilket ju då beror på att det inte sitter någon TP där. ;)

Men den största fördelen är ju att det blir lättare att hantera routingen för subnätet om man har den externa adressen på tun6to4.

För som jag fattat det så kommer hela 2002:xxxx:xxxx::/48 att routas till 2002:xxxx:xxxx::1?
Eftersom man verkar få ett /48 så vill man ju dela upp subnätet (/64) så att din 6to4 maskin vet var subnäten finns.

Om du har några interna datorer på t.ex 2002:xxxx:xxxx:0001::/64 så kan du ku inte ha det nätet på samma interface som 2002:xxxx:xxxx::/64, för då blir idet ju ganska knepigt. :P

Enklast än nog att sätta din inkommande IPv6 på just det interface som adressen kommer ifrån (tun6to4), och sen sätta ett helt annat subnät på ditt interna interface, t.ex 2002:xxxx:xxxx:0001:1/64.
Då borde allt hoppa igång automatiskt.

Tänk på att du måste använda /64 nät med radvd. (ger inga felmeddelanden, funkar bara inte...)
Home sweet ~/ = http://sandnabba.se
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

Re: 6to4 ipv6 på dator med dynamisk ip

Inlägg av Emil.s »

Nu har jag testat ordentligt. Myckte riktigt så routas hela /48 nätet till 2002:xxxx:xxxx::1.

Radvd har såklart också utvecklats, så numer räcker det med ::/64 som adress på interfacet så hoppar det igång.

Så radvd.conf:

Kod: Markera allt

interface eth0 {                                                                                                            
        AdvSendAdvert on;                                                                                                   
        prefix ::/64 {                                                                                                      
                AdvOnLink on;                                                                                               
                AdvAutonomous on;                                                                                           
                AdvRouterAddr on;                                                                                           
        };                                                                                                                  
                                                                                                                            
        RDNSS 2001:16d8:ff13:dead::1 {                                                                                      
        };                                                                                                                  
};
DNSen byts förslagsvis mot något mer pålitligt. ;)

Scriptet är något modifierat, och använder inte längre /etc/default/6to4, utan alla inställningar görs direkt i scriptet:

Kod: Markera allt

#! /bin/bash                                                                                                                
#                                                                                                                           
# 6to4  Script to configure a 6to4 "tunnel" device                                                                          
#                                                                                                                           
#               Written by Emil Sandnabba <emil@sandnabba.se>                                                               
#               Orginal by Daniel Lawson <daniel@meta.net.nz>                                                               
                                                                                                                            
# Interface för tunneln:                                                                                                    
IF=tun6to4                                                                                                                  
                                                                                                                            
# Externt interface (publik IP):                                                                                            
EXTIF=hso0                                                                                                                  
                                                                                                                            
# Interface för ingående IPv6:                                                                                              
INTIF=tun6to4                                                                                                               
                                                                                                                            
# IPv6 forward?                                                                                                             
sysctl -w net.ipv6.conf.all.forwarding=1                                                                                    
                                                                                                                            
start_6to4_tunnel() {                                                                                                       
# GET EXTIF IP Address                                                                                                      
  PPPIP=`ip -4 addr list $EXTIF | grep inet | awk '{ print $2'}`                                                            
# From IanKumlien:                                                                                                          
# If you get a /netmask-bits suffix, then change the PPPIP line to:                                                         
PPPIP=`ip -4 addr list $EXTIF | grep inet | awk '{ print $2 }' | cut -d/ -f1`                                               
  echo $PPPIP                                                                                                               
# Set up the tunnel                                                                                                         
  ip tunnel add ${IF} mode sit remote any local $PPPIP ttl 255                                                              
  ip link set dev ${IF} mtu 1472 up                                                                                         
}                                                                                                                           
                                                                                                                            
start_routes() {                                                                                                            
    ip -6 route add 2000::/3 via ::192.88.99.1 dev ${IF} metric 1                                                           
}                                                                                                                           
                                                                                                                            
start_local_network() {                                                                                                     
# Add a 6to4 Address to ${INTIF}                                                                                            
  if [ -n ${INTIF} ]; then                                                                                                  
    ip -6 addr add $(printf "2002:%02x%02x:%02x%02x::1/64" $(echo ${PPPIP} | tr '.' ' ')) dev ${INTIF}                      
  fi                                                                                                                        
}                                                                                                                           
                                                                                                                            
stop_local_network() {                                                                                                      
                                                                                                                            
  if [ -n ${INTIF} ]; then                                                                                                  
                                                                                                                            
# GET the *old* tunnel ip                                                                                                   
    OLDIP=`ip -6 addr list dev ${IF} | grep inet6 | cut -d ":" -f 3 | cut -d '/' -f 1`                                      
                                                                                                                            
# Remove the 6to4 IP assigned to ${INTIF}                                                                                   
    ip -6 addr del $(printf "2002:%02x%02x:%02x%02x::1/64" $(echo ${OLDIP} | tr '.' ' ')) dev ${INTIF}                      
  fi                                                                                                                        
}                                                                                                                           
                                                                                                                            
stop_routes() {                                                                                                             
   ip -6 route del 2000::/3 via ::192.88.99.1 dev ${IF} metric 1                                                            
}                                                                                                                           
                                                                                                                            
stop_6to4_tunnel() {                                                                                                        
  ip -6 route flush dev ${IF}                                                                                               
  ip link set dev ${IF} down                                                                                                
        ip tunnel del ${IF}                                                                                                 
        echo                                                                                                                
}                                                                                                                           
                                                                                                                            
restart_6to4_ad () {                                                                                                        
  [ "yes" == "${RADVD}" ] &&                                                                                                
    killall -1 radvd                                                                                                        
}                                                                                                                           
                                                                                                                            
                                                                                                                            
                                                                                                                            
case "$1" in                                                                                                                
  start)                                                                                                                    
        echo -n "Setting up 6to4 IPv6 tunnel ($IF): "                                                                       
                                                                                                                            
  start_6to4_tunnel                                                                                                         
  start_routes                                                                                                              
  start_local_network                                                                                                       
#  restart_6to4_ad                                                                                                          
                                                                                                                            
  ;;                                                                                                                        
  stop)                                                                                                                     
        echo -n "Shutting down 6to4 IPv6 tunnel ($IF): "                                                                    
                                                                                                                            
  stop_routes                                                                                                               
#  stop_local_network                                                                                                       
  stop_6to4_tunnel                                                                                                          
# restart_6to4_ad                                                                                                           
                                                                                                                            
        ;;                                                                                                                  
  restart|force-reload)                                                                                                     
        echo -n "Resetting 6to4 IPv6 tunnel ($IF): "                                                                        
                                                                                                                            
  stop_local_network                                                                                                        
  stop_routes                                                                                                               
  stop_6to4_tunnel                                                                                                          
  start_6to4_tunnel                                                                                                         
  start_routes                                                                                                              
  start_local_network                                                                                                       
  restart_6to4_ad                                                                                                           
                                                                                                                            
  ;;                                                                                                                      
  *)                                                                                                                        
        echo "Usage: $0 {start|stop|restart|force-reload}" >&2                                                              
        exit 1                                                                                                              
        ;;                                                                                                                  
esac                                                                                                                        
                                                                                                                            
exit 0
Det enda som behövs göras i dagsläget är att sätta en IP på det interna interfacet som inte krockar med den externa, och sen starta radvd så är det igång.
Sista vart det följande för mig:
Extern (tun6to4, satt automatiskt av scriptet): 2002:5aef:4d26::1/64
Intern (satt manuellt med ifconfig eth0 add): 2002:5aef:4d26:1::1/64

Sen är det bara att starta radvd (Lägg ovanstående conf som /etc/radvd.conf och starta med "sudo radvd").
Då kommer datorer som pluggas in på eth0 att få adresser inom 2002:5aef:4d26:1::/64, din valda DNS server och det är bara att tuta och köra. :)

Kommer nog att fortsätta med scriptet så att även ovastående sker automatiskt. Hjälp, eller tips och idéer tas gärna emot!
Home sweet ~/ = http://sandnabba.se
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Re: 6to4 ipv6 på dator med dynamisk ip

Inlägg av Pinky »

Haha, jag ser nu att jag gjort världens miss. Märkligt att något fungerat överhuvudtaget. Titta på mina tidigare poster med urklipp från ifconfig. Min IPv6-adress är ju satt på mitt interna interface :D

Skoj att du pillar vidare med scriptet, jag följer arbetet med intresse :)
Ska bara få igång en tunnel av något slag till min testserver (se http://ubuntu-se.org/phpBB3/viewtopic.php?f=17&t=48645) så ska jag testa ordentligt sen. Känner att det börjar bli för riskabelt att köra en massa testscript m.m. på min skarpa server där jag har mail, hemsidor, all media m.m. :P
Cybjit
Inlägg: 1
Blev medlem: 14 feb 2010, 15:26
OS: Kubuntu
Utgåva: 20.04 Focal Fossa LTS

Re: 6to4 ipv6 på dator med dynamisk ip

Inlägg av Cybjit »

Tänke bara dela med mig skripten som jag använder

/etc/network/if-up.d/6to4-up

Kod: Markera allt

#!/bin/sh
[ "$IFACE" = eth0 ] || exit 0

IPV4=`/sbin/ip -4 addr show dev eth0|grep "^ *inet"|sed -r -e 's:.*inet ([0-9\.]+)/.*:\1:'`
IPV4STRIP=`echo $IPV4 | tr "." " "`
IPV6=`printf "2002:%02x%02x:%02x%02x::1" $IPV4STRIP`
IPV6ETH=`printf "2002:%02x%02x:%02x%02x:1::1" $IPV4STRIP`

/sbin/ip tunnel add tun6to4 mode sit ttl 64 remote any local $IPV4
/sbin/ip link set dev tun6to4 up mtu 1280
/sbin/ip -6 addr add $IPV6/16 dev tun6to4
/sbin/ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 metric 1
#/sbin/ip -6 addr add $IPV6ETH/64 dev eth1
MTU är satt till 1280, då en del paket till fjärran länder verkar försvinna annars.


/etc/network/if-down.d/6to4-down

Kod: Markera allt

#!/bin/sh
[ "$IFACE" = eth0 ] || exit 0

/sbin/ip -6 route flush dev tun6to4
/sbin/ip link set dev tun6to4 down
/sbin/ip tunnel del tun6to4
#/sbin/ip -6 addr flush dev eth1
Har kört med dessa några år nu, funkar oftast bra.
Men routingbitarna är bortkommenterade, då alla mina datorer får publika IP numera.
Skriv svar

Återgå till "Nätverk, säkerhet och servrar"