Difference between revisions of "OpenWRT: IPv6"

From OnnoWiki
Jump to navigation Jump to search
(New page: Native IPv6 access For this, you need to obtain an IPv6 address from your ISP. Technically this could be a /128 prefix (exactly one IPv6 address), but according to rfc6177 this should be ...)
 
 
(55 intermediate revisions by the same user not shown)
Line 1: Line 1:
Native IPv6 access
+
Sumber: http://wiki.openwrt.org/doc/uci/network6
  
For this, you need to obtain an IPv6 address from your ISP. Technically this could be a /128 prefix (exactly one IPv6 address), but according to rfc6177 this should be a /64 prefix. You may also get bigger range, like /56 or /48. Within this range you may use all the IPv6 addresses to your liking without any NAT-induced headaches.
 
  
Some of the ISPs currently known to support IPv6 to the customer are listed here: ipv6.isp.
+
==Barrier Breaker dan versi selanjutnya==
  
In the following example, the assigned prefix is 2001:123:456::/48. Within this prefix, I choose to affect the network 2001:123:456:789::/64 to the internal LAN. The router has the fixed IP 2001:123:456:789::1
+
* Native IPv6-support dengan DHCPv6, RA & DHCPv6-Server dan IPv6-firewall dapat di instalasi dan di konfigurasi secara default.
 +
* Teknologi transisi seperti 6in4, 6rd, 6to4 atau ds-lite dapat di instalasi menggunakan package dengan nama yang sama.
 +
* Dukungan WebUI dilakukan dengan instalasi package luci-proto-ipv6.
  
/etc/config/network:
+
==Implementasi==
config interface lan option ifname eth1 option type bridge option proto static option ipaddr 192.168.1.1 option netmask 255.255.255.0 option ip6addr '2001:123:456:789::1/64'
 
  
When using PPPoEv6, enable ipv6. You may also further reduce the MTU from 1492 to 1452: Experience shows that it prevents many problems. You can try to increase this size, not bigger than 1492.
+
Fitur
config interface wan option ifname eth0 option proto pppoe option username '<username>' option password '<password>' option keepalive 5 option defaultroute 1 option peerdns 1 option ipv6 1 option mtu 1452
 
6in4 tunneling
 
  
6in4 is a method to encapsulate IPv6 traffic into an IPv4 tunnel. It is mostly used by tunnel brokers and requires manual configuration.
+
* Penanganan Prefix
 +
** Manajemen prefix, address dan route dari sambungan upstream dan local ULA-prefix
 +
** Manajemen prefix dari unreachable-routes, prefix deprecation (RFC 7084) dan prefix class
 +
** Distribusi prefix ke downstream interface (termasuk size, ID dan class hints)
 +
** Kebijakan routing yang berbasis Source agar secara benar menangani interface multiple uplink, ingress policy filtering (RFC 7084)
  
A very excellent forum topic on the topic of a static 6in4 tunnels is at https://forum.openwrt.org/viewtopic.php?pid=126285
+
* Konfigurasi Native IPv6
 +
** Automatic bootstrap dari SLAAC, stateless DHCPv6, stateful DHCPv6, DHCPv6-PD dan kombinasi lainnya
 +
** Penanganan preferred dan valid address dan prefix lifetimes
 +
** Duplicate address dan pendeteksian Link-MTU
 +
** DHCPv6 Extension: Reconfigure, Information-Refresh, SOL_MAX_RT=3600
 +
** DHCPv6 Extension: RDNSS, DNS Search Domain, NTP, SIP, ds-lite, prefix exclusion (experimental)
  
Both resources assume a static prefix, and thus a manual configuration.
+
* IPv6 teknologi transisi
 +
** Setup dan manajemen dari IPv6-in-IPv4 tunnel (6rd, 6to4, 6in4)
 +
** Setup dan manajemen dari IPv4-in-IPv6 tunnel (ds-lite, lw4o6, map-e)
 +
** Setup dan manajemen dari IPv4-to-IPv6 translation (map-t, 464xlat CLAT) [sejak Chaos Calmer]
 +
** Automatic setup dari tunnel dari DHCP dan DHCPv6 [sejak Chaos Calmer]
  
The ISP known to use this are:
+
* Konfigurasi Downstream IPv6
 +
** Dukungan Server untuk Router Advertisement, DHCPv6 (stateless dan stateful) dan DHCPv6-PD
 +
** Deteksi Automatis untuk announced prefixes, delegated prefixes, default routes dan MTU
 +
** Ubah deteksi untuk prefix dan route untuk men-trigger pengiriman ulang dari RA dan DHCPv6-Reconfigure
 +
** Deteksi dari client hostname dan export sebagai augmented hosts-file
 +
** Dukungan untuk RA & DHCPv6-relaying dan NDP-proxying untuk, misalnya, dukungan uplink tanpa prefix delegation
  
    Free.fr (France)
+
==Compliance==
  
Requirements
+
OpenWRT berusaha untuk mengikuti RFC 7084 jika dimungkinkan. Walaupun complience belum di verifikasi secara penuh.
  
The package 6in4 must be installed to use this protocol. This package is available in Backfire 10.3.1-rc4 and later.
+
Persyaratan dari RFC 7084 saat ini di ketahui belum terpenuhi.RFC 7084 WAA-5 (SHOULD-requirement): NTP-Server yang di-request dan di-received saat ini tidak di process atau digunakan.
  
opkg update && opkg install 6in4
+
==Konfigurasi Upstream WAN-Interface==
  
Notes:
+
Pada bagian ini akan di terangkan cara konfigurasi sambungan IPv6 ke ISP atau ke upstream router. Perlu di catat bahwa sebagian besar mekanisme tunneling seperti 6in4, 6rd dan 6to4 tidak dapat beroperasi dibelakang NAT-router.
  
    Examples of 6in4 tunneling are also on the config/network page.
+
===Sambungan Native IPv6===
    For this connectivity mechanism, a third "interface" is created which will become the default outgoing interface for IPv6 packets.
 
  
Static 6in4 tunneling
+
Untuk sebuah uplink dengan sambungan native IPv6 kita dapat menggunakan contoh konfigurasi berikut. Konfigurasi ini dapat bekerja untuk uplink yang mendukung DHCPv6 dengan Prefix Delegation dan juga yang tidak mendukung DHCPv6-PD maupun DHCPv6 sama sekali (hanya SLAAC).
  
/etc/config/network for static tunneling:
+
/etc/config/network
config interface henet option proto 6in4 option ipaddr '178.24.115.19' option peeraddr '216.66.80.30' option ip6addr '2001:0db8:1f0a:1359::2/64'
+
 +
config interface wan
 +
        option ipv6 1 # hanya dibutuhkan untuk protocol yang berbasis PPP
 +
        ...
 +
 +
config interface wan6
 +
        option ifname  eth1 # gunakan nama ifname yang sama dengan di wan-section atau "@wan"
 +
        option proto    dhcpv6
 +
 +
config interface lan
 +
        option proto    static
 +
        option ip6assign 60
 +
        ...
  
Note: you may want to check that your public IP is matching the IP address on your WAN interface. Details in Static IPv6-in-IPv4 tunnel behind one-to-one NAT.
+
package odhcp6c harus di instalasi untuk bisa menggunakan dhcpv6.
Dynamic 6in4 tunneling
 
  
The example below illustrates a dynamic tunnel configuration for the Hurricane Electric broker with dynamic IP update enabled. The local IPv4 address is automatically determined and tunnelid, username and password are provided for IP update.
+
===Sambungan IPv6 Statik===
  
/etc/config/network for dynamic tunneling:
+
Konfigurasi statik untuk IPv6 uplink juga di dukung. Berikut adalah contoh caranya,
config interface henet option proto 6in4 option peeraddr '216.66.80.30' option ip6addr '2001:0db8:1f0a:1359::2/64' option tunnelid '12345' option username '14c4b06b824ec593239362517f538b29' option password '5f4dcc3b5aa765d61d8327deb882cf99'
 
  
In this example configuration:
+
vi /etc/config/network
 +
 +
config interface wan
 +
        option ifname  eth1
 +
        option proto    static
 +
        option ip6addr  2001:db80::2/64  # Address kita
 +
        option ip6gw    2001:db80::1      # Address Gateway
 +
        option ip6prefix 2001:db80:1::/48 # Prefix address untuk di distribusikan ke downstream interface
 +
        option dns      2001:db80::1      # DNS server
 +
 +
config interface lan
 +
        option proto    static
 +
        option ip6assign 60
 +
        ...
  
    178.24.115.10 is the local IPv4 address (assigned by ISP)
+
===6in4 tunnel (HEnet tunnelbroker, sixxs static tunnel, ...)===
    216.66.80.30 is the remote IPv4 address (the other side of the tunnel)
 
    2001:0db8:1f0a:1359::2/64 is the local IPv6 tunnel endpoint (labeled "Client IPv6 Address" on the Tunnel Details page in your HE account).
 
    tunnelid, username, and password are provided by the tunnel broker.
 
  
    :!: For Hurricane Electric tunnels, the username is NOT the username for tunnelbroker.net. The username is the user id listed on the main page of your tunnelbroker.net account (called the "API Key" elsewhere). The password is the md5 hash of the tunnelbroker.net password. For details, see https://ipv4.tunnelbroker.net/ipv4_end.php
