OpenWRT WIFI Channel 12 und 13

Wenn iw list in der Konsole von OpenWRT

                        ...
                        * 2467 MHz [12] (disabled)
                        * 2472 MHz [13] (disabled)
                        * 2484 MHz [14] (disabled)
                        ...

zurück liefert, gibt es dank ~jow einen Binary patch für OpenWRT.

Finden kann man den Patch in seinem Userdir http://luci.subsignal.org/~jow/reghack/old/.

Für den Fall das jow’s Seite einmal offline geht, gibt es hier eine Kopie der Dateien in einem 7z-Archiv.

Gefunden habe ich den Link im Bugtracker von Openwrt.org

Ausgabe während des Patchens auf meinem TP-Link TL-WR1043ND,

 cd /tmp/
root@OpenWrt:/tmp# wget http://luci.subsignal.org/~jow/reghack/reghack.mips.elf
Connecting to luci.subsignal.org (188.40.166.7:80)
reghack.mips.elf     100% |*******************************| 46156   0:00:00 ETA
root@OpenWrt:/tmp# chmod +x reghack.mips.elf
root@OpenWrt:/tmp# ./reghack.mips.elf /lib/modules/*/ath.ko
mmap(): Invalid argument
Memory mapping failed (missing fs support?), retrying from tmpfs
Patching @ 0x000002f0: ath_is_radar_freq() MIPS opcode in ath/regd.o
Patching @ 0x000003fc: ath_is_radar_freq() MIPS opcode in ath/regd.o
Patching @ 0x0000342c: ath world regdomain with 5 rules in ath/regd.o
Patching @ 0x000034cc: ath world regdomain with 4 rules in ath/regd.o
Patching @ 0x00003550: ath world regdomain with 4 rules in ath/regd.o
Patching @ 0x000035d4: ath world regdomain with 5 rules in ath/regd.o
root@OpenWrt:/tmp# ./reghack.mips.elf /lib/modules/*/cfg80211.koreboot
stat(): No such file or directory
root@OpenWrt:/tmp# ./reghack.mips.elf /lib/modules/*/cfg80211.ko
mmap(): Invalid argument
Memory mapping failed (missing fs support?), retrying from tmpfs
Patching @ 0x0002589c: core world6 regdomain in cfg80211/reg.o
Patching @ 0x000267ac: embedded US regdomain in cfg80211/regdb.o
Patching @ 0x0002ae30: embedded 00 regdomain in cfg80211/regdb.o

Ergebnis des Patchens:

                        * 2467 MHz [12] (30.0 dBm)
                        * 2472 MHz [13] (30.0 dBm)
                        * 2484 MHz [14] (disabled)

Wie man sieht habe ich die Binaries genutzt, der Aufwand die Module selbst zu bauen wäre mir zu groß. Danke an ~jow.

UPDATE:
OpenWRT Chaos Calmer 15.05-rc1 wurde veröffentlicht. Das OpenWRT Team hat sich dazu entschieden das ganze zu fixen. Sie haben wohl die letzten Jahre auf einen Fix vom Hersteller gewartet, da weiterhin nichts kommt und es immer mehr Bug reports werden, kann man nun die eingestellte eeprom Zone per

# iw reg get
country 00: DFS-UNSET
        (2402 - 2472 @ 40), (N/A, 20), (N/A)
        (2457 - 2482 @ 40), (N/A, 20), (N/A), PASSIVE-SCAN
        (2474 - 2494 @ 20), (N/A, 20), (N/A), NO-OFDM, PASSIVE-SCAN
        (5170 - 5250 @ 80), (N/A, 20), (N/A)
        (5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS, PASSIVE-SCAN
        (5490 - 5730 @ 160), (N/A, 20), (0 ms), DFS, PASSIVE-SCAN
        (5735 - 5835 @ 80), (N/A, 20), (N/A), PASSIVE-SCAN
        (57240 - 63720 @ 2160), (N/A, 0), (N/A)

abfragen und über set, also

# iw reg set DE
# iw reg get
country DE: DFS-ETSI
        (2400 - 2483 @ 40), (N/A, 20), (N/A)
        (5150 - 5250 @ 80), (N/A, 20), (N/A), NO-OUTDOOR
        (5250 - 5350 @ 80), (N/A, 20), (0 ms), NO-OUTDOOR, DFS
        (5470 - 5725 @ 160), (N/A, 27), (0 ms), DFS
        (57000 - 66000 @ 2160), (N/A, 40), (N/A)

über die shell lösen.

aiccu von sixx.net auf openwrt

Merke: OpenWRT bringt für das aiccu kein init.d script mehr mit. Dashier ist das alte.

#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=51
 
config_cb() {
	local cfg_type="$1"
	local cfg_name="$2"
 
	case "$cfg_type" in
		aiccu)
			append cfgs_sections "$cfg_name" "$N"
		;;
	esac
}
 
