Warning: Memcache::addserver() expects parameter 2 to be long, string given in /usr/home/rpc/domains/rpc.one.pl/public_html/libraries/joomla/cache/storage/memcache.php on line 84 Tunel HeartBeat IPV6 na Cisco 1841 od Sixxs
 
 
Tunel HeartBeat IPV6 na Cisco 1841 od Sixxs Drukuj Email
Wpisany przez rpc   
poniedziałek, 01 sierpnia 2011 10:23

Tunel HeartBeat IPV6 na Cisco 1841 od Sixxs


Poniżej przedstawię przykładową konfigurację utworzenia tunelu IPV6 na routerze cisco 1841. Typ Tunelu HeartBeat. Czyli adres mamy publiczny dynamiczny a nie statyczny na interfejsie WAN.


1.Założenia:

Tunel będzie tworzony do dostawcy www.sixxs.net. POP w Polsce.

Nie będę tutaj rozpisywał się jak założyć konto w SIXXS i jak otrzymać adres i podsieć. O tym możesz przeczytać na tej stronie w innym artykule.

Do przedstawionej konfiguracji wymagany jest IOS na Cisco w wersji min. 15.1T.

Adres interfejsu WAN jest dynamiczny


Generalnie od Sixxs otrzymaliśmy adres ipv6:

The SixXS Staff have honored your request for a tunnel with the following
specifications:
-------
Tunnel Id : T13903
PoP Name : plwaw01 (pl.icm [AS8664])
Your Location : Warszawa, pl
SixXS IPv6 : 2001:6a0:200:3d::1/64
Your IPv6 : 2001:6a0:200:3d::2/64
SixXS IPv4 : 193.219.28.26
Tunnel Type : Dynamic (heartbeat)

oraz podsieć ipv6:

The SixXS Staff have honored your request for a subnet on the following
tunnel:
-------
PoP Name : plwaw01 (pl.icm [AS8664])
Subnet IPv6 : 2001:6a0:16b::/48
Routed to : 2001:6a0:200:3d::2/64
Your IPv4 : heartbeat

My sobie definiujemy naszą podsieć ipv6 w naszej sieci LAN jako:

2001:6a0:16b:1111::/64

a adres routera w sieci lan to

2001:6a0:16b:1111::1


1.Instalacja skryptu do ustanowienia tunelu ipv6 HeartBeat w sixxs:

pobieramy skrypt i zapisujemy na dysku flash:

copy http://pfeiffer.ws/ipv6/heartbeat6.tar flash:

rozpakowujemy skrypt na dysk flash:
archive tar /xtract flash:heartbeat6.tar flash:

Po rozpakowaniu pakietu na dysku flash znajduje się plik

heartbeat6.tcl

Należy go przekopiować na komputer i zmodyfikować wedle poniższego schematu podkładając oczywiście nasze otrzymane adresy IP:

c-rpc#more flash:heartbeat6.tcl
# Written by Jakob Pfeiffer <code@pfeiffer.ws>
# Version 0.2 (2010-06-10)

package require md5

set localv6 "2001:6a0:200:3d::2";               # Your IPv6 (e.g. 2001:a60:ffff:1a2b::2
set password "75fc01a9f168c31bb8979e1ce16e03a9";        # Tunnel passphrase (see below)
set remotev4 "193.219.28.26";   # PoP IPv4 (e.g. 62.245.150.2)
set remotev6 "2001:6a0:200:3d::1";      # PoP IPv6 (e.g. 2001:a60:ffff:1a2b::1


# Sending heartbeat and IPv6 ping every 60 seconds.
set hb "HEARTBEAT TUNNEL $localv6 sender [clock second]"
set hbhash "$hb [string tolower [md5::md5 -hex "$hb $password"]]"

puts $hbhash;           # Write to std out (debug only).

# Open new udp socket.
set sock1 [udp_open]
fconfigure $sock1 -remote [list $remotev4 3740]
puts $sock1 $hbhash;    # Write to udp socket.
close $sock1

ping ipv6 $remotev6 repeat 1 source $localv6

wyjaśnię może najważniejsze opcje:

localv6 - nasz otrzymany adres ipv6
remotev4 - adres ipv4 hopa czyli druga strona tunelu ipv6 - POP plwaw01
remotev6 - adres ipv6 drugiej strony tunelu, czyli po stronie POP plwaw01
password - to wyjaśnię później z kąd to się bierze