+
6in4 tunnel biasanya diberikan oleh external tunnel provider seperti HE.net atau Sixxs. Kita dapat menggunakan contoh konfigurasi berikut sebagai dasar:
  
With Attitude Adjustment, once you have added the above interface definition you have to run /etc/init.d/network restart in order to have it effected.
+
/etc/config/network:
 +
 +
config 'interface' 'wan6'
 +
        option 'proto' '6in4'
 +
        option 'mtu' '1424'                          # IPv6 tunnel MTU (optional)
 +
        option 'peeraddr' '62.12.34.56'              # IPv4 tunnel endpoint
 +
        option 'ip6addr' '2001:DB8:2222:EFGH::2/64'  # IPv6 tunnel
 +
        option 'ip6prefix' '2001:DB8:1234:ABCD::/64' # Prefix yang di routed
 +
        # opsi konfigurasi di bawah hanya untuk HEnet tunnel. abaikan untuk tunnel yang lain.
 +
        option tunnelid '123456'  # HE.net tunnel id
 +
        option username 'username' # HE.net username, bukan User ID.
 +
        option password 'password' # HE.net password jika tidak menggunakan updatekey untuk tunnel
 +
        option updatekey 'updatekey' # HE.net updatekey pengganti password
 +
 +
config 'interface' 'lan'
 +
        option 'proto' 'static'
 +
        option ip6assign 60
 +
...
  
:!: Note that Hurricane Electric has changed their dynamic negotiation protocol, and the 6in4 package is not yet (August 2011) updated accordingly. See discussion in ticket 10019. Based on the discussion HE users need to install the wget package to get HTTPS support in wget and possibly also modify the URL in 6in4 script.
 
  
This tunnel, like a VPN, creates a third network interface, called henet in this example. A default IPv6 route using this interface is automatically created when this interface connects successfully.
+
Jika kita memilih nama tunnel-interface bukan 'wan6' maka pastikan untuk menambahkan nama interface ke network-option dari firewall-zone 'wan' di /etc/config/firewall.
Firewalling
 
  
:!: To apply IPv6 firewall rules to the tunnel interface, add it to the "wan" zone in /etc/config/firewall:
+
Package 6in4 harus di install untuk menggunakan 6in4-tunnel.
config 'zone' option 'name' 'wan' option 'network' 'wan henet' option 'input' 'REJECT' option 'forward' 'REJECT' option 'output' 'ACCEPT' option 'masq' '1'
 
  
:!: To allow 6in4 traffic to always reach your tunnel endpoint, it may be necessary to pass IPv4 protocol 41 traffic with the following firewall configuration stanza:
+
Catatan: HE.net mengalokasikan sebuah "updatekey" secara default untuk tunnel baru sejak Februari 2014.Jika kita menggunakan updatekey, kita perlu menggunakannya bukan password. Dukungan untuk opsi ini mulai di lakukan dalam OpenWRT trunk dari revisi r39646. Tunnel lama tanpa updatekey akan tetap dapat berjalan menggunakan password.
config rule option src wan option proto 41 option target ACCEPT
 
  
You will need the ip6tables package for these firewall rules to work. You can run the following command to install this package:
+
===6rd tunnel (Dukungan untuk Transisi ISP IPv6)===
  
opkg update && opkg install ip6tables kmod-ip6tables
+
6rd adalah sebuah mekanisme tunnel berbasis pada 6to4. Tidak seperti mekanisme tunneling lain, 6rd biasanya di berikan oleh ISP itu sendiri. Nilai dari tunnel biasanya di peroleh dengan DHCPv4 request untuk WAN interface.
  
Routing
+
Sejak OpenWRT Chaos Calmer dan selanjutnya, konfigurasi ini biasanya auto-detecte sehingga konfigurasi manual biasanya tidak dibutuhkan. Cukup instalasi package 6rd dan rebooting biasanya sudah cukup.
Routed Addresses
 
  
To enable routing of IPv6 traffic through the tunnel, add a static IPv6 address in a valid routed subnet to the local-facing interface.
+
/etc/config/network:
 +
 +
config interface 'wan'
 +
        option ifname 'eth0.2'
 +
        option proto 'dhcp'
 +
       
 +
        # The following two lines are only needed in Barrier Breaker
 +
        option iface6rd wan_6rd
 +
        option zone6rd wan
  
:!: For Hurricane Electric tunnels, the prefix for the routed subnet is specified in tunnel details page on tunnelbroker.net in the Routed IPv6 Prefixes section, and is formed by incrementing the last digit of the third quad in the tunneling prefix. For example, if the IP address 2001:0db8:1f0a:1359::2/64 is the local IPv6 tunnel endpoint, the local interface would be assigned an address in 2001:0db8:1f0b:1359::/64 subnet, typically 2001:0db8:1f0b:1359::1/64
+
Untuk 6rd via DHCP, pertama kali kita perlu men-cek jika parameter memang dikirim. Buat /etc/udhcpc.user dengan content berikut:
config interface lan option ifname eth0 option type bridge option proto static option ipaddr 192.168.1.1 option netmask 255.255.255.0 option ip6addr '2001:0db8:1f0b:1359::1/64'
 
  
Clients that auto-configure using SLAAC (stateless address auto-configuration) will need to know this routed prefix. To broadcast the prefix to clients on the local network, use radvd.
+
#!/bin/sh
Packet Forwarding
+
env >> /tmp/udhcpc.log
  
The router must be configured forward packets between the remote and local interfaces. See the Enable Routing section. The forwarding is enabled by default in trunk, but must be manually enabled in Backfire.
+
Reboot router dan cek log file, apakah ada kalimat kira-kira seperti berikut:
Enable Routing in Backfire
 
  
To forward packets between interfaces, a kernel-level setting must be enabled. To enable packet forwarding, edit /etc/sysctl.conf
+
ip6rd=16 40 2001:0838:ad00:0000:0000:0000:0000:0000 77.174.0.2
  
And uncomment the following line in /etc/sysctl.conf:
+
Jika kalimat tersebut tidak ada, kita perlu memperoleh nilai yang benar untuk peeraddr, ip6prefix, ip6prefixlen dan ip4prefixlen dari ISP kita. Nilai ip6rd di atas atau nilai yang kita peroleh dari ISP, dapat di tulis (hardcode) ke 6RD tunnel. Buang atau di-comment kalimat iface6rd dari wan section.
  
# net.ipv6.conf.all.forwarding=1
+
/etc/config/network
  
The line should look like this:
+
config interface 'wan6'
 +
        option proto '6rd'
 +
        option peeraddr '77.174.0.2'
 +
        option ip6prefix '2001:838:ad00::'
 +
        option ip6prefixlen '40'
 +
        option ip4prefixlen '16'
  
net.ipv6.conf.all.forwarding=1
+
Di Chaos Calmer dan Barrier Breaker default /etc/config/network akan bekerja setelah kita menginstalasi package 6rd. dhcpv6 akan di abaikan jika tidak berhasil.
  
Now restart sysctl to apply the new setting.
+
Jika kita memilih nama tunnel-interface bukan 'wan6' maka pastikan bahwa nama interface tersebut masuk ke network-option di firewall-zone 'wan' di /etc/config/firewall.
  
/etc/init.d/sysctl restart
+
Package 6rd harus di instalasi untuk menggunakan 6rd-tunnel.
  
To verify the setting has been applied, issue the following command:
 
  
cat /proc/sys/net/ipv6/conf/all/forwarding
 
  
should return 1
+
===6to4 tunnel===
  
Troubleshooting
+
6to4 adalah mekanisme IPv6 tunneling yang paling sederhana, yang menggantungkan diri pada gateway yang tersedia secara publik.
  
    Enable firewall logging
+
/etc/config/network:
    On the router, ping ipv6.google.com
+
    On a local host, ping the public IP address of the router's local interface (2001:0db8:1f0b:1359::1 in the example configuration).
+
config 'interface' 'wan6'
    On a local host, ping ipv6.google.com
+
        option 'proto' '6to4'
 +
 +
config 'interface' 'lan'
 +
        option 'proto' 'static'
 +
        option ip6assign 60
 +
...
  
6to4, 6rd
+
Jika kita memilih nama tunnel-interface bukan 'wan6' pastikan bahwa nama interface tersebut masuk ke network-option di firewall-zone 'wan' di /etc/config/firewall.
  
6to4 is a translation mechanism to transform ipv6 packets into IPv4, and back, using specific relay servers.
+
Package 6to4 harus di instalasi untuk menggunakan 6to4-tunnel.
  