start() {
	config_load aiccu
	for cfgs_section in $cfgs_sections; do
		config_get username $cfgs_section username
		config_get password $cfgs_section password
		config_get server $cfgs_section server
		config_get protocol $cfgs_section protocol
		config_get interface $cfgs_section interface
		config_get tunnel_id $cfgs_section tunnel_id
		config_get_bool requiretls $cfgs_section requiretls 0
		config_get_bool defaultroute $cfgs_section defaultroute 1
		config_get_bool nat $cfgs_section nat 1
		config_get_bool heartbeat $cfgs_section heartbeat 1
		mkdir -p /tmp/run
		echo "username $username" > /tmp/run/aiccu-${cfgs_section}.conf
		echo "password $password" >> /tmp/run/aiccu-${cfgs_section}.conf
		[ -n "$server" ] && echo "server $server" >> /tmp/run/aiccu-${cfgs_section}.conf
		[ -n "$protocol" ] && echo "protocol $protocol" >> /tmp/run/aiccu-${cfgs_section}.conf
		[ -n "$interface" ] && echo "ipv6_interface $interface" >> /tmp/run/aiccu-${cfgs_section}.conf
		[ -n "$tunnel_id" ] && echo "tunnel_id $tunnel_id" >> /tmp/run/aiccu-${cfgs_section}.conf
		[ "$requiretls" = "1" ] && echo "requiretls true" >> /tmp/run/aiccu-${cfgs_section}.conf
		[ "$defaultroute" != "1" ] && echo "defaultroute false" >> /tmp/run/aiccu-${cfgs_section}.conf
		[ "$nat" = "1" ] && echo "behindnat true" >> /tmp/run/aiccu-${cfgs_section}.conf
		[ "$heartbeat" != "1" ] && echo "makebeats false" >> /tmp/run/aiccu-${cfgs_section}.conf
		echo 'daemonize true' >> /tmp/run/aiccu-${cfgs_section}.conf
		echo "pidfile /var/run/aiccu-${cfgs_section}.pid" >> /tmp/run/aiccu-${cfgs_section}.conf
		[ ! -z "`ip -6 route show default | grep br-lan`" ] && \
		ip -6 route del default dev br-lan
		aiccu start /tmp/run/aiccu-$cfgs_section.conf
	done
}
 
stop() {
	config_load aiccu
	for cfgs_section in $cfgs_sections; do
		aiccu stop /tmp/run/aiccu-$cfgs_section.conf
	done
}

IP Dual-Stack IPv4 bevorzugen

So gehts,

die Datei /etc/gai.conf steuert die Priorisierung von getaddrinfo. Auf OpenWRT exisitiert diese Datei nicht und muss angelegt werden.

Entfernt man das Kommentarzeichen vor precedence ::ffff:0:0/96 100 wird IPv4 bevorzugt. ::ffff:0:0/96 ist der Adressraum der IPv4 Adressen im IPv6 Format. Testen kann man das ganze beim IPv6 Test von KabelBW.
Hier die Debian /etc/gai.conf

# Configuration for getaddrinfo(3).
#
# So far only configuration for the destination address sorting is needed.
# RFC 3484 governs the sorting.  But the RFC also says that system
# administrators should be able to overwrite the defaults.  This can be
# achieved here.
#
# All lines have an initial identifier specifying the option followed by
# up to two values.  Information specified in this file replaces the
# default information.  Complete absence of data of one kind causes the
# appropriate default information to be used.  The supported commands include:
#
# reload  <yes|no>
#    If set to yes, each getaddrinfo(3) call will check whether this file
#    changed and if necessary reload.  This option should not really be
#    used.  There are possible runtime problems.  The default is no.
#
# label   <mask>   <value>
#    Add another rule to the RFC 3484 label table.  See section 2.1 in
#    RFC 3484.  The default is:
#
#label ::1/128       0
#label ::/0          1
#label 2002::/16     2
#label ::/96         3
#label ::ffff:0:0/96 4
#label fec0::/10     5
#label fc00::/7      6
#label 2001:0::/32   7
#
#    This default differs from the tables given in RFC 3484 by handling
#    (now obsolete) site-local IPv6 addresses and Unique Local Addresses.
#    The reason for this difference is that these addresses are never
#    NATed while IPv4 site-local addresses most probably are.  Given
#    the precedence of IPv6 over IPv4 (see below) on machines having only
#    site-local IPv4 and IPv6 addresses a lookup for a global address would
#    see the IPv6 be preferred.  The result is a long delay because the
#    site-local IPv6 addresses cannot be used while the IPv4 address is
#    (at least for the foreseeable future) NATed.  We also treat Teredo
#    tunnels special.
#
# precedence  <mask>   <value>
#    Add another rule to the RFC 3484 precedence table.  See section 2.1
#    and 10.3 in RFC 3484.  The default is:
#
#precedence  ::1/128       50
#precedence  ::/0          40
#precedence  2002::/16     30
#precedence ::/96          20
#precedence ::ffff:0:0/96  10
#
#    For sites which prefer IPv4 connections change the last line to
#
precedence ::ffff:0:0/96  100
 