Po edycji na komputerze pliku heartbeat6.tcl wgrywamy go z powrotem na router w to samo miejsce czyli:

flash:/heartbeat6.tcl


2.Utworzenie interfejsu Tunel0

włączamy ipv6

ipv6 unicast-routing

tworzymy tunel 0

interface Tunnel0
description IPV6 tunnel to SixXS
no ip address
ipv6 address 2001:6a0:200:3d::2/64
ipv6 enable
ipv6 mtu 1280
ipv6 traffic-filter v6_ruch_z_wan in
ipv6 virtual-reassembly in
tunnel source Dialer1
tunnel mode ipv6ip
tunnel destination 193.219.28.26

dodajemy statyczną trasę routingu przez naszego gateway ipv6

ipv6 route 2000::/3 2001:6a0:200:3d::1


Proszę zauwazyć linię

tunnel source Dialer1

ta linia oznacza, że tunel zostanie podniesiony automatycznie w momencie ustanowienia połączenia przez interfejs Diarel1 (pełny mój konfig na końcu arta)


3.Podłączenie skryptu heartbeat do crona routera cisco wraz z definicja skryptu md5

scripting tcl init flash:tcllib1.12/md5/pkgIndex.tcl

event manager applet RunHeartbeat6
event timer cron name RunHeartbeat6 cron-entry "* * * * *"
action 1.0 cli command "enable"
action 2.0 cli command "tclsh flash:heartbeat6.tcl"

czyli definiujemy, że skrypt ma być odpalany co minutę (bo może zmienić się adres ipv4).


4. Definiujemy adres ipv6 na interfejsie LAN (ten otrzymany od sixxs z podsieci)

interface FastEthernet0/1
description Lacze dla LAN
ip address 192.168.1.1 255.255.255.0
ip nat inside
ip virtual-reassembly in
ip verify unicast reverse-path
duplex auto
speed auto
ipv6 address 2001:6a0:16b:1111::1/64
ipv6 enable

teraz hosty w naszej sieci będą poprzez protokół radvd otrzymywały adresy ipv6 z zakresu sieci

2001:6a0:16b:1111::/64


5.Definiujemy naszą listę ACL dla IPV6 (firewall)

ipv6 access-list v6_ruch_z_wan
permit icmp any any
permit udp any eq domain any
permit tcp any any established
permit tcp any any eq 22
sequence 60 deny ipv6 any any

Czyli puszczamy tylko ssh oraz dns i pakiety icmp od strony WAN. Od strony LAN ruch jest bez ograniczeń.


6.Definicja ACL ipv4 (firewall)

Musimy dopuścić protokół 41 do naszego routera aby poprawnie tunel mógł pracować:

permit 41 any any

pełna ACL dla IPV4 może wyglądac następująco:

ip access-list extended ruch_z_wan
permit udp any eq domain any
permit icmp any any
permit tcp any any established
permit tcp any any eq 22
permit tcp any any eq www
permit 41 any any
permit esp any any
permit udp any any eq isakmp
permit udp any any eq non500-isakmp
permit udp any eq ntp any eq ntp
deny   ip any any


Acha jeszcze wazna uwaga. Aby to wszystko ładnie pracowało potrzebujemy się synchronizowac z serwerem czasu ntp. Czyli potrzebujemy jeszcze jednej ACL:

permit udp any eq ntp any eq ntp


7.Włączamy clienta NTP:

ntp server vega.cbk.poznan.pl
ntp server ntp.certum.pl
ntp server ntp.nask.pl


8. Hasło do pliku flash:heartbeat6.tcl czyli opcja passwd z kąd wziąść ?

Niestety w tym skrypcie do cisco nie podaje się hasła jawnym tekstem. Musimy je sobie wydobyć z clienta sixxs aiccu w czasie logowania. Będzie tak naprawdę hash hasła.

Uzupełniamy poprawnmie plik konfiguracyjny aiccu.conf oraz uruchamiamy go w trybie debagu. Naszym oczom ukaże się coś w stylu poniżej:

sock_getline() : "200 SixXS TIC Service on nlhaa01.sixxs.net ready (http://www.sixxs.net)"
sock_printf()  : "client TIC/draft-00 AICCU/2007.01.15-console-linux Linux/2.6.32.27"
sock_getline() : "200 Client Identity accepted"
sock_printf()  : "get unixtime"
sock_getline() : "200 1308897875"
sock_printf()  : "username RPC-SIXXS"
sock_getline() : "200 RPC-SIXXS choose your authentication challenge please"
sock_printf()  : "challenge md5"
sock_getline() : "200 5a976150f131ff11e411d0fe2b481591"
sock_printf()  : "authenticate md5 306115821d7973a3175f6d98ab941719"
sock_getline() : "200 Successfully logged in using md5 as RPC-SIXXS (rpc)"
sock_printf()  : "tunnel show T13819"
sock_getline() : "201 Showing tunnel information for T13819"
sock_getline() : "TunnelId: T13819"
sock_getline() : "Type: 6in4-heartbeat"
sock_getline() : "IPv6 Endpoint: 2001:6a0:200:3d::2"
sock_getline() : "IPv6 POP: 2001:6a0:200:3d::1"
sock_getline() : "IPv6 PrefixLength: 64"
sock_getline() : "Tunnel MTU: 1280"
sock_getline() : "Tunnel Name: Tunel IPV6 Dom"
sock_getline() : "POP Id: plwaw01"
sock_getline() : "IPv4 Endpoint: heartbeat"
sock_getline() : "IPv4 POP: 193.219.28.26"
sock_getline() : "UserState: enabled"
sock_getline() : "AdminState: enabled"
sock_getline() : "Password: 75fc01a9f168c31bb8979e1ce16e03a9"
sock_getline() : "Heartbeat_Interval: 60"
sock_getline() : "202 Done"
Succesfully retrieved tunnel information for T13819
sock_printf()  : "QUIT Why Go"
Tunnel Information for T13819:
POP Id      : plwaw01
IPv6 Local  : 2001:6a0:200:3d::2/64
IPv6 Remote : 2001:6a0:200:3d::1/64
Tunnel Type : 6in4-heartbeat
Adminstate  : enabled
Userstate   : enabled
heartbeat_socket() - IPv4 : 178.36.21.211
[HB] HEARTBEAT TUNNEL 2001:6a0:200:3d::2 sender 1308897875 05acb391a61ee3e57c3acd8e8ab12d9c
[HB] HEARTBEAT TUNNEL 2001:6a0:200:3d::2 sender 1308897875 05acb391a61ee3e57c3acd8e8ab12d9c

Nasze hasło to wiersz

sock_getline() : "Password: 75fc01a9f168c31bb8979e1ce16e03a9"

I takie też hasło podajemy w pliku cisco.



9.Pełna przykładowa konfiguracja:

version 15.1
no service pad
service tcp-keepalives-in
service tcp-keepalives-out
service timestamps debug datetime msec localtime
service timestamps log datetime msec localtime
service password-encryption
!
hostname c-rpc
!
boot-start-marker
boot-end-marker
!
!
enable secret 5 $1$CI0Q$3doC35g/t1i22rVdOlLYB2
!
aaa new-model
!
!
!
!
!
!
!
aaa session-id common
!
clock timezone UTC 1 0
clock summer-time UTC recurring last Sun Mar 2:00 last Sun Oct 3:00
dot11 syslog
ip source-route
!
!
!
ip dhcp excluded-address 192.168.1.10 192.168.1.199
!
ip dhcp pool 192.168.1.0/24
network 192.168.1.0 255.255.255.0
domain-name rpc.dyndns.biz
default-router 192.168.1.1
dns-server 192.168.1.1
lease 0 1
!
!
ip cef
no ip bootp server
ip domain name rpc.dyndns.biz
ip host rpc.dyndns.biz ns ns1.rpc.dyndns.biz
ip host c-rpc.rpc.dyndns.biz 192.168.1.1
ip host ns1.rpc.dyndns.biz 192.168.1.1
ip ddns update method rpc.dyndns.biz
HTTP
add http://rpc:123456@members.dyndns.org/nic/update?system=dyndns&hostname=<h>&myip=<a>
interval maximum 1 0 0 0
!
ipv6 unicast-routing
ipv6 cef
!
multilink bundle-name authenticated
!
crypto pki token default removal timeout 0
!
!
!
username rpc privilege 15 secret 5 $1$/iyP$dr4t2Y0T3R6I6.ckAdJX3.
!
redundancy
scripting tcl init flash:tcllib1.12/md5/pkgIndex.tcl
!
!
ip tcp selective-ack
ip tcp timestamp
ip tcp path-mtu-discovery
ip ssh authentication-retries 4
ip ssh port 2222 rotary 1
ip ssh rsa keypair-name rpc
ip ssh logging events
ip ssh stricthostkeycheck
!
!
!
!
!
!
!
interface Tunnel0
description IPV6 tunnel to SixXS
no ip address
ipv6 address 2001:6a0:200:3d::2/64
ipv6 enable
ipv6 mtu 1280
ipv6 traffic-filter v6_ruch_z_wan in
ipv6 virtual-reassembly in
tunnel source Dialer1
tunnel mode ipv6ip
tunnel destination 193.219.28.26
!
interface FastEthernet0/0
ip address 192.168.2.1 255.255.255.0
shutdown
duplex auto
speed auto
!
interface FastEthernet0/1
description Lacze dla LAN
ip address 192.168.1.1 255.255.255.0
ip nat inside
ip virtual-reassembly in
ip verify unicast reverse-path
duplex auto
speed auto
ipv6 address 2001:6a0:16b:1111::1/64
ipv6 enable
!
interface ATM0/0/0
description Placzenie WAN do internetu po ADSL
no ip address
no ip redirects
no ip unreachables
no ip proxy-arp
ip flow ingress
no atm ilmi-keepalive
dsl operating-mode itu-dmt
pvc 0/35
encapsulation aal5mux ppp dialer
dialer pool-member 1
!
!
interface Dialer1
description Dzwonimy do naszego ISP poprzez iface ATM pppoa
ip ddns update hostname rpc.dyndns.biz
ip ddns update rpc.dyndns.biz
ip address negotiated
ip access-group ruch_z_wan in
no ip unreachables
ip nat outside
ip virtual-reassembly in
encapsulation ppp
dialer pool 1
dialer-group 1
ppp authentication chap callin
ppp chap hostname internet
ppp chap password internet
ppp ipcp dns request
ppp ipcp route default
no cdp enable
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
ip dns server
ip dns primary rpc.dyndns.biz soa ns1.rpc.dyndns.biz rpc.rpc.dyndns.biz 21600 900 7776000 86400
ip nat inside source list ruch_z_lan interface Dialer1 overload
ip nat inside source static tcp 192.168.1.20 80 interface Dialer1 80
ip route 0.0.0.0 0.0.0.0 Dialer1
!
ip access-list extended ruch_z_lan
deny   tcp any any eq smtp
deny   tcp any any range 135 139
deny   udp any any range 135 netbios-ss
deny   tcp any range 135 139 any
deny   udp any range 135 netbios-ss any
permit ip 192.168.1.0 0.0.0.255 any
deny   ip any any
ip access-list extended ruch_z_wan
permit udp any eq domain any
permit icmp any any
permit tcp any any established
permit tcp any any eq 2222
permit tcp any any eq www
permit 41 any any
permit esp any any
permit udp any any eq isakmp
permit udp any any eq non500-isakmp
permit udp any eq ntp any eq ntp
deny   ip any any
!
logging esm config
ipv6 route 2000::/3 2001:6a0:200:3d::1
!
!
!
!
!
!
!
ipv6 access-list v6_ruch_z_wan
permit icmp any any
permit udp any eq domain any
permit tcp any any established
permit tcp any any eq 2222
sequence 60 deny ipv6 any any
!
control-plane
!
!
!
line con 0
logging synchronous
line aux 0
line vty 0 4
privilege level 15
rotary 1
transport input ssh
!
scheduler allocate 20000 1000
ntp server vega.cbk.poznan.pl
ntp server ntp.certum.pl
ntp server ntp.nask.pl
event manager applet RunHeartbeat6
event timer cron name RunHeartbeat6 cron-entry "* * * * *"
action 1.0 cli command "enable"
action 2.0 cli command "tclsh flash:heartbeat6.tcl"
!
end


Linki:

Heartbeat for Cisco IOS

Download complete script (0.2 2010-06-10)

How do I configure my machine to setup the IPv6 in IPv4 tunnel to the SixXS PoP?


Poprawiony: czwartek, 04 sierpnia 2011 06:23