6rd (rapid deployment) is similar to 6to4 with some restrictions for large ISP routing. However it is only supported in kernel superior or equal to 2.6.33 due to specific routing scheme.
+
===Dual-Stack Lite tunnel (ds-lite IPv4 in IPv6)===
  
In order for 6to4 to work, you need to install the package 6to4 and kmod-sit available from 10.03.1-rc4.
+
ds-lite adalah sebuah mekanisme transisi yang digunakan oleh ISP untuk mendukung IPv4-connectivity di atas sambungan native IPv6.
  
opkg install 6to4 kmod-sit
+
Di Chaos Calmer dan versi selanjutnya, konfigurasi ds-lite biasanya auto-detect sehingga konfigurasi manual tidak diperlukan. Cukup dengan menginstalasi package ds-lite dan reboot biasanya sudah cukup.
  
If, like me, you are working with 10.03, you can still install by downloading the package from the newer source.
+
/etc/config/network:
 +
 +
config 'interface' 'wan6'
 +
        option 'ifname' 'eth1'
 +
        option 'proto' 'dhcpv6'
 +
 +
config 'interface' 'wan'
 +
        option 'proto' 'dslite'
 +
        option 'peeraddr' '2001:db80::1' # ISP DS-Lite AFTR
  
opkg install http://downloads.openwrt.org/backfire/10.03.1-rc4/brcm47xx/packages/6to4_2-1_all.ipk
+
Jika kita memilih nama tunnel-interface bukan 'wan6' pastikan bahwa nama interface tersebut masuk ke network-option di firewall-zone 'wan' di /etc/config/firewall.
  
:!: Replace brcm47xx with the architecture you are working with.
+
Package ds-lite harus di instalasi untuk menggunakan ds-lite-tunnel.
  
For this connectivity mechanism, a third "interface" is created which will become the default outgoing interface for IPv6 packets.
+
==Konfigurasi Downstream LAN-Interface==
  
An example of /etc/config/network for the ISP "Qfast.nl", or any ISP for that matter, may be:
+
OpenWRT menyediakan mekanisme delegasi prefix local yang flexible. Ini dapat di aktifkan untuk masing-masing LAN-interface dengan 3 parameter yang masing-masing optional:
config interface 6rd option proto 6to4 option adv_subnet 1 # Selects the advertised /64 prefix, default 1 if not specified option adv_interface lan
 
  
Although there are many more options, most of those (like ipaddress and the advertising interface) are configured automatically by default. Just check out /etc/config/network and search for the paragraph 6to4.
+
* ip6assign: Prefix size digunakan untuk assigned prefix ke interface (contoh, 64 akan assign /64-prefixes)
 +
* ip6hint: Subprefix ID yang akan digunakan jika ada (contoh, 1234 dengan ip6assign 64 akan assign prefix :1234::/64)
 +
* ip6class: Filter untuk prefix class yang dapat di terima di interface (contoh, wan6 hanya akan assign prefix dengan kelas "wan6" tapi tidak untuk, misalnya, "local")
  
Even radvd and your lan interface is configured automatically by default by taking the lan interface and a /64 prefix of the external IP-range to be routed on. All you need to do is change the ignore 1 on the interface to ignore 0. Also remember to enable radvd (/etc/init.d/radvd enable) before doing ifup on the 6to4 interface. Otherwise the auto configuration of radvd will fail.
+
Setting ip6assign dan / atau ip6hint akan di abaikan jika subprefix yang di inginkan tidak bisa di assign. Dalam hal ini, OpenWrt akan pertama kali berusaha untuk mencoba assign sebuah prefix dengan panjang yang sama, tapi berbeda subprefix-ID. Jika ini gagal maka panjang prefix akan di kurangi sampai assignment sesuai dengan yang di inginkan. Jika ip6hint tidak di set maka ID sembarang akan di pilih. Setting ip6assign-parameter ke nilai < 64 akan membuat e DHCPv6-server untuk memberikan /64 pertama via DHCPv6-Prefix Delegation ke downstream router di Interface. Jika ip6hint tidak cocok dengan ip6assign yang diberikan dia akan membulatkan ke bawah ke nilai yang paling mungkin.
  
My /etc/config/radvd looks as follows:
+
Jika ip6class tidak di set maka semua prefix class akan di terima pada interface ini. Default class untuk sebuah prefix adalah interface-name (seperti "wan6") atau "local" untuk ULA-prefix. Ini dapat digunakan untuk memilih upstream interface dari mana subprefix akan di assigned. Untuk prefix yang diterima dari metoda dynamic-configuration seperti DHCPv6 sangat mungkin prefix-class tidak sama dengan source-interface tapi, misalnya, merupakan potongan dari nilai class prefix yang diberikan ISP.
config interface option interface 'lan' option AdvSendAdvert 1 option AdvManagedFlag 0 option AdvOtherConfigFlag 0 option ignore 0 config prefix option interface 'lan' # If not specified, a non-link-local prefix of the interface is used option prefix \'\' #These are supposed to be 2 single-quotes option AdvOnLink 1 option AdvAutonomous 1 option AdvRouterAddr 0 option ignore 1
 
  
To apply IPv6 firewall rules to the tunnel interface, add it to the "wan" zone in /etc/config/firewall:
+
/etc/config/network
config zone option name 'wan' option network 'wan 6rd' option input REJECT option forward REJECT option output ACCEPT option masq 1
+
 +
config globals globals
 +
        option ula_prefix fd00:db80::/48 
 +
 +
config interface wan6
 +
        option proto static
 +
        option ip6prefix 2001:db80::/56
 +
        ...
 +
 +
config interface lan
 +
        option proto static
 +
        option ip6assign 60
 +
        option ip6hint 10
 +
        ...
 +
 +
config interface guest
 +
        option proto static
 +
        option ip6assign 64
 +
        option ip6hint abcd
 +
        list ip6class wan6
 +
        ...
  
Add the following rules to your /etc/config/firewall to allow incoming encapsulated IPv6 packets:
+
Hasil dari konfigurasi di atas adalah:
config 'rule' option 'target' 'ACCEPT' option 'name' '6to4' option 'src' 'wan' option 'proto' '41'
 
  
This can also be done via the LuCI webinterface.
+
* LAN interface akan diberikan prefix 2001:db80:0:10::/60 dan fd00:db80:0:10::/60.
 +
* DHCPv6-server dapat memberikan ke dua prefixes kecuali 2001:db80:0:10::/64 dan fd00:db80:0:10::/64 ke downstream router di LAN via DHCPv6-PD.
 +
* guest interface hanya akan di assinged prefix 2001:db80:0:abcd::/64 karena class filter.
  
(note: option 'target' 'DROP' stealthed the tunnel; did this along along with dropping UDP and ICMP on the UCI firewall configuration)
+
==Router Advertisement & DHCPv6==
TSP Tunneling
 
  
The Tunnel Setup Protocol is used by some tunnel brokers. Gogo6 (ex Freenet6) is one of the most popular and offers free service for individuals.
+
OpenWRT dapat memberikan RA & DHCPv6 server dan relay. Secara default SLAAC, stateless dan stateful DHCPv6 di enable di sebuah interface. Jika ada prefix yang besarnya /64 atau lebih besar maka address yang akan di berikan dari masing-masing prefix. Jika semua prefix di sebuah interface mempunyai besar lebih dari /64 maka DHCPv6-Prefix Delegation akan diaktifkan untuk downstream-router. Jika sebuah default route ada, router akan advertise dirinya sebagai default router pada interface.
  
:!: The packages gw6c and kmod-sit must be installed to use this protocol (e.g.: opkg update && opkg install gw6c kmod-sit).
+
OpenWRT juga mampu mendetek jika tidak ada prefix yang tersedia dari upstream interface dan dapat switch ke mode relay secara automatis untuk meng-extend konfigurasi dari upstream interface ke downstream interface. Hal ini sangat bermanfaat untuk meletakan OpenWRT dibelakang IPv6-router yang tidak memberikan prefix via DHCPv6-PD.
  
gw6c is configured through a specific config file: /etc/config/gw6c.
+
Contoh bagian konfigurasi untuk SLAAC + DHCPv6 server mode (/etc/config/dhcp)
  
First create a free account on freenet6 here then procede to fill gw6c configuration file on your router.
+
config dhcp lan
 +
    option dhcpv6 server
 +
    option ra server
  