#
# scopev4  <mask>  <value>
#    Add another rule to the RFC 6724 scope table for IPv4 addresses.
#    By default the scope IDs described in section 3.2 in RFC 6724 are
#    used.  Changing these defaults should hardly ever be necessary.
#    The defaults are equivalent to:
#
#scopev4 ::ffff:169.254.0.0/112  2
#scopev4 ::ffff:127.0.0.0/104    2
#scopev4 ::ffff:0.0.0.0/96       14

IPv6 bei sourceforge.net

Nur wenige Mirror von sourceforge.net unterstützen derzeit IPv6. Wer also einen nativen IPv6 Zugang hat, dürfte schnell aufgeschmissen sein.

Der netcologne Mirror unterstützt IPv6.

wget -6 http://netcologne.dl.sourceforge.net/project/*Projektname*/*Titel*/*Verzeichnis*/Dateiname-1.0.0.tar.gz

IPv6 über DHCP an KVM Gäste verteilen

It’s magic.

# cat /etc/network/interfaces
### Hetzner Online AG - installimage
# Loopback device:
auto lo
iface lo inet loopback
 
# device: eth0
auto  eth0
iface eth0 inet static
  address   XXX.XXX.XXX.131
  broadcast XXX.XXX.XXX.191
  netmask   255.255.255.192
  gateway   XXX.XXX.XXX.129
  # default route to access subnet
  up route add -net XXX.XX.XXX.128 netmask 255.255.255.192 gw XXX.XXX.XXX.129 eth0
 
iface eth0 inet6 static
  address 2a01:AAA:AAA:AAA::1
  netmask 128
  gateway fe80::1
# Enable forwarding
    pre-up echo 1 > /proc/sys/net/ipv6/conf/default/forwarding
    pre-up echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
# But disable forwarding on THIS interface so we still get RAs
    pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/forwarding
    pre-up echo 1 > /proc/sys/net/ipv6/conf/eth0/accept_ra
    pre-up echo 1 > /proc/sys/net/ipv6/conf/all/accept_ra
    pre-up echo 1 > /proc/sys/net/ipv6/conf/default/accept_ra
 
auto br0
iface br0 inet6 static
  pre-up brctl addbr br0
  post-down brctl delbr br0
  bridge_stp off
  address 2a01:AAA:AAA:AAA::1
  netmask 64

Die pre-up echo’s sind ein workaround, da nur entweder accept_ra ODER forwarding funktioniert. Genaueres findet man hier.

Als DHCP habe ich den wide-dhcp6-server genommen.

#cat /etc/wide-dhcpv6/dhcp6s.conf
option domain-name-servers 2a01:4f8:0:a0a1::add:1010;
option domain-name-servers 2a01:4f8:0:a111::add:9898;
option domain-name-servers 2a01:4f8:0:a102::add:9999;
 
interface br0 {
        address-pool pool1 3600;
};
 
pool pool1 {
        range 2a01:AAA:AAA:AAAA::0000 to 2a01:AAA:AAA:AAAA::ffff;
};

Damit die auto_ra funktioniert, setzte ich radvd ein, mit dieser Konfig:

interface br0
{
        AdvManagedFlag on;
        MinRtrAdvInterval 3;
        MaxRtrAdvInterval 10;
        AdvSendAdvert on;
 
  prefix 2a01:AAA:AAA:AAA::/64
  {
                AdvOnLink on;
                AdvAutonomous on;
                AdvRouterAddr on;
  };
};

Bei der Umsetzung hat mir dieser Wiki Eintrag bei Hetzner geholfen.

1 2 3 4