The example below assumes the user have an account, required to redistribute a prefix on a LAN. The userid/passwd fields must be filled with the above registration credentials.
+
Contoh bagian konfigurasi untuk SLAAC saja (/etc/config/dhcp)
config gw6c basic #Comment out next line to enable gw6c option disabled 0 #Leave empty if connecting anonymously option userid <YOURFREENET6USERID> option passwd <YOURFREENET6PASSWD> #For anonymous use anon.frenet6.net and #account holders should use broker.freenet6.net option server authenticated.freenet6.net #auth_method <anonymous|any|passds-3des-1|digest-md5|plain> #Use anonymous with anonymous access and #any if you are account holder option auth_method any config gw6c routing #host_type <host|router> option host_type router option prefixlen 64 option ifprefix br-lan :!: prefixlen 64 did not work for me; prefixlen 56 works ! #DNS server list to which the reverse prefix #will be delegated. Separate servers with : option dns_server config gw6c advanced #Location where to store configuration file option gw6c_conf /tmp/gw6c.conf option gw6c_dir /usr/share/gw6c option auto_retry yes option retry_delay 30 option keepalive yes #keepalive interval option interval 30 #tunnel_mode <v6v4|v6udpv4|v6anyv4|v4v6> option if_tunnel_mode v6anyv4 option if_v6v4 sit1 option if_v6udpv4 tun option if_v4v6 sit0 option client_v4 auto option client_v6 auto option template openwrt option proxy_client no config gw6c broker option broker_list /etc/config/gw6c-broker-list.txt option last_server /etc/config/gw6c-last-server.txt # Always use last known working server? <yes|no> option always_same_serv no config gw6c logging option log_console 0 option log_stderr 1 option log_file 1 #optional, good for debugging option log_syslog 0 option log_filename /var/log/gw6c.log option log_rotation yes #Max size when using log file rotation #possible values: 16|32|128|1024 option log_maxsize 32 #<USER|LOCAL[0-7]> option syslog_facility USER
 
  
:!: When installed the program gw6c takes care of a lot of details itself, including radvd configuration : In this case, manual radvd configuration is not requiered: The /etc/config/radvd must be kept disabled.
+
config dhcp lan
 +
    option dhcpv6 disabled
 +
    option ra server
  
Start Gateway6 client with the following command: /etc/init.d/gw6c start
+
Contoh bagian konfigurasi untuk relay (/etc/config/dhcp)
Auto-start after Openwrt booted up: /etc/init.d/gw6c enable
 
Use /etc/init.d/gw6c with reload or restart to load the latest config file.
 
  
:!: Untested - Please correct as needed
+
config dhcp wan6
 +
    option dhcpv6 relay
 +
    option ra relay
 +
    option ndp relay
 +
    option master 1
 +
 +
config dhcp lan
 +
    option dhcpv6 relay
 +
    option ra relay
 +
    option ndp relay
  
:!: In newest ATTITUDE ADJUSTMENT dependencies might be broken. You might have to check manually if the Packet kmod-sit gets instaleld. If it is missing radvd startscript will fail: INTERFACE_SETUP_FAILED.
+
Package odhcpd harus di instalasi untuk dapat memberikan layanan ini.
NAT64 tunneling
 
  
The NAT64 is one technique to provide to the user a routable ipv6 while using a NAT technique to keep access top IPv4 websites (The client may NOT have a routable IPv4 anymore).
+
==Routing Mangement==
  
Some ISP are experimenting this: AAISP (UK)
+
OpenWRT menggunakan source-address dan source-interface sebagai dasar untuk policy-routing system. Teknik ini dibutuhkan agar dapat secara benar menangani berbagai uplink interface. Setiap delegated prefix akan ditambahkan dengan unreachable route untuk menghindari IPv6-routing loops.
  
:!: to be completed - please help ?
+
Untuk menentukan status dari route, kita dapat melihat informasi yang diberikan oleh ifstatus.
Propagate IPv6 subnet to LAN
 
  
Once IPv6 works on the router, it is necessary to spread it on the internal network. Multiple methods are possible, from static routing to auto-configuration. For the later, two options described below exist. Note that when using static WAN connection, you need to add lines
+
Contoh (ifstatus wan6):
  
option accept_ra 1
+
...
option send_rs 0
+
"ipv6-address": [
 +
        {
 +
                "address": "2001:db80::a00:27ff:fe67:cd9c",
 +
                "mask": 64,
 +
                "preferred": 1681,
 +
                "valid": 7081
 +
        }
 +
],
 +
"ipv6-prefix": [
 +
        {
 +
                "address": "2001:db80:0:100::",
 +
                "mask": 56,
 +
                "preferred": 86282,
 +
                "valid": 86282,
 +
                "class": "wan6",
 +
                "assigned": {
 +
                        "lan": {
 +
                                "address": "2001:db80:0:110::",
 +
                                "mask": 60
 +
                        }
 +
                  }
 +
          }
 +
],
 +
"route": [
 +
        {
 +
                "target": "2001:db80::",
 +
                "mask": 48,
 +
                "nexthop": "fe80::800:27ff:fe00:0",
 +
                "metric": 1024,
 +
                "valid": 7081
 +
          },
 +
        {
 +
                "target": "::",
 +
                "mask": 0,
 +
                "nexthop": "fe80::800:27ff:fe00:0",
 +
                "metric": 1024,
 +
                "valid": 7081
 +
        }
 +
],
 +
...
  
to config interface wan section of your /etc/config/network.
+
Interpretasinya adalah:
RADVD
 
  
The router advertisement daemon (radvd) is fully supported by OpenWRT. Please consult the radvd UCI page, for a full complement of configuration options.
+
* Pada interface ada 2 route yang diberikan: 2001:db80::/48 dengan default-route via router fe80::800:27ff:fe00:0.
 +
* route ini hanya dapat digunakan oleh traffic yang dibuat secara lokal dan traffic dengan source-address yang benar, yaitu dari local address atau dari address yang diberikan oleh delegated prefix.
  
To begin with, install RADVD with:
+
OpenWRT menambahkan IPv6-route (seperti default routes) ke routing-table yang spesifik dan tidak ke main-table oleh karenanya mereka tidak akan terlihat secara default. Kita dapat menggunakan perintah ip -6 untuk melihat semua kebijakan routing yang ada.
  
opkg update && opkg install radvd
+
==Migrasi dari Attitude Adjustment 12.09 atau sebelumnya==
  
The simplest case is static IPv6 affectation:
+
===IPv6 Forwarding===
  
/etc/config/radvd:
+
Untuk memastikan IPv6 forwarding bekerja dengan benar, cek /etc/sysctl.conf berisi entri berikut:
config interface option interface 'lan' option AdvSendAdvert 1 option AdvLinkMTU 1452 # Optional - only provide if it is also provided in /etc/config/network option ignore 0 # Or delete the line altogether config prefix option interface 'lan' # Optional: only necessary if the lan interface has multiple # global IP addresses assigned to it; or the subnet is larger than /64 option prefix '2001:123:456:789::/64' # Optional option ignore 0 # Or delete the line altogether config 'rdnss' option 'interface' 'lan'
 
  
This configuration is sufficient to enable radvd on the router, and broadcast auto-configuration announces (default routes and dns servers) to the clients on LAN.
+
net.ipv6.conf.default.forwarding=1
 +
net.ipv6.conf.all.forwarding=1
  
The MTU specified MUST be identical to the one set in the /etc/config/network section, if provided. If you're connecting through a tunnel, ensure that your MTU matches that of your tunnel. Otherwise, do not provide it.
+
===Konfigurasi Downstream untuk LAN-Interface===
  
Don't forget to enable radvd at boot. You can do this in the LuCI web interface at Administration → Services → Initscripts. Look for radvd and check whether it is enabled. To enable radvd at boot and to start radvd right now without rebooting, do
+
Sangat tidak di sarankan untuk menggunakan ip6addr untuk menset address / prefix di downstream interface (seperti lan) karena ini akan mudah menyebabkan konflik dengan local address delegation. Hal ini juga mungkin akan menyebabkan hasil yang tidak di inginkan atau rusak karena source-based policy-routing yang digunakan di IPv6-stack.
  
/etc/init.d/radvd enable
+
Mohon menggunakan opsi baru ip6assign dan ip6hint .
/etc/init.d/radvd start
 
  
use logread to check for start up messages
+
Contoh: kita ingin prefix yang didelegasikan 2001:db80:1234::/48 dan kita ingin LAN interface kita mempunyai subprefix 2001:db80:1234:5678::/64 kita dapat menggunakan konfigurasi berikut:
wide-dhcpv6-server
 
  
This shows you how to set up DHCPv6 so that LAN clients have their IPv6 addresses from a pool, instead of concatenating random numbers, or some function of their MAC address, with your prefix.
+
config 'interface' 'lan'
 +
        option 'proto' 'static'
 +
        option 'ip6assign' '64'
 +
        option 'ip6hint' '5678'
 +
        ...
  
First, you need to install a DHCPv6 server
+
Jika router dapat ping6 ke internet, tapi mesin di lan memperoleh error "Destination unreachable: Unknown code 5" atau "Source address failed ingress/egress policy" maka opsi ip6assign tidak ada di lan interface anda.
  
opkg update && opkg install wide-dhcpv6-server
+
===Router Advertisement & DHCPv6===
  
Now enable the server in /etc/config/dhcp6s
+
Penggunaan radvd saat ini menjadi keharusan. Layanan 6relayd digunakan untuk Router Advertisement dan DHCPv6 dan mengambil address dari interface secara automatis.
config 'dhcp6s' 'basic' option 'enabled' '1' option 'interface' 'br-lan' option 'config_file' '/etc/dhcp6s.conf'
 
  
Then create a config file /etc/dhcp6s.conf with something like:
+
===Upstream Configuration for WAN-Interfaces===
interface br-lan { address-pool pool1 86400; }; pool pool1 { range 2001:123:456:789::1000 to 2001:123:456:789::2000 ; };
 
  
This allocates addresses from a pool of 4096 with a lease time of 24 hours.
+
====Perubahan Generik====
  
If you will need static IPv6 (::3000) assigned to host you can specify this with something like:
+
Router Advertisement tidak akan di terima secara defauly oleh karenanya OpenWRT tidak akan mengkonfigurasi diri sendiri dengan route default dan / atau address. Jika opsi interface accept_ra dan send_rs sudah dibuang. Kita harus menambahkan sebuah interface dengan proto dhcpv6 - juga untuk menerima RA saja.
host somehostname { duid 00:01:02:03:04:05:06:07:08:09:10:11:12:13; address 2001:123:456:789::3000 infinity; };
 
  
Where duid is DHCPv6 Client DUID (can be found in Windows at "ipconfig /all" for example).
+
====6in4 tunnel dan sambungan Statik IPv6====
  
Finally, you need to change some radvd settings so that it tells clients to use DHCPv6 to get the rest of their settings:
+
Saat ini perlu untuk menambah routed-prefix kita (misalnya  routed /48 dari tunnel kita) sebagai opsi ip6prefix ke tunnel/static-interface di /etc/config/network. Jika kita membuang opsi ini lan-client tidak akan bisa mencapai Internet.
config interface option interface 'lan' option AdvSendAdvert 1 option AdvManagedFlag 1 option AdvOtherConfigFlag 1 option ignore 0
 
  
Then restart the services and you're away (hopefully!)
+
Contoh:
troubleshooting
 
  
If ps does not show dhcp6s running then you can run it interactively:
+
config 'interface' 'wan6'
dhcp6s -s /etc/dhcp6s.conf -d -f -D br-lan
+
        option 'proto' '6in4'
 +
        option 'peeraddr' '62.12.34.56
 +
        option 'ip6addr' '2001:DB8:2222:EFGH::2/64'
 +
        option 'ip6prefix' '2001:DB8:1234:ABCD::/64' # <- routed prefix kita
 +
        ...
  
(where br-lan is your local lan interface). Things to check include:
+
====6rd dan 6to4 tunnel====
 
 
    the network interface (br-lan in the above) does not match
 
    typos in /etc/dhcp6s.conf
 
 
 
dnsmasq-dhcpv6
 
This feature is new and not yet supported by UCI. You will need Attitude Adjustment to make this work.
 
 
 
We can use DHCPv6 enabled version of dnsmasq for:
 
 
 
    Router advertisement
 
    Configuration of clients
 
        SLAAC
 
        DHCPv6
 
 
 
With dnsmasq-dhcpv6 you will replace dnsmasq, radvd or wide-dhcpv6-server, depending on your current configuration.
 
 
 
opkg remove dnsmasq
 
opkg update && opkg install dnsmasq-dhcpv6
 
 
 
Once we have dnsmasq-dhcpv6 installed we need to enable router advertisement and choose in what mode we want to configure clients. For details on modes, see dnsmasq man page. The modes are:
 
 
 
    ra-only
 
    slaac
 
    ra-names
 
    ra-stateless
 
 
 
Since there is not UCI support yet, we have to add the configuration manually to /etc/dnsmasq.conf file. Configuration in this file is merged with the UCI generated config.
 
 
 
dhcp-range=2001:0db8:1f0b:1359::,ra-names
 
enable-ra
 
 
 
The dhcp-range option defines IPv6 prefix used by clients and configuration mode, here ra-names (SLAAC). Last line enables router advertisement.
 
Troubleshooting
 
 
 
    Your client's global unique IPv6 address has to be generated in SLAAC mode using modified EUI-64 method. Correct address look like this:
 
 
 
        2001:0db8:1f0b:1359:021d:baff:fe06:3764
 
 
 
        in case your client's MAC address is 00:1D:BA:06:37:64.
 
        If your address isn't EUI-64 based, you should disable privacy extensions for your global unique IPv6 address.
 
    The global unique IPv6 address has to be pingable from your router. SSH into your router and run:
 
 
 
        ping 2001:0db8:1f0b:1359:021d:baff:fe06:3764
 
 
 
        In case you can't ping it, its probably your client's firewall blocking ICMPv6 Echo Requests from 2001:0db8:1f0b:1359::/64 network. You need to make accept rule in the firewall. Note that despite you have no problem to ping fe80::021d:baff:fe06:3764%br-lan, you still have to create the accept rule for the mentioned network.
 
 
 
To see if it works, follow these steps:
 
 
 
    Add log-dhcp entry to /etc/dnsmasq.conf config file.
 
    Restart dnsmasq with /etc/init.d/dnsmasq restart.
 
    See if dnsmasq obtained the ping confirmation, and thus was able to add AAAA record to its DNS cache.
 
 
 
        logread | grep "SLAAC-CONFIRM"
 
 
 
        This may return something like this if everything is working fine:
 
 
 
        Jul 1 12:00:00 openwrt daemon.info dnsmasq-dhcp[1957]: SLAAC-CONFIRM(br-lan) 2001:0db8:1f0b:1359:021d:baff:fe06:3764 pc
 
 
 
Directly forward ISP's NDP proxy address to LAN
 
 
 
It can help you, if your ISP give you /64 IPv6 address and radvd,dhcpv6 useless for you. Original idea by user (diway) from openwrt forum This method idea is: bridge wan and lan with filter ipv6 packets options, for direct resolve your adress from provider(ISP).
 
 
 
    Remove (radvd,dhcpv6,dnsmasqv6)or others that you install early when tryed methods above. And remove that options that you do at configuration files /etc/config/network or otherone (repair "before ipv6 state" of your deivce).
 
    Install ipv6 support and ebtables(if you haven't it at your repository, try beta or svn):
 
 
 
opkg update && opkg install kmod-ipv6 ebtables
 
 
 
1. At first determine your WAN interface device name, and correct comands below(change eth0.1 to your WAN device name). Edit /etc/init.d/network, at end of start() section add thoose lines:
 
ebtables -t broute -A BROUTING -i eth0.1 -p ! ipv6 -j DROP brctl addif br-lan eth0.1
 
 
 
2. At /etc/config/network, make thoose:
 
 
 
Add this on the "config interface lan" section
 
option accept_ra 1 option send_rs 1
 
 
 
Add this on the "config interface wan" section
 
option accept_ra 0 option send_rs 0
 
 
 
3. At /etc/config/firewall, make thoose:
 
 
 
Add this to the "config defaults" section
 
option disable_ipv6 0
 
 
 
4. At /etc/sysctl.conf, make thoose:
 
 
 
Add this at the end to enable firewalling on ipv6 even for bridged interfaces
 
net.bridge.bridge-nf-call-ip6tables=1 net.bridge.bridge-nf-call-iptables=0
 
 
 
5. If you need IPv6 firewalling ONLY! First install:
 
opkg update && opkg install kmod-ip6tables ip6tables
 
 
 
Then correct comands below(change eth0.1 to your WAN device name). At /etc/firewall.user, add thoose lines:
 
# First, delete all: ip6tables -F ip6tables -X # Allow anything on the local link ip6tables -A INPUT -i lo -j ACCEPT ip6tables -A OUTPUT -o lo -j ACCEPT # Allow anything out on the internet ip6tables -A OUTPUT -o eth0.1 -j ACCEPT # Allow Link-Local addresses ip6tables -A INPUT -s fe80::/10 -j ACCEPT ip6tables -A OUTPUT -s fe80::/10 -j ACCEPT # Allow multicast ip6tables -A INPUT -s ff00::/8 -j ACCEPT ip6tables -A OUTPUT -s ff00::/8 -j ACCEPT # Allow ICMPv6 ip6tables -A INPUT -p icmpv6 –icmpv6-type echo-request -j ACCEPT –match limit –limit 30/minute ip6tables -A INPUT -p icmpv6 -j ACCEPT ip6tables -A OUTPUT -p icmpv6 -j ACCEPT ip6tables -A FORWARD -p icmpv6 -m physdev ! –physdev-in eth0.1 -j ACCEPT ip6tables -A FORWARD -p icmpv6 –icmpv6-type echo-request -m physdev –physdev-in eth0.1 -j ACCEPT ip6tables -A FORWARD -p icmpv6 –icmpv6-type echo-reply -m physdev –physdev-in eth0.1 -j ACCEPT ip6tables -A FORWARD -p icmpv6 –icmpv6-type neighbor-solicitation -m physdev –physdev-in eth0.1 -j ACCEPT ip6tables -A FORWARD -p icmpv6 –icmpv6-type neighbor-advertisement -m physdev –physdev-in eth0.1 -j ACCEPT ip6tables -A FORWARD -p icmpv6 –icmpv6-type router-advertisement -m physdev –physdev-in eth0.1 -j ACCEPT # Allow forwarding ip6tables -A FORWARD -m state –state NEW -m physdev ! –physdev-in eth0.1 -j ACCEPT ip6tables -A FORWARD -m state –state NEW -p tcp –dport 22 -m physdev –physdev-in eth0.1 -j ACCEPT ip6tables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT ip6tables -N DROP ip6tables -A DROP -j REJECT –reject-with icmp6-port-unreachable # Set the default policy ip6tables -A INPUT -j DROP ip6tables -A FORWARD -j DROP ip6tables -A OUTPUT -j DROP
 
 
 
That's all, reboot your router. After check your LAN PCs and roters WAN ipv6 address.
 
DNS check and configuration
 
 
 
If you can do a succesful ping6 ipv6.google.com from the router, then obviously your DNSmasq succesfully queries the IPv6 address, and you have IPv6 connectivity.
 
 
 
Congratulations!!!
 
 
 
Though, if you can't do the ping6 above, though you can do a ping6 [2a00:1450:8002::93], then your DNSmasq (or the server from which it queries) does not succesfully query the IPv6 addresses, and you need to fix this problem.
 
 
 
(TBD)
 
IPv6 only access
 
 
 
:!: (Using an intermediate machine to contact IPv4-only servers)
 
 
 
(TBD)
 
NAT64
 
 
 
TAYGA is an out-of-kernel stateless NAT64 implementation for Linux that uses the TUN driver to exchange IPv4 and IPv6 packets with the kernel.
 
 
 
First, install tayga:
 
 
 
opkg update && opkg install tayga
 
 
 
Now, create NAT64 interface:
 
config interface nat64 option proto tayga option ipv4_addr 192.0.2.1 option ipv6_addr 2001:db8:1::7f00:1 option prefix 64:ff9b::/96 option dynamic_pool 192.0.2.0/24 option accept_ra 0 option send_rs 0
 
 
 
where 192.0.2.0/24 is your dynamic pool, 64:ff9b::/96 is "unused /96 prefix" and 2001:db8:1::/64 is your IPv6 prefix used in LAN.
 
 
 
Don't forget to add this interface to LAN firewall zone.
 
 
 
ifup tayga && ping6 64:ff9b::8.8.8.8
 
 
 
DNS64
 
 
 
DNS64 is a special mechanism, that returns AAAA records for hosts that only have A records. ATTENTION! This breaks DNSSEC!
 
 
 
ISC bind supports DNS64 since version 9.8.0.
 
 
 
opkg update && opkg install bind-server bind-host
 
 
 
Modify default configuration (/etc/bind/named.conf):
 
acl rfc1918 { 10/8; 192.168/16; 172.16/12; }; options { directory "/tmp"; auth-nxdomain no; # conform to RFC1035 allow-query { localnets; localhost; }; listen-on { any; }; listen-on-v6 { any; }; dns64 64:ff9b::/96 { clients { any; }; mapped { !rfc1918; any; }; exclude { 64:ff9b::/96; ::ffff:0000:0000/96; }; suffix ::; }; edns-udp-size 512; max-udp-size 512; };
 
 
 
# /etc/init.d/bind restart
 
 
 
Point your resolver to 127.0.0.1 (or ::1) and try it:
 
# host www.ru www.ru has address 194.87.0.50 www.ru has IPv6 address 64:ff9b::c257:32 www.ru mail is handled by 5 hq.demos.ru. # host www.kame.net www.kame.net is an alias for orange.kame.net. orange.kame.net has address 203.178.141.194 orange.kame.net has IPv6 address 2001:200:dff:fff1:216:3eff:feb1:44d7
 
 
 
Normal AAAA records are returned for hosts that have it and translated ones for those who don't.
 
NAT-PT
 
DSTM
 
Privacy Extensions
 
Microsoft Windows
 
 
 
Privacy extensions are enabled by default. Correct working of some services sometimes require disabling part or all privacy extensions.
 
Disabling privacy extensions for global IPv6 addresses
 
 
 
With this settings the Windows client will obtain modified EUI-64 global unique address, while it will also generate global temporary IPv6 address. This is recommended setup, because you only make public your MAC address, but your privacy is retained (you won't be easily traceable by your IP).
 
 
 
    One time settings (reseted with reboot):
 
 
 
        netsh interface ipv6 set global randomizeidentifiers=disabled store=active
 
 
 
    Permanent settings:
 
 
 
        netsh interface ipv6 set global randomizeidentifiers=disabled store=persistent
 
 
 
    Current settings can be viewed with:
 
 
 
        netsh interface ipv6 show global store=active
 
        netsh interface ipv6 show global store=persistent
 
 
 
Disabling privacy extensions for all IPv6 addresses
 
 
 
This settings disables all privacy extensions. Your global unique IPv6 address will be generated using modified EUI-64 method and your global temporary IPv6 address will be disabled. Your MAC address is made public and :!: you will be easily traceable.
 
 
 
    One time settings (reseted with reboot):
 
 
 
        netsh interface ipv6 set privacy state=disabled store=active
 
 
 
    Permanent settings:
 
 
 
        netsh interface ipv6 set privacy state=disabled store=persistent
 
 
 
    Current settings can be viewed with:
 
 
 
        netsh interface ipv6 show privacy store=active
 
        netsh interface ipv6 show privacy store=persistent
 
 
 
Notes
 
 
 
    http://www.heise.de/netze/artikel/OpenWRT-wuerfelt-IPv6-Praefixe-1445607.html
 
    http://andatche.com/blog/2012/02/disabling-rfc4941-ipv6-privacy-extensions-in-windows/
 
 
 
Packet filter
 
 
 
    → to configure the UCI config file /etc/config/firewall see there. IPv6 rules can be set up with this alone.
 
    → to set up a firewall without UCI please read netfilter, especially ip6tables and ipv6
 
 
 
Warning No1: There is no NAT in IPv6. While NAT was never intended as a security feature, it did nonetheless serve as one, because unless you specified portforwardings the ports were unavailable. However, the same level of security can be achieved by setting the policies to DROP and inserting -j ACCEPT -m conntrack –ctstate ESTABLISHED,RELATED at the beginning of the chains.
 
Warning No2: IPv6 specs demand, that Path MTU Discovery is working correctly because a packet fragmentation is not being performed! So if you configure your packet filter like an imbecile and drop all ICMPv6 packets without distinguishing, you will break this functionality and funny things will occur! Cf. → RFC4890 – ICMPv6 Filtering Recommendations
 
Note: firewall v1 (e.g. still in Backfire 10.03.1-rc4 and up to r25353) has no default rules at all and ip6tables configuration needs to be done from scratch. Insert the rules below to make the packet filter function properly.
 
 
 
ip6tables -A FORWARD -i br-lan -j ACCEPT
 
ip6tables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 
ip6tables -A FORWARD -j REJECT
 
  
 +
Public address prefix kita akan di hitung secara automatis dan akan dikirim ke network subsystem (netifd). Kita perlu mengikuti saran untuk konfigurasi lan-interface.
  
 
==Referensi==
 
==Referensi==
  
* http://wiki.openwrt.org/doc/howto/ipv6
+
* http://wiki.openwrt.org/doc/uci/network6

Latest revision as of 09:27, 13 July 2015

Sumber: http://wiki.openwrt.org/doc/uci/network6


Barrier Breaker dan versi selanjutnya

  • Native IPv6-support dengan DHCPv6, RA & DHCPv6-Server dan IPv6-firewall dapat di instalasi dan di konfigurasi secara default.
  • Teknologi transisi seperti 6in4, 6rd, 6to4 atau ds-lite dapat di instalasi menggunakan package dengan nama yang sama.
  • Dukungan WebUI dilakukan dengan instalasi package luci-proto-ipv6.

Implementasi

Fitur

  • Penanganan Prefix
    • Manajemen prefix, address dan route dari sambungan upstream dan local ULA-prefix
    • Manajemen prefix dari unreachable-routes, prefix deprecation (RFC 7084) dan prefix class
    • Distribusi prefix ke downstream interface (termasuk size, ID dan class hints)
    • Kebijakan routing yang berbasis Source agar secara benar menangani interface multiple uplink, ingress policy filtering (RFC 7084)
  • Konfigurasi Native IPv6
    • Automatic bootstrap dari SLAAC, stateless DHCPv6, stateful DHCPv6, DHCPv6-PD dan kombinasi lainnya
    • Penanganan preferred dan valid address dan prefix lifetimes
    • Duplicate address dan pendeteksian Link-MTU
    • DHCPv6 Extension: Reconfigure, Information-Refresh, SOL_MAX_RT=3600
    • DHCPv6 Extension: RDNSS, DNS Search Domain, NTP, SIP, ds-lite, prefix exclusion (experimental)
  • IPv6 teknologi transisi
    • Setup dan manajemen dari IPv6-in-IPv4 tunnel (6rd, 6to4, 6in4)
    • Setup dan manajemen dari IPv4-in-IPv6 tunnel (ds-lite, lw4o6, map-e)
    • Setup dan manajemen dari IPv4-to-IPv6 translation (map-t, 464xlat CLAT) [sejak Chaos Calmer]
    • Automatic setup dari tunnel dari DHCP dan DHCPv6 [sejak Chaos Calmer]
  • Konfigurasi Downstream IPv6
    • Dukungan Server untuk Router Advertisement, DHCPv6 (stateless dan stateful) dan DHCPv6-PD
    • Deteksi Automatis untuk announced prefixes, delegated prefixes, default routes dan MTU
    • Ubah deteksi untuk prefix dan route untuk men-trigger pengiriman ulang dari RA dan DHCPv6-Reconfigure
    • Deteksi dari client hostname dan export sebagai augmented hosts-file
    • Dukungan untuk RA & DHCPv6-relaying dan NDP-proxying untuk, misalnya, dukungan uplink tanpa prefix delegation

Compliance

OpenWRT berusaha untuk mengikuti RFC 7084 jika dimungkinkan. Walaupun complience belum di verifikasi secara penuh.

Persyaratan dari RFC 7084 saat ini di ketahui belum terpenuhi.RFC 7084 WAA-5 (SHOULD-requirement): NTP-Server yang di-request dan di-received saat ini tidak di process atau digunakan.

Konfigurasi Upstream WAN-Interface

Pada bagian ini akan di terangkan cara konfigurasi sambungan IPv6 ke ISP atau ke upstream router. Perlu di catat bahwa sebagian besar mekanisme tunneling seperti 6in4, 6rd dan 6to4 tidak dapat beroperasi dibelakang NAT-router.

Sambungan Native IPv6

Untuk sebuah uplink dengan sambungan native IPv6 kita dapat menggunakan contoh konfigurasi berikut. Konfigurasi ini dapat bekerja untuk uplink yang mendukung DHCPv6 dengan Prefix Delegation dan juga yang tidak mendukung DHCPv6-PD maupun DHCPv6 sama sekali (hanya SLAAC).

/etc/config/network

config interface wan
        option ipv6 1 # hanya dibutuhkan untuk protocol yang berbasis PPP
        ...

config interface wan6
        option ifname   eth1 # gunakan nama ifname yang sama dengan di wan-section atau "@wan"
        option proto    dhcpv6 

config interface lan
        option proto    static
        option ip6assign 60
        ...

package odhcp6c harus di instalasi untuk bisa menggunakan dhcpv6.

Sambungan IPv6 Statik

Konfigurasi statik untuk IPv6 uplink juga di dukung. Berikut adalah contoh caranya,

vi /etc/config/network

config interface wan
        option ifname   eth1
        option proto    static
        option ip6addr  2001:db80::2/64   # Address kita
        option ip6gw    2001:db80::1      # Address Gateway
        option ip6prefix 2001:db80:1::/48 # Prefix address untuk di distribusikan ke downstream interface
        option dns      2001:db80::1      # DNS server

config interface lan
        option proto    static
        option ip6assign 60
        ...

6in4 tunnel (HEnet tunnelbroker, sixxs static tunnel, ...)

6in4 tunnel biasanya diberikan oleh external tunnel provider seperti HE.net atau Sixxs. Kita dapat menggunakan contoh konfigurasi berikut sebagai dasar:

/etc/config/network:

config 'interface' 'wan6'
        option 'proto' '6in4'
        option 'mtu' '1424'                          # IPv6 tunnel MTU (optional)
        option 'peeraddr' '62.12.34.56'              # IPv4 tunnel endpoint
        option 'ip6addr' '2001:DB8:2222:EFGH::2/64'  # IPv6 tunnel 
        option 'ip6prefix' '2001:DB8:1234:ABCD::/64' # Prefix yang di routed
        # opsi konfigurasi di bawah hanya untuk HEnet tunnel. abaikan untuk tunnel yang lain.
        option tunnelid '123456'   # HE.net tunnel id
        option username 'username' # HE.net username, bukan User ID.
        option password 'password' # HE.net password jika tidak menggunakan updatekey untuk tunnel
        option updatekey 'updatekey' # HE.net updatekey pengganti password

config 'interface' 'lan'
        option 'proto' 'static'
        option ip6assign 60
...


Jika kita memilih nama tunnel-interface bukan 'wan6' maka pastikan untuk menambahkan nama interface ke network-option dari firewall-zone 'wan' di /etc/config/firewall.

Package 6in4 harus di install untuk menggunakan 6in4-tunnel.

Catatan: HE.net mengalokasikan sebuah "updatekey" secara default untuk tunnel baru sejak Februari 2014.Jika kita menggunakan updatekey, kita perlu menggunakannya bukan password. Dukungan untuk opsi ini mulai di lakukan dalam OpenWRT trunk dari revisi r39646. Tunnel lama tanpa updatekey akan tetap dapat berjalan menggunakan password.

6rd tunnel (Dukungan untuk Transisi ISP IPv6)

6rd adalah sebuah mekanisme tunnel berbasis pada 6to4. Tidak seperti mekanisme tunneling lain, 6rd biasanya di berikan oleh ISP itu sendiri. Nilai dari tunnel biasanya di peroleh dengan DHCPv4 request untuk WAN interface.

Sejak OpenWRT Chaos Calmer dan selanjutnya, konfigurasi ini biasanya auto-detecte sehingga konfigurasi manual biasanya tidak dibutuhkan. Cukup instalasi package 6rd dan rebooting biasanya sudah cukup.

/etc/config/network:

config interface 'wan'
        option ifname 'eth0.2'
        option proto 'dhcp'
        
        # The following two lines are only needed in Barrier Breaker
        option iface6rd wan_6rd
        option zone6rd wan

Untuk 6rd via DHCP, pertama kali kita perlu men-cek jika parameter memang dikirim. Buat /etc/udhcpc.user dengan content berikut:

#!/bin/sh
env >> /tmp/udhcpc.log

Reboot router dan cek log file, apakah ada kalimat kira-kira seperti berikut:

ip6rd=16 40 2001:0838:ad00:0000:0000:0000:0000:0000 77.174.0.2

Jika kalimat tersebut tidak ada, kita perlu memperoleh nilai yang benar untuk peeraddr, ip6prefix, ip6prefixlen dan ip4prefixlen dari ISP kita. Nilai ip6rd di atas atau nilai yang kita peroleh dari ISP, dapat di tulis (hardcode) ke 6RD tunnel. Buang atau di-comment kalimat iface6rd dari wan section.

/etc/config/network
config interface 'wan6'
        option proto '6rd'
        option peeraddr '77.174.0.2'
        option ip6prefix '2001:838:ad00::'
        option ip6prefixlen '40'
        option ip4prefixlen '16'

Di Chaos Calmer dan Barrier Breaker default /etc/config/network akan bekerja setelah kita menginstalasi package 6rd. dhcpv6 akan di abaikan jika tidak berhasil.

Jika kita memilih nama tunnel-interface bukan 'wan6' maka pastikan bahwa nama interface tersebut masuk ke network-option di firewall-zone 'wan' di /etc/config/firewall.

Package 6rd harus di instalasi untuk menggunakan 6rd-tunnel.


6to4 tunnel

6to4 adalah mekanisme IPv6 tunneling yang paling sederhana, yang menggantungkan diri pada gateway yang tersedia secara publik.

/etc/config/network:

config 'interface' 'wan6'
        option 'proto' '6to4'

config 'interface' 'lan'
        option 'proto' 'static'
        option ip6assign 60
...

Jika kita memilih nama tunnel-interface bukan 'wan6' pastikan bahwa nama interface tersebut masuk ke network-option di firewall-zone 'wan' di /etc/config/firewall.

Package 6to4 harus di instalasi untuk menggunakan 6to4-tunnel.

Dual-Stack Lite tunnel (ds-lite IPv4 in IPv6)

ds-lite adalah sebuah mekanisme transisi yang digunakan oleh ISP untuk mendukung IPv4-connectivity di atas sambungan native IPv6.

Di Chaos Calmer dan versi selanjutnya, konfigurasi ds-lite biasanya auto-detect sehingga konfigurasi manual tidak diperlukan. Cukup dengan menginstalasi package ds-lite dan reboot biasanya sudah cukup.

/etc/config/network:

config 'interface' 'wan6'
        option 'ifname' 'eth1'
        option 'proto' 'dhcpv6'

config 'interface' 'wan'
        option 'proto' 'dslite'
        option 'peeraddr' '2001:db80::1' # ISP DS-Lite AFTR

Jika kita memilih nama tunnel-interface bukan 'wan6' pastikan bahwa nama interface tersebut masuk ke network-option di firewall-zone 'wan' di /etc/config/firewall.

Package ds-lite harus di instalasi untuk menggunakan ds-lite-tunnel.

Konfigurasi Downstream LAN-Interface

OpenWRT menyediakan mekanisme delegasi prefix local yang flexible. Ini dapat di aktifkan untuk masing-masing LAN-interface dengan 3 parameter yang masing-masing optional:

  • ip6assign: Prefix size digunakan untuk assigned prefix ke interface (contoh, 64 akan assign /64-prefixes)
  • ip6hint: Subprefix ID yang akan digunakan jika ada (contoh, 1234 dengan ip6assign 64 akan assign prefix :1234::/64)
  • ip6class: Filter untuk prefix class yang dapat di terima di interface (contoh, wan6 hanya akan assign prefix dengan kelas "wan6" tapi tidak untuk, misalnya, "local")

Setting ip6assign dan / atau ip6hint akan di abaikan jika subprefix yang di inginkan tidak bisa di assign. Dalam hal ini, OpenWrt akan pertama kali berusaha untuk mencoba assign sebuah prefix dengan panjang yang sama, tapi berbeda subprefix-ID. Jika ini gagal maka panjang prefix akan di kurangi sampai assignment sesuai dengan yang di inginkan. Jika ip6hint tidak di set maka ID sembarang akan di pilih. Setting ip6assign-parameter ke nilai < 64 akan membuat e DHCPv6-server untuk memberikan /64 pertama via DHCPv6-Prefix Delegation ke downstream router di Interface. Jika ip6hint tidak cocok dengan ip6assign yang diberikan dia akan membulatkan ke bawah ke nilai yang paling mungkin.

Jika ip6class tidak di set maka semua prefix class akan di terima pada interface ini. Default class untuk sebuah prefix adalah interface-name (seperti "wan6") atau "local" untuk ULA-prefix. Ini dapat digunakan untuk memilih upstream interface dari mana subprefix akan di assigned. Untuk prefix yang diterima dari metoda dynamic-configuration seperti DHCPv6 sangat mungkin prefix-class tidak sama dengan source-interface tapi, misalnya, merupakan potongan dari nilai class prefix yang diberikan ISP.

/etc/config/network

config globals globals
        option ula_prefix fd00:db80::/48  

config interface wan6
        option proto static
        option ip6prefix 2001:db80::/56
        ...

config interface lan
        option proto static
        option ip6assign 60
        option ip6hint 10
        ...

config interface guest
        option proto static
        option ip6assign 64
        option ip6hint abcd
        list ip6class wan6
        ...

Hasil dari konfigurasi di atas adalah:

  • LAN interface akan diberikan prefix 2001:db80:0:10::/60 dan fd00:db80:0:10::/60.
  • DHCPv6-server dapat memberikan ke dua prefixes kecuali 2001:db80:0:10::/64 dan fd00:db80:0:10::/64 ke downstream router di LAN via DHCPv6-PD.
  • guest interface hanya akan di assinged prefix 2001:db80:0:abcd::/64 karena class filter.

Router Advertisement & DHCPv6

OpenWRT dapat memberikan RA & DHCPv6 server dan relay. Secara default SLAAC, stateless dan stateful DHCPv6 di enable di sebuah interface. Jika ada prefix yang besarnya /64 atau lebih besar maka address yang akan di berikan dari masing-masing prefix. Jika semua prefix di sebuah interface mempunyai besar lebih dari /64 maka DHCPv6-Prefix Delegation akan diaktifkan untuk downstream-router. Jika sebuah default route ada, router akan advertise dirinya sebagai default router pada interface.

OpenWRT juga mampu mendetek jika tidak ada prefix yang tersedia dari upstream interface dan dapat switch ke mode relay secara automatis untuk meng-extend konfigurasi dari upstream interface ke downstream interface. Hal ini sangat bermanfaat untuk meletakan OpenWRT dibelakang IPv6-router yang tidak memberikan prefix via DHCPv6-PD.

Contoh bagian konfigurasi untuk SLAAC + DHCPv6 server mode (/etc/config/dhcp)

config dhcp lan
    option dhcpv6 server
    option ra server

Contoh bagian konfigurasi untuk SLAAC saja (/etc/config/dhcp)

config dhcp lan
    option dhcpv6 disabled
    option ra server

Contoh bagian konfigurasi untuk relay (/etc/config/dhcp)

config dhcp wan6
    option dhcpv6 relay
    option ra relay
    option ndp relay
    option master 1

config dhcp lan
    option dhcpv6 relay
    option ra relay
    option ndp relay

Package odhcpd harus di instalasi untuk dapat memberikan layanan ini.

Routing Mangement

OpenWRT menggunakan source-address dan source-interface sebagai dasar untuk policy-routing system. Teknik ini dibutuhkan agar dapat secara benar menangani berbagai uplink interface. Setiap delegated prefix akan ditambahkan dengan unreachable route untuk menghindari IPv6-routing loops.

Untuk menentukan status dari route, kita dapat melihat informasi yang diberikan oleh ifstatus.

Contoh (ifstatus wan6):

...
"ipv6-address": [
        {
                "address": "2001:db80::a00:27ff:fe67:cd9c",
                "mask": 64,
                "preferred": 1681,
                "valid": 7081
        }
],
"ipv6-prefix": [
        {
                "address": "2001:db80:0:100::",
                "mask": 56,
                "preferred": 86282,
                "valid": 86282,
                "class": "wan6",
                "assigned": {
                        "lan": {
                                "address": "2001:db80:0:110::",
                                "mask": 60
                        }
                 }
         }
],
"route": [
        {
                "target": "2001:db80::",
                "mask": 48,
                "nexthop": "fe80::800:27ff:fe00:0",
                "metric": 1024,
                "valid": 7081
         },
        {
                "target": "::",
                "mask": 0,
                "nexthop": "fe80::800:27ff:fe00:0",
                "metric": 1024,
                "valid": 7081
        }
],
...

Interpretasinya adalah:

  • Pada interface ada 2 route yang diberikan: 2001:db80::/48 dengan default-route via router fe80::800:27ff:fe00:0.
  • route ini hanya dapat digunakan oleh traffic yang dibuat secara lokal dan traffic dengan source-address yang benar, yaitu dari local address atau dari address yang diberikan oleh delegated prefix.

OpenWRT menambahkan IPv6-route (seperti default routes) ke routing-table yang spesifik dan tidak ke main-table oleh karenanya mereka tidak akan terlihat secara default. Kita dapat menggunakan perintah ip -6 untuk melihat semua kebijakan routing yang ada.

Migrasi dari Attitude Adjustment 12.09 atau sebelumnya

IPv6 Forwarding

Untuk memastikan IPv6 forwarding bekerja dengan benar, cek /etc/sysctl.conf berisi entri berikut:

net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1

Konfigurasi Downstream untuk LAN-Interface

Sangat tidak di sarankan untuk menggunakan ip6addr untuk menset address / prefix di downstream interface (seperti lan) karena ini akan mudah menyebabkan konflik dengan local address delegation. Hal ini juga mungkin akan menyebabkan hasil yang tidak di inginkan atau rusak karena source-based policy-routing yang digunakan di IPv6-stack.

Mohon menggunakan opsi baru ip6assign dan ip6hint .

Contoh: kita ingin prefix yang didelegasikan 2001:db80:1234::/48 dan kita ingin LAN interface kita mempunyai subprefix 2001:db80:1234:5678::/64 kita dapat menggunakan konfigurasi berikut:

config 'interface' 'lan'
       option 'proto' 'static'
       option 'ip6assign' '64'
       option 'ip6hint' '5678'
       ...

Jika router dapat ping6 ke internet, tapi mesin di lan memperoleh error "Destination unreachable: Unknown code 5" atau "Source address failed ingress/egress policy" maka opsi ip6assign tidak ada di lan interface anda.

Router Advertisement & DHCPv6

Penggunaan radvd saat ini menjadi keharusan. Layanan 6relayd digunakan untuk Router Advertisement dan DHCPv6 dan mengambil address dari interface secara automatis.

Upstream Configuration for WAN-Interfaces

Perubahan Generik

Router Advertisement tidak akan di terima secara defauly oleh karenanya OpenWRT tidak akan mengkonfigurasi diri sendiri dengan route default dan / atau address. Jika opsi interface accept_ra dan send_rs sudah dibuang. Kita harus menambahkan sebuah interface dengan proto dhcpv6 - juga untuk menerima RA saja.

6in4 tunnel dan sambungan Statik IPv6

Saat ini perlu untuk menambah routed-prefix kita (misalnya routed /48 dari tunnel kita) sebagai opsi ip6prefix ke tunnel/static-interface di /etc/config/network. Jika kita membuang opsi ini lan-client tidak akan bisa mencapai Internet.

Contoh:

config 'interface' 'wan6'
        option 'proto' '6in4'
        option 'peeraddr' '62.12.34.56
        option 'ip6addr' '2001:DB8:2222:EFGH::2/64'
        option 'ip6prefix' '2001:DB8:1234:ABCD::/64' # <- routed prefix kita
        ...

6rd dan 6to4 tunnel

Public address prefix kita akan di hitung secara automatis dan akan dikirim ke network subsystem (netifd). Kita perlu mengikuti saran untuk konfigurasi lan-interface.

Referensi