10月 27日リリース。
PACKET_MMAPにも対応。v2 確認未。
ダーティハックで debian lenny パッケージ作るためのパッチ。
忙しすぎ。むーん....
2008年11月11日火曜日
2008年9月3日水曜日
PF_PACKET での vlan_tci - 気になるトコロ
間違い。
その他
> skb->vlan_tci を設定する __vlan_hwaccel_rx() を呼んでいるのはじゃなくて、__vlan_hwaccel_rx() を呼び出す netif_rx() や netif_receive_skb() の wrapper (とコメントに書いてある) の vlan_hwaccel_rx() や vlan_hwaccel_receive_skb() はいろんなドライバから呼ばれてる。
その他
- (多分 NETIF_F_HW_VLAN_RX でないデバイスで使う)
vlan_skb_recv()::net/8021q/vlan_dev.c で skb->vlan_tci をセットしてない - packet_sock.tp_reserve で確保する位置
tpacket_rcv()::net/packet/af_packet.c の中
mac より前に確保してる? できれば mac と net の間に VLAN オプションフィールド入れたいけど、すんごいツラいしそーゆー用途ではない? ユーザスペースで mac ヘッダ前にずらす?} else {
unsigned maclen = skb_network_offset(skb);
netoff = TPACKET_ALIGN(po->tp_hdrlen +
(maclen < 16 ? 16 : maclen)) +
po->tp_reserve;
macoff = netoff - maclen;
}
....
skb_copy_bits(skb, 0, h.raw + macoff, snaplen);
....
case TPACKET_V2:
h.h2->tp_len = skb->len;
h.h2->tp_snaplen = snaplen;
h.h2->tp_mac = macoff;
h.h2->tp_net = netoff;
2008年9月1日月曜日
Dell Studio で Linux
8月上旬に Dell Studio 17 ノートパソコンなるものを購入。CPU が T9300 (2.5GHz) メモリが 4G という我が家一番の高スペックマシンとなった。お盆休みもあって Linux - debian/lenny 入れてみた。やっぱり? 無線 LAN と GPU で手間取ったので...この位なら切り貼りで良いや。とパッチなど。 CONFIG_DRM は組み込まないように。
Dell Studio の Radeon HD3650
ドライバはここ。カーネルモジュールはいらないかも。と思っていたが、スクロールが遅すぎ。で 2.6.27-rc でコンパイルするためのパッチは以下。GPL なモジュールしか呼び出せない __rcu_read_lock() などこちらを参照しつつ回避しているので注意。
コンパイルはdiff -ubBrN fglrx/Makefile fglrx-27/Makefile
--- fglrx/Makefile 2008-08-24 08:47:58.000000000 +0900
+++ fglrx-27/Makefile 2008-08-30 20:27:22.000000000 +0900
@@ -2,6 +2,11 @@
LIBIP_PREFIX ?= ..
+RCU_READ_LOCK := $(shell grep "T __rcu_read_lock" $(SYSMAP) | colrm 9)
+RCU_READ_UNLOCK := $(shell grep "T __rcu_read_unlock" $(SYSMAP) | colrm 9)
+EXTRA_LDFLAGS := --defsym __rcu_read_lock=0x$(RCU_READ_LOCK) \
+ --defsym __rcu_read_unlock=0x$(RCU_READ_UNLOCK)
+
obj-m += fglrx.o
fglrx-libs += libfglrx_ip.a.GCC$(GCC_VER_MAJ)
fglrx-c-objs += firegl_public.o
diff -ubBrN fglrx/firegl_public.c fglrx-27/firegl_public.c
--- fglrx/firegl_public.c 2008-08-24 08:47:58.000000000 +0900
+++ fglrx-27/firegl_public.c 2008-08-31 21:07:45.000000000 +0900
@@ -3077,7 +3077,7 @@
{
#ifdef __SMP__
/* write back invalidate all other CPUs (exported by kernel) */
- if (smp_call_function(deferred_flush, NULL, 1, 0) != 0)
+ if (smp_call_function(deferred_flush, NULL, 0) != 0)
panic("timed out waiting for the other CPUs!\n");
/* invalidate this CPU */
@@ -4796,7 +4796,7 @@
void ATI_API_CALL KCL_CallFuncOnOtherCpus(firegl_void_routine_t func_to_call)
{
#ifdef CONFIG_SMP
- smp_call_function( firegl_smp_func_parameter_wrap, (void*)func_to_call, 0, 1 );
+ smp_call_function( firegl_smp_func_parameter_wrap, (void*)func_to_call, 1 );
#endif
}
@@ -4910,7 +4910,7 @@
}
#ifdef CONFIG_SMP
- if (smp_call_function(KCL_setup_pat, NULL, 0, 1) != 0)
+ if (smp_call_function(KCL_setup_pat, NULL, 1) != 0)
return 0;
#endif
KCL_setup_pat(NULL);
@@ -4929,7 +4929,7 @@
}
#ifdef CONFIG_SMP
- if (smp_call_function(KCL_restore_pat, NULL, 0, 1) != 0)
+ if (smp_call_function(KCL_restore_pat, NULL, 1) != 0)
return;
#endif
KCL_restore_pat(NULL);
で。SYSMAP に、そのまま... System.map を指定して。make SYSMAP=/boot/System.map-2.6.27-rc5-git1 -C /usr/src/testing SUBDIRS=`pwd` clean
make SYSMAP=/boot/System.map-2.6.27-rc5-git1 -C /usr/src/testing SUBDIRS=`pwd` modules
Dell Studio の WLAN
ドライバはここ。残念なことに mac80211 で deprecated になってしまった CONFIG_IEEE80211。2.6.27-rc でコンパイルするためのパッチは以下
diff -ubBrN hybrid-portsrc-x86_32_5_10_27_6/Makefile hybrid-portsrc-x86_32_5_10_27_6-27/Makefile
--- hybrid-portsrc-x86_32_5_10_27_6/Makefile 2008-07-02 13:32:20.000000000 +0900
+++ hybrid-portsrc-x86_32_5_10_27_6-27/Makefile 2008-08-13 13:29:51.000000000 +0900
@@ -38,3 +38,14 @@
EXTRA_CFLAGS += -I$(src)/src/wl/sys
EXTRA_LDFLAGS := $(src)/lib/wlc_hybrid.o_shipped
+
+KERNEL_PATH ?= /lib/modules/`uname -r`/source
+
+default:
+ make -C $(KERNEL_PATH) M=`pwd` modules
+
+clean:
+ make -C $(KERNEL_PATH) M=`pwd` clean
+
+install:
+ make -C $(KERNEL_PATH) M=`pwd` modules_install
\ No newline at end of file
diff -ubBrN hybrid-portsrc-x86_32_5_10_27_6/src/wl/sys/wl_iw.c hybrid-portsrc-x86_32_5_10_27_6-27/src/wl/sys/wl_iw.c
--- hybrid-portsrc-x86_32_5_10_27_6/src/wl/sys/wl_iw.c 2008-07-02 13:31:02.000000000 +0900
+++ hybrid-portsrc-x86_32_5_10_27_6-27/src/wl/sys/wl_iw.c 2008-08-13 13:28:33.000000000 +0900
@@ -931,12 +931,12 @@
iwe.cmd = SIOCGIWAP;
iwe.u.ap_addr.sa_family = ARPHRD_ETHER;
memcpy(iwe.u.ap_addr.sa_data, &bi->BSSID, ETHER_ADDR_LEN);
- event = iwe_stream_add_event(event, end, &iwe, IW_EV_ADDR_LEN);
+ event = iwe_stream_add_event(info, event, end, &iwe, IW_EV_ADDR_LEN);
iwe.u.data.length = dtoh32(bi->SSID_len);
iwe.cmd = SIOCGIWESSID;
iwe.u.data.flags = 1;
- event = iwe_stream_add_point(event, end, &iwe, bi->SSID);
+ event = iwe_stream_add_point(info, event, end, &iwe, bi->SSID);
if (dtoh16(bi->capability) & (DOT11_CAP_ESS | DOT11_CAP_IBSS)) {
iwe.cmd = SIOCGIWMODE;
@@ -944,7 +944,7 @@
iwe.u.mode = IW_MODE_INFRA;
else
iwe.u.mode = IW_MODE_ADHOC;
- event = iwe_stream_add_event(event, end, &iwe, IW_EV_UINT_LEN);
+ event = iwe_stream_add_event(info, event, end, &iwe, IW_EV_UINT_LEN);
}
iwe.cmd = SIOCGIWFREQ;
@@ -952,13 +952,13 @@
CHSPEC_CHANNEL(bi->chanspec) <= CH_MAX_2G_CHANNEL ?
WF_CHAN_FACTOR_2_4_G : WF_CHAN_FACTOR_5_G);
iwe.u.freq.e = 6;
- event = iwe_stream_add_event(event, end, &iwe, IW_EV_FREQ_LEN);
+ event = iwe_stream_add_event(info, event, end, &iwe, IW_EV_FREQ_LEN);
iwe.cmd = IWEVQUAL;
iwe.u.qual.qual = rssi_to_qual(dtoh16(bi->RSSI));
iwe.u.qual.level = 0x100 + dtoh16(bi->RSSI);
iwe.u.qual.noise = 0x100 + bi->phy_noise;
- event = iwe_stream_add_event(event, end, &iwe, IW_EV_QUAL_LEN);
+ event = iwe_stream_add_event(info, event, end, &iwe, IW_EV_QUAL_LEN);
#if WIRELESS_EXT > 17
@@ -970,7 +970,7 @@
if ((ie = bcm_parse_tlvs(ptr, ptr_len, DOT11_MNG_RSN_ID))) {
iwe.cmd = IWEVGENIE;
iwe.u.data.length = ie->len + 2;
- event = iwe_stream_add_point(event, end, &iwe, (char *)ie);
+ event = iwe_stream_add_point(info, event, end, &iwe, (char *)ie);
}
ptr = ((uint8 *)bi) + sizeof(wl_bss_info_t);
while ((ie = bcm_parse_tlvs(ptr, ptr_len, DOT11_MNG_WPA_ID))) {
@@ -978,7 +978,7 @@
if (ie_is_wps_ie(((uint8 **)&ie), &ptr, &ptr_len)) {
iwe.cmd = IWEVGENIE;
iwe.u.data.length = ie->len + 2;
- event = iwe_stream_add_point(event, end, &iwe, (char *)ie);
+ event = iwe_stream_add_point(info, event, end, &iwe, (char *)ie);
break;
}
}
@@ -989,7 +989,7 @@
if (ie_is_wpa_ie(((uint8 **)&ie), &ptr, &ptr_len)) {
iwe.cmd = IWEVGENIE;
iwe.u.data.length = ie->len + 2;
- event = iwe_stream_add_point(event, end, &iwe, (char *)ie);
+ event = iwe_stream_add_point(info, event, end, &iwe, (char *)ie);
goto done;
}
}
@@ -1003,7 +1003,7 @@
else
iwe.u.data.flags = IW_ENCODE_DISABLED;
iwe.u.data.length = 0;
- event = iwe_stream_add_point(event, end, &iwe, (char *)event);
+ event = iwe_stream_add_point(info, event, end, &iwe, (char *)event);
if (bi->rateset.count) {
value = event + IW_EV_LCP_LEN;
@@ -1012,7 +1012,7 @@
iwe.u.bitrate.fixed = iwe.u.bitrate.disabled = 0;
for (j = 0; j < bi->rateset.count && j < IW_MAX_BITRATES; j++) {
iwe.u.bitrate.value = (bi->rateset.rates[j] & 0x7f) * 500000;
- value = iwe_stream_add_value(event, value, end, &iwe,
+ value = iwe_stream_add_value(info, event, value, end, &iwe,
IW_EV_PARAM_LEN);
}
event = value;
2008年8月26日火曜日
PF_PACKET での vlan_tci
tcpdump で 802.1q の続きになるのか? 2.6.27 にマージされるネットワーク周りのお話で Patrick McHardy さんのいくつか
例の lincap.c に新しい setsockopt() してみたが
- vlan: uninline __vlan_hwaccel_rx
- packet: deliver VLAN TCI to userspace
- packet: add PACKET_RESERVE sockopt
例の lincap.c に新しい setsockopt() してみたが
まぁ、nsec が取れるようになったのみ。 VLAN ID 取れたら PACKET_RESERVED のところにコピーしてあげるのかな? でも RESERVE されるのは mac よりも前っぽいので、思い違い?
/* set VERSION 2 - before pg_vec has set */
val = TPACKET_V2;
if ((setsockopt(fd, SOL_PACKET, PACKET_VERSION, (void *)&val, sizeof(val))) != 0) {
perror("setsockopt(PACKET_VERSION)");
close(fd);
return 1;
}
val = 4; /* __be16 0x8100, __be16 h_vlan_TCI - before pg_vec has set, too */
if ((setsockopt(fd, SOL_PACKET, PACKET_RESERVE, (void *)&val, sizeof(val))) != 0) {
perror("setsockopt(PACKET_RESERVE)");
close(fd);
return 1;
}
....
for (i = 0;;) {
while (*(unsigned long*)ring[i].iov_base) {
struct tpacket2_hdr *h = ring[i].iov_base;
struct sockaddr_ll *sll = (void *)h + TPACKET_ALIGN(sizeof(*h));
unsigned char *bp = (unsigned char *)h + h->tp_mac;
printf("%u.%.6u: if: %u, vid: %u, type: %s, len: %u\n",
h->tp_sec, h->tp_nsec,
sll->sll_ifindex,
h->tp_vlan_tci,
names[sll->sll_pkttype],
h->tp_len);
2008年8月25日月曜日
hostapd の snapshot
こちらを参照しつつ...git かぁ。libnl1.1 以上が必要っぽく debian であれば lenny で apt-get install libnl-dev 。更に /usr/include/linux は linux.dpkg-dist か何かに変更して 2.6.27-rc の /usr/src/linux/include/linux を /usr/include に symlink。
defconfig を .config にコピーして CONFIG_DRIVER_NL80211 を有効にして make。WPA だけの最小? config は
defconfig を .config にコピーして CONFIG_DRIVER_NL80211 を有効にして make。WPA だけの最小? config は
で良い? ./hostapd -dd tetest.conf とした後、別から probe 投げると tetest と返すところまで。interface=wlan0
driver=nl80211
hw_mode=g
channel=6
ssid=tetest
wpa=1
wpa_passphrase=hogehogemogemoge_foobarbar
mac80211 の Master mode
2.6.27-rc にて mac80211_hwsim なる WLAN デバイスのシミュレータが入ったとのお話。Documentation/networking/mac80211_hwsim/README を眺めると
とは言え mac80211 なデバイス全てで hostapd が動くわけではなさげ。と言うか IEEE80211_IF_TYPE_AP が有効なわけではなさげ。手元にあるデバイス...zd1211rw, ath5k, rtl8187, rt2x00 内 2.6.27-rc にて動作するのは rt2x00 のみ。また ath5k は近々 という感じ。で rt2x00 の何を使っているかと言えば
ところで WPA や RSN ではない Master mode とするために、こんな抜粋してみたけど...最初のドキュメント通り、Master mode になるも ip link set 〜 up あるいは ifconfig 〜 up なんてしてもリンクアップしているように見えますが、動きませんっ。ええ、理解してませんっ。
ここにある###-allow-ap-vlan-modes.patch がソレなのだが、コメントが...Please note that the current Linux kernel does not enable AP mode, so a
simple patch is needed to enable AP mode selection:
http://johannes.sipsolutions.net/patches/kernel/all/LATEST/006-allow-ap-vlan-modes.patch
あー...オレオレ。該当。文句言う言う。なんて話はさておき。Don't allow doing it with wext because then
people will just attempt to do it manually (without hostapd) and
complain that it doesn't work.
とは言え mac80211 なデバイス全てで hostapd が動くわけではなさげ。と言うか IEEE80211_IF_TYPE_AP が有効なわけではなさげ。手元にあるデバイス...zd1211rw, ath5k, rtl8187, rt2x00 内 2.6.27-rc にて動作するのは rt2x00 のみ。また ath5k は近々 という感じ。で rt2x00 の何を使っているかと言えば
バッファローの製品。他は?$ lsusb
...
Bus 003 Device 003: ID 0411:0067 MelCo., Inc. WLI-U2-KG54-AI WLAN
...
なんてたたくと山ほど。USB_DEVICE の中、例えば rt73usb.c に、こんな行fgrep "USB_DEVICE(" /usr/src/testing/drivers/net/wireless/rt2x00/*.c
があったら、Google 様に "0411:00f4"と尋ねると、ヒントが見付かることもアリ。/* Buffalo */
{ USB_DEVICE(0x0411, 0x00f4), USB_DEVICE_DATA(&rt73usb_ops) },
ところで WPA や RSN ではない Master mode とするために、こんな抜粋してみたけど...最初のドキュメント通り、Master mode になるも ip link set 〜 up あるいは ifconfig 〜 up なんてしてもリンクアップしているように見えますが、動きませんっ。ええ、理解してませんっ。
#include <stdio.h>
#include <linux/nl80211.h>
#include <netlink/genl/genl.h>
#include <netlink/genl/ctrl.h>
#include <netlink/genl/mngt.h>
#include <netlink/route/link.h>
int name2ifindex(char *ifname)
{
struct nl_handle *nlh;
struct nl_cache *link_cache;
int ifindex = -1;
if (!ifname)
return -1;
nlh = nl_handle_alloc();
if (!nlh)
return -1;
if (nl_connect(nlh, NETLINK_ROUTE) < 0)
goto errout;
link_cache = rtnl_link_alloc_cache(nlh);
if (!link_cache)
goto errout;
ifindex = rtnl_link_name2i(link_cache, ifname);
nl_cache_free(link_cache);
errout:
nl_close(nlh);
nl_handle_destroy(nlh);
return ifindex;
}
int main(int argc, char *argv[])
{
struct nl_handle *h;
struct nl_msg *msg;
struct nl_cache *cache;
struct genl_family *family;
int ifindex = name2ifindex(argv[1]);
if (ifindex < 0) {
fprintf(stderr, "could not get ifindex: %s\n", argv[1]);
return -1;
}
h = nl_handle_alloc();
if (!h) {
nl_perror("nl_handle_alloc");
return -1;
}
if (genl_connect(h) < 0) {
nl_perror("genl_connect");
goto nla_handle_failure_2;
}
cache = genl_ctrl_alloc_cache(h);
if (!cache) {
nl_perror("genl_ctrl_alloc_cache");
goto nla_handle_failure_1;
}
family = genl_ctrl_search_by_name(cache, "nl80211");
if (!family) {
nl_perror("search nl80211 family");
goto nla_cache_failure;
}
msg = nlmsg_alloc();
if (!msg) {
nl_perror("nlmsg_alloc");
goto nla_cache_failure;
}
genlmsg_put(msg, 0, 0, genl_family_get_id(family), 0,
0, NL80211_CMD_SET_INTERFACE, 0);
NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, ifindex);
NLA_PUT_U32(msg, NL80211_ATTR_IFTYPE, NL80211_IFTYPE_AP);
if (nl_send_auto_complete(h, msg) < 0 || nl_wait_for_ack(h) < 0)
nl_perror("Failed to set interface to master mode");
nla_put_failure:
nlmsg_free(msg);
nla_cache_failure:
nl_cache_free(cache);
nla_handle_failure_1:
nl_close(h);
nla_handle_failure_2:
nl_handle_destroy(h);
return 0;
}
2008年7月8日火曜日
FreeRadius 〜 EAP/TLS, EAP/TTLS, EAP/PEAP 〜 Linux Debian Lenny
いや、ここに張る意味あんまり無いけどチラシの裏、ちょっと jot。rules に
ここまでやってあると、イカンことのように思えてくるけど....
if dh_shlibdeps -p $$pkg -- -O 2>/dev/null | grep -q libssl; then
echo "$$pkg links to openssl"
exit 1
fi
apt-get source freeradius して上記パッチあてて fakeroot debian/rules binary すると、上位のディレクトリに freeradius-peap freeradius-tls freeradius-ttls というパッケージが出来上がると思います。diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/control freeradius-2.0.4+dfsg/debian/control
--- freeradius-2.0.4+dfsg.orig/debian/control 2008-05-19 11:47:18.000000000 +0900
+++ freeradius-2.0.4+dfsg/debian/control 2008-07-08 22:13:50.000000000 +0900
@@ -1,5 +1,5 @@
Source: freeradius
-Build-Depends: autotools-dev, debhelper (>= 6.0.7), libgdbm-dev, libiodbc2-dev, libkrb5-dev, libldap2-dev, libltdl3-dev, libmysqlclient15-dev | libmysqlclient-dev, libpam0g-dev, lib
pcap-dev, libperl-dev, libpq-dev, libsasl2-dev, libsnmp-dev, libtool, python-dev
+Build-Depends: autotools-dev, debhelper (>= 6.0.7), libgdbm-dev, libiodbc2-dev, libkrb5-dev, libldap2-dev, libltdl3-dev, libmysqlclient15-dev | libmysqlclient-dev, libpam0g-dev, lib
pcap-dev, libperl-dev, libpq-dev, libsasl2-dev, libsnmp-dev, libtool, python-dev libssl-dev
Section: net
Priority: optional
Maintainer: Stephen Gran
@@ -11,7 +11,7 @@
Depends: lsb-base (>= 3.0-6), ${shlibs:Depends}, freeradius-common, libfreeradius2 (= ${binary:Version})
Provides: radius-server
Recommends: freeradius-utils
-Suggests: freeradius-ldap, freeradius-mysql, freeradius-krb5, freeradius-postgresql
+Suggests: freeradius-ldap, freeradius-mysql, freeradius-krb5, freeradius-postgresql, freeradius-tls, freeradius-peap
Description: a high-performance and highly configurable RADIUS server
A high-performance RADIUS server with support for...
- many vendor-specific attributes
@@ -121,3 +121,26 @@
This package contains the detached debugging symbols for the Debian freeradius
packages
+Package: freeradius-tls
+Architecture: any
+Depends: freeradius (= ${binary:Version}), ${shlibs:Depends}
+Description: eap-tls module for FreeRADIUS server
+ Debian will not provide a binary version of the rlm_eap_tls.so library. This
+ module is required if you want to use EAP/TLS authentication, commonly used
+ for WiFi access points
+
+Package: freeradius-ttls
+Architecture: any
+Depends: freeradius (= ${binary:Version}), ${shlibs:Depends}
+Description: eap-ttls module for FreeRADIUS server
+ Debian will not provide a binary version of the rlm_eap_ttls.so library. This
+ module is required if you want to use EAP/TLS authentication, commonly used
+ for WiFi access points
+
+Package: freeradius-peap
+Architecture: any
+Depends: freeradius (= ${binary:Version}), ${shlibs:Depends}
+Description: eap-peap module for FreeRADIUS server
+ Debian will not provide a binary version of the rlm_eap_peap.so library. This
+ module is required if you want to use EAP/PEAP authentication, commonly used
+ for WiFi access points
diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/freeradius-peap.install freeradius-2.0.4+dfsg/debian/freeradius-peap.install
--- freeradius-2.0.4+dfsg.orig/debian/freeradius-peap.install 1970-01-01 09:00:00.000000000 +0900
+++ freeradius-2.0.4+dfsg/debian/freeradius-peap.install 2008-07-08 22:13:50.000000000 +0900
@@ -0,0 +1 @@
+usr/lib/freeradius/rlm_eap_peap*.so
diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/freeradius-peap.postinst freeradius-2.0.4+dfsg/debian/freeradius-peap.postinst
--- freeradius-2.0.4+dfsg.orig/debian/freeradius-peap.postinst 1970-01-01 09:00:00.000000000 +0900
+++ freeradius-2.0.4+dfsg/debian/freeradius-peap.postinst 2008-07-08 22:13:50.000000000 +0900
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+set -e
+
+case "$1" in
+ configure)
+ if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
+ invoke-rc.d freeradius restart
+ else
+ /etc/init.d/freeradius restart
+ fi
+ ;;
+ abort-upgrade)
+ ;;
+ abort-remove)
+ ;;
+ abort-deconfigure)
+ ;;
+esac
+
+#DEBHELPER#
diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/freeradius-tls.install freeradius-2.0.4+dfsg/debian/freeradius-tls.install
--- freeradius-2.0.4+dfsg.orig/debian/freeradius-tls.install 1970-01-01 09:00:00.000000000 +0900
+++ freeradius-2.0.4+dfsg/debian/freeradius-tls.install 2008-07-08 22:13:50.000000000 +0900
@@ -0,0 +1 @@
+usr/lib/freeradius/rlm_eap_tls*.so
diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/freeradius-tls.postinst freeradius-2.0.4+dfsg/debian/freeradius-tls.postinst
--- freeradius-2.0.4+dfsg.orig/debian/freeradius-tls.postinst 1970-01-01 09:00:00.000000000 +0900
+++ freeradius-2.0.4+dfsg/debian/freeradius-tls.postinst 2008-07-08 22:13:50.000000000 +0900
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+set -e
+
+case "$1" in
+ configure)
+ if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
+ invoke-rc.d freeradius restart
+ else
+ /etc/init.d/freeradius restart
+ fi
+ ;;
+ abort-upgrade)
+ ;;
+ abort-remove)
+ ;;
+ abort-deconfigure)
+ ;;
+esac
+
+#DEBHELPER#
diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/freeradius-ttls.install freeradius-2.0.4+dfsg/debian/freeradius-ttls.install
--- freeradius-2.0.4+dfsg.orig/debian/freeradius-ttls.install 1970-01-01 09:00:00.000000000 +0900
+++ freeradius-2.0.4+dfsg/debian/freeradius-ttls.install 2008-07-08 22:13:50.000000000 +0900
@@ -0,0 +1 @@
+usr/lib/freeradius/rlm_eap_ttls*.so
diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/freeradius-ttls.postinst freeradius-2.0.4+dfsg/debian/freeradius-ttls.postinst
--- freeradius-2.0.4+dfsg.orig/debian/freeradius-ttls.postinst 1970-01-01 09:00:00.000000000 +0900
+++ freeradius-2.0.4+dfsg/debian/freeradius-ttls.postinst 2008-07-08 22:13:50.000000000 +0900
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+set -e
+
+case "$1" in
+ configure)
+ if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
+ invoke-rc.d freeradius restart
+ else
+ /etc/init.d/freeradius restart
+ fi
+ ;;
+ abort-upgrade)
+ ;;
+ abort-remove)
+ ;;
+ abort-deconfigure)
+ ;;
+esac
+
+#DEBHELPER#
diff -ubBrN freeradius-2.0.4+dfsg.orig/debian/rules freeradius-2.0.4+dfsg/debian/rules
--- freeradius-2.0.4+dfsg.orig/debian/rules 2008-05-19 11:47:18.000000000 +0900
+++ freeradius-2.0.4+dfsg/debian/rules 2008-07-08 22:13:50.000000000 +0900
@@ -26,7 +26,7 @@
pkgdocdir = /usr/share/doc/$(package)
raddbdir = /etc/$(package)
-modulelist=krb5 ldap sql_mysql sql_iodbc sql_postgresql
+modulelist=krb5 ldap sql_mysql sql_iodbc sql_postgresql eap_peap eap_tls eap_ttls
pkgs=$(shell dh_listpackages)
# This has to be exported to make some magic below work.
@@ -80,14 +80,10 @@
--with-large-files --with-udpfromto --with-edir \
--enable-developer \
--config-cache \
- --without-rlm_eap_tls \
- --without-rlm_eap_ttls \
- --without-rlm_eap_peap \
--without-rlm_eap_tnc \
--without-rlm_otp \
--with-rlm_sql_postgresql_lib_dir=`pg_config --libdir` \
--with-rlm_sql_postgresql_include_dir=`pg_config --includedir` \
- --without-openssl \
--without-rlm_eap_ikev2 \
--without-rlm_sql_oracle \
--without-rlm_sql_unixodbc \
@@ -164,6 +160,7 @@
for mod in ${modulelist}; do \
pkg=$${mod##sql_} ; \
+ pkg=$${mod##eap_} ; \
dh_install --sourcedir=$(freeradius_dir) -p freeradius-$$pkg ; \
rm -f $(freeradius_dir)/usr/lib/freeradius/rlm_$$mod*.so ; \
done
@@ -174,12 +171,6 @@
dh_strip -a --dbg-package=freeradius-dbg
dh_makeshlibs -a -n
- for pkg in ${pkgs} ; do \
- if dh_shlibdeps -p $$pkg -- -O 2>/dev/null | grep -q libssl; then \
- echo "$$pkg links to openssl" ;\
- exit 1 ;\
- fi ;\
- done
dh_shlibdeps
binary-common:
2008年7月3日木曜日
netflow # 2
ながーい寄り道をしてやっと 2。何のことは無い libpcap 入れるんだけど、ノーマル以外にもいくつかありますよ。という閑話が終って本題。ミラーポートをキャプチャして netflow として export するもの。
# netfilter メンテナの人は nprobe を NF_CT_ACCT 紹介で挙げていた覚えが....
コレクタ側もいくつかあると思いますが、両方共に debian パッケージにある fprobe と flow-tools を使ってみませう。lenny の例ですが etch も大差ないと思います。
- GPL だけど有償の nprobe
- 古い nprobe の NetBSD パッケージ
- fprobe
- softflowd
- 古い nprobe にイタズラした悪趣味な lprobe
# netfilter メンテナの人は nprobe を NF_CT_ACCT 紹介で挙げていた覚えが....
コレクタ側もいくつかあると思いますが、両方共に debian パッケージにある fprobe と flow-tools を使ってみませう。lenny の例ですが etch も大差ないと思います。
キャプチャするインターフェースとコレクタのホスト、ポートを尋ねられますが、後で変更できますので、適当にそのまま。# apt-get install fprobe
....
Setting up fprobe (1.1-7) ...
Starting fprobe: fprobe.
# /etc/init.d/fprobe stop
Stopping fprobe: fprobe.
で勢い衰えたので、設定からはまた後日、近日....# apt-get install flow-tools
....
Setting up flow-tools (1:0.68-12) ...
Starting flow-capture: flow-capture.
# /etc/init.d/flow-capture stop
Stopping flow-capture: flow-capture.
netflow # 1.6
カーネルパッチあててコンパイルするのが嫌で MMAP mode on使っている。あるいは、イタズラに付き合ってくれている奇特な人の内、キャプチャオンリーのデバイスにて、もうほんの一声だけ性能上げたい。かつ不具合と戦える。という方に。
カーネルが 2.6.16 と 2.6.24, 2.6.25。debian の etch, lenny で試して何となく動いている こちら sch_ingnore を試してみて下さい。etch, lenny 共にカーネルがコンパイルできるパッケージ群と iproute-dev パッケージが必要です。
# 面倒クサがって実質 libnetlink.h 参照しているだけですが....sch_ingnore.ko の方はどこでも良いのですが、まぁ /lib/modules/`uname -r`/kernel/net/sched の下に。q_ingnore.so は /usr/lib/tc の下にコピーして下さい。それなりの場所にカーネルモジュール置いたのでnet/core/dev.c の関数 netif_receive_skb() を参照してみて下さい
....と書いていて大事なコト忘レタ。#ifdef されている通りカーネルで CONFIG_NET_CLS_ACT が有効になっていないと意味がありません。
カーネルが 2.6.16 と 2.6.24, 2.6.25。debian の etch, lenny で試して何となく動いている こちら sch_ingnore を試してみて下さい。etch, lenny 共にカーネルがコンパイルできるパッケージ群と iproute-dev パッケージが必要です。
# 面倒クサがって実質 libnetlink.h 参照しているだけですが....
ingress qdisc のような面構えですが、ただただパケット落とすだけですので qdisc ではありません。カーネルモジュール$ tar xzf mod_ingnore.tgz
$ cd mod_ingnore
$ make
make -C /lib/modules/`uname -r`/source M=`pwd` modules
make[1]: Entering directory `/usr/src/linux'
CC [M] /home/jot/src/mod_ingnore/sch_ingnore.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/jot/src/mod_ingnore/sch_ingnore.mod.o
LD [M] /home/jot/src/mod_ingnore/sch_ingnore.ko
make[1]: Leaving directory `/usr/src/linux'
cc -I./include -shared -fpic -o q_ingnore.so q_ingnore.c
$ ls
Makefile include q_ingnore.so sch_ingnore.mod.c
Module.markers modules.order sch_ingnore.c sch_ingnore.mod.o
Module.symvers q_ingnore.c sch_ingnore.ko sch_ingnore.o
これで eth1 はキャプチャはしますが、その後通常よりちょっとだけ早くパケット落とします。# depmod -a
# tc qdisc add dev eth1 ingnore
# tc qdisc ls dev eth1
qdisc ingnore ffff: parent ffff:fff1
....と書いていて大事なコト忘レタ。#ifdef されている通りカーネルで CONFIG_NET_CLS_ACT が有効になっていないと意味がありません。
netflow # 1.5
ピーピング・トムにならなかった方、卒業した方。ようこそ、続きです。
tcpdump などキャプチャするもの大抵は libpcap を用います。キャプチャする linux box の性能とネットワークの流量に依存してしまいますが、linux でのノーマルの libpcap は性能が芳しくないために結構なパケットを取りこぼしてしまいます。もっと効率良くキャプチャをっ。と
1 か 2 がお勧めですが、ドキュメント眺めたり Google様に尋ねながら so name がディストリビューション標準の libpcap と同じ名前になるよう shared library 作ってみて下さい。適当な...例えば /home/jot/lib に置いて、なかなか難かしい条件ですが、一定の量。あるいはフルフルの量を機器に通して
おぉっと唸った。かつ、置き換えた事実を忘れない。かつ、ちょっと位の不具合とは戦える。という方。置き換えましょう。
余談ですがトラヒック負荷かけるのであれば CONFIG_NET_PKTGEN をDocumentation/networking/pktgen.txt 眺めたり、こちらを参照したりで pktgen.sh。あるいは PF_RING の方は stream.c なるものを使っていたらしい。その当時は無かったカーネルスペースの pktgen の方がキョーレツ。
tcpdump などキャプチャするもの大抵は libpcap を用います。キャプチャする linux box の性能とネットワークの流量に依存してしまいますが、linux でのノーマルの libpcap は性能が芳しくないために結構なパケットを取りこぼしてしまいます。もっと効率良くキャプチャをっ。と
- カーネルパッチとユーザランド。勿論 libpcap 込みのPF_RING
- vanilla カーネルに組み込まれている CONFIG_PACKET_MMAP を用いた A libpcap version which supports MMAP mode on
- 2 にイタズラして環境変数付けなくても良い悪趣味 libpcap
1 か 2 がお勧めですが、ドキュメント眺めたり Google様に尋ねながら so name がディストリビューション標準の libpcap と同じ名前になるよう shared library 作ってみて下さい。適当な...例えば /home/jot/lib に置いて、なかなか難かしい条件ですが、一定の量。あるいはフルフルの量を機器に通して
tcpdump -ni any > /dev/null
LD_LIBRARY_PATH=/home/jot/lib tcpdump -ni any > /dev/null
#### の箇所、結構な数減っていません?# tcpdump -ni any > /dev/null
tcpdump: WARNING: Promiscuous mode not supported on the "any" device
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
^Ctcpdump: pcap_loop:
n packets captured
n packets received by filter
#### packets dropped by kernel
おぉっと唸った。かつ、置き換えた事実を忘れない。かつ、ちょっと位の不具合とは戦える。という方。置き換えましょう。
余談ですがトラヒック負荷かけるのであれば CONFIG_NET_PKTGEN を
netflow # 1
exporter はその 5 で終らせてもらって新たに。netflow を喋ることができない機器のポートをミラーしてキャプチャ。netflow に変換? してコレクタに送ってごにょごにょする方法。
まずは機器の設定ですが、「ポートミラーリング」で Google様に尋ねて下さい。気を付ける点ですが、一つのポートをミラーリングするにあたっては全二重の場合、送信 / 受信それぞれ一つづつ。加えて自身が通信するため。計 3つインターフェースが必要になります。例えば Catalyst で fa0/1 の送信を fa0/11 受信を fa0/12。自身が通信するポートを fa0/21 といった場合
OpenMicroServer + debian を例えにして、eth0 が自身の通信。eth1 で送信、eth2 で受信のキャプチャをするとして eth0 を fa0/21 と。fa0/11 と eth1、fa0/12 と eth2 をそれぞれ繋ぎます。eth1, 2 でキャプチャするのは NAPI 対応の e1000 だから。
親切なアプリケーションであれば必要ありませんが、一応 eth1, 2 を promisc にしておきます。/var/lib/apt/lists/*_Packages 内の ^Depends:.*libpcap の怪しそうなパッケージインストールしてニヤニヤと....で止めたら犯罪助長するのかっ。と怒られそうですが、長くなりそうなので #2 で。
まずは機器の設定ですが、「ポートミラーリング」で Google様に尋ねて下さい。気を付ける点ですが、一つのポートをミラーリングするにあたっては全二重の場合、送信 / 受信それぞれ一つづつ。加えて自身が通信するため。計 3つインターフェースが必要になります。例えば Catalyst で fa0/1 の送信を fa0/11 受信を fa0/12。自身が通信するポートを fa0/21 といった場合
手元に機器があるワケでは無いので適当。こんな感じといったところです。monitor session 1 source int fa0/1 tx
monitor session 2 source int fa0/1 rx
monitor session 1 dest int fa0/11
monitor session 2 dest int fa0/12
int fa0/21
switchport mode access
switchport access vlan 100
spanning-tree portfast
OpenMicroServer + debian を例えにして、eth0 が自身の通信。eth1 で送信、eth2 で受信のキャプチャをするとして eth0 を fa0/21 と。fa0/11 と eth1、fa0/12 と eth2 をそれぞれ繋ぎます。eth1, 2 でキャプチャするのは NAPI 対応の e1000 だから。
親切なアプリケーションであれば必要ありませんが、一応 eth1, 2 を promisc にしておきます。
キャプチャのメジャードコは tcpdump。と言ってしまうとオヤジ? tshark とか使うのかしら? まぁ tcpdump とさせてもらってip link set eth1 promisc on
ip link set eth2 promisc on
とツラツラと流れ行く画面を眺めて下さい。あきたらtcpdump -ni any
2008年6月17日火曜日
PACKET_MMAP #2
ごめんなさいっ。libpcap のパッチおかしかった。修正しましたので、以前のものを持って行った方は、取り直して下さい、すいません。でパッチのあて方ですが、debian 前提で etch lenny 共に
一つ (だけじゃないけど) イマイチなのが PACKET_RX_RING 使っているか使っていないかがわからない点。見栄えが悪いですが stderr に use PACKET_MMAP, ... なんて出力があれば PACKET_RX_RING 使っています。/proc/net/packet あたりでわかれば嬉しいけど、理解していない。
あぁ、また一つ。繰り返しになりますが、デフォルト 8Mbyte mmap します。1514 フルであれば 4096 パケットです。多すぎ? 環境変数 PCAP_MMAP_MEMSIZE をバイト単位で調節して下さい。tcpdump であれば
して、ソースディレクトリに cd した後apt-get source libpcap0.8
- etch
- これ持って行って
で上位ディレクトリに deb パッケージが出来ます。patch -p1 < libpcap0.8-etch.patch
./debian/rules binary - lenny
- 持って行くモノがこれ - libpcap0.8-lenny.patch 以外は etch と同じです。
一つ (だけじゃないけど) イマイチなのが PACKET_RX_RING 使っているか使っていないかがわからない点。見栄えが悪いですが stderr に use PACKET_MMAP, ... なんて出力があれば PACKET_RX_RING 使っています。
あぁ、また一つ。繰り返しになりますが、デフォルト 8Mbyte mmap します。1514 フルであれば 4096 パケットです。多すぎ? 環境変数 PCAP_MMAP_MEMSIZE をバイト単位で調節して下さい。tcpdump であれば
あるいはPCAP_MMAP_MEMSIZE=262144 tcpdump -nevi eth0 'ip and port...
などなど。また ingnore や lprobe については後日、近日。と自分に言いきかせて、今日も夜が更けてくてくてく....export PCAP_MMAP_MEMSIZE=524288
tcpdump ...
2008年6月10日火曜日
PACKET_MMAP #1
広告? チラシ? の裏よりタチが悪い。自分でも忘れない内にコンパイルや使い方書かないと....と思いながら、モチベーションというか忙しかったりする。で、チラシの裏。./debian/rules binary する前に autoconf が必要。
- debian etch libpcap0.8 用の PACKET_MMAP パッチ
- sch_ingnore モジュールにtc 用の .so を追加。
2008年6月8日日曜日
netflow の exporter その 5
その後ですが、PF_RING を使わずに。と NetBSD のパッケージ? にある古い nprobe 持ってきて大幅ダーティハック。稚拙ですが
IPv4 だけだし、flow とは名ばかりで TCP のフラグ見ていないし、IP のフラグメンテーションも処理していません。ただノーマル? の libpcap 使った nprobe や fprobe よりはパケット落ちがありません。で、OpenMicroServer にて最高 25kpkt/s 程の中、何とかパケット落ちなく頑張って稼働している様です。
flow-tools の flow-capture で集めた後、flowscan-cuflow で RRD グラフを作ってみたのですが /24 とかのネットワークが混在しまくっていて、マスクの集合で in と out を追いきれず....utils の下にインターフェースで in out を区別する、ほんのちょっとだけ修正した CUFlow.pm がありますので、こちらも良ろしかったら。
Netflow exporter もどき lprobe として ここに置いときます。パッチなど送っていただければ幸せです。
IPv4 だけだし、flow とは名ばかりで TCP のフラグ見ていないし、IP のフラグメンテーションも処理していません。ただノーマル? の libpcap 使った nprobe や fprobe よりはパケット落ちがありません。で、OpenMicroServer にて最高 25kpkt/s 程の中、何とかパケット落ちなく頑張って稼働している様です。
flow-tools の flow-capture で集めた後、flowscan-cuflow で RRD グラフを作ってみたのですが /24 とかのネットワークが混在しまくっていて、マスクの集合で in と out を追いきれず....utils の下にインターフェースで in out を区別する、ほんのちょっとだけ修正した CUFlow.pm がありますので、こちらも良ろしかったら。
drop, only drop ingress qdisc
例の PF_RING であったり、web を彷徨っていると NET_RX_CONSUMED なるパッチがあったり、キャプチャしている「だけ」のインターフェースでは PF_PACKET socket に届けた後は何もしなくて良いよ。vanilla カーネルに直接手を入れるのを避けるためには...とツラツラソース眺めたところ ingress qdisc の判断が良さげ。
で、tc で何とかならないか。と
こちらも毎度正確な測定はしていないけど、こちらのlinpcap.c にて表示せず、送信側は pktgen で試してみたところ、数パーセントだけど確実に取得量は増えている模様。
で、tc で何とかならないか。と
試してみたところ、かえって遅くなってしまった。恐らく毎度の勉強不足。フィルタではなく、ただただ落とす方法を探せず....とは言え何とかならないか? とダーティハックtc qdisc add dev eth1 ingress handle ffff:
tc filter del dev eth1 parent ffff: protocol ip priority 10 u32 match u8 0 0 police mtu 1 drop flowid :1
無視するだけの - いんぐのあ (ingnore)ネーミングセンス無さすぎ? tc コマンドのソース持って来て ingress 該当部分を ingnore とすれば使えるけど面倒そうなので、ユーザスペースのコマンドは後日予定。
こちらも毎度正確な測定はしていないけど、こちらの
mmap'ed libpcap
PF_RING ではなくて PACKET_MMAP を使おう。ということで libpcap 試していたが
apt-get source libpcap0.8 した後に debian/patch に上記 60_ring.diff 置いて、同じディレクトリにある series にエントリ追加します。で debian/rules binary なのですが、fakeroot では組み込まれないと思います。
お付き合いいただける方はパッチとか送っていただけると、幸せです。
と言うか環境変数設定「しなくては」動作しない。よく忘れるし、もの珍しげに CONFIG_SLUB としているせいか PCAP_MEMORY=max も怪しげ。細かな時間調整も特段必要なく、理解していないマルチキャストを消したり....> おまけと言っては失礼だけど環境変数設定すると様子が眺められたり、挙動を変更できるらしいのも、ちょと嬉し。
で debian lenny 用のパッチ正直試しておらず、tcpdump 動いたぁ。のレベルですが、良かったら使ってやって下さい。何も指定しないと 8Mbyte のメモリを map します。環境変数 PCAP_MMAP_MEMSIZE で変更可ですが、私は忘れるでしょう...
apt-get source libpcap0.8 した後に debian/patch に上記 60_ring.diff 置いて、同じディレクトリにある series にエントリ追加します。で debian/rules binary なのですが、fakeroot では組み込まれないと思います。
お付き合いいただける方はパッチとか送っていただけると、幸せです。
2008年6月3日火曜日
kgdb?
ただただソース眺めているだけの私に言われたくないだろうが 2.6.26 から kgdb が vanilla にマージされるそーで rc 見ると確かに....驚いた。信念よりも嬉しい人の方が多くなったのかなぁ。十中九点九 私には使いきれない。が、ちょっと jot。
カーネルコンパイルのオプションで/boot/grub/menu.lst にこんな感じで update-grub
カーネルコンパイルのオプションで
としてコンパイル。VMWare にインストールした後でCONFIG_DEBUG_INFO=y
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
あっ、その前にありがたくこちらを参考にしつつシリアルの設定。一点手元の socat では# kopt=root=/dev/sda1 ro kgdbwait kgdboc=ttyS0,115200
では NG でsocat unix-connect:/tmp/vmware-serial-$1-$PORT \
pty:link=/tmp/ttyv$1$PORT,raw,echo=0,waitslave
pty,link=...
としなくてはならんかった。その後リブートするとで止まる。ホスト側で socat して、手元に先の vmlinux 置いて....
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
00:09 ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:0a ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
kgdb: Registerd I/O driver kgdboc.
kgdb: Waiting for connection from remote gdb...
をぉ.... # こーして夜がふけてくてくてくてく$ pwd
/usr/src/i386linux
$ gdb -q
(gdb) set remotebaud 115200
(gdb) symbol-file vmlinux
Reading symbols from /usr/src/i386linux/vmlinux...done.
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) target remote /tmp/ttyvHOST
Remote debugging using /tmp/ttyvHOST
kgdb_breakpoint () at kernel/kgdb.c:1677
1677 wmb(); /* Sync point after breakpoint */
(gdb) n
[New Thread 1]
1678 atomic_set(&kgdb_setting_breakpoint, 0);
(gdb) n
1679 }
(gdb) list
1674 atomic_set(&kgdb_setting_breakpoint, 1);
1675 wmb(); /* Sync point before breakpoint */
1676 arch_kgdb_breakpoint();
1677 wmb(); /* Sync point after breakpoint */
1678 atomic_set(&kgdb_setting_breakpoint, 0);
1679 }
1680 EXPORT_SYMBOL_GPL(kgdb_breakpoint);
1681
1682 static int __init opt_kgdb_wait(char *str)
1683 {
(gdb)
2008年5月6日火曜日
PF_RING のパッチ
2004年 3月と結構以前の話だけど、こんなやりとりがあったらしい。jamal さんとしては PACKET_MMAP (と NAPI) で充分。でないならばプロファイル基に相談しましょ。といったところ。確かに大枠の仕組としてはソケットのバッファを mmap するという点で同じ。何が違うのか...
例のごとく読んでいないが、net/core/dev.c の
という何となくの経過を経て、やっぱ使うの止めた。vanilla にある CONFIG_PACKET_MMAP で戦ってみようと思う今日この頃。こっちも聞きかじっただけだが、キャプチャではなくパケット転送するのであれば
例のごとく読んでいないが、
netif_receive_skb()
の初っ端で、ハンドラ呼び出して...む〜ん、わからん...で return(NET_RX_SUCCESS);
してる。fragmentation 処理入れたり、forwarding の場合はもう一度 queue に入れたり? わからんのに、こんなことゆーと叱られそうだが、何よりソースが見難い...ごめんなさい。という何となくの経過を経て、やっぱ使うの止めた。vanilla にある CONFIG_PACKET_MMAP で戦ってみようと思う今日この頃。こっちも聞きかじっただけだが、キャプチャではなくパケット転送するのであれば
NF_CT_ACCT
- この PDF辺りから始まったお話? とかどうかしら?
X でのキーボード
自宅の古い Vaio (PCG-R505R/K) で X を起動すると _(underscore) と ](rightbracket) が使えていない事が今になって判明。と、最近は Web ブラウズしかしていないことも判明。debian lenny の xorg.conf にて
で OK。Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "jp106"
Option "XkbLayout" "jp"
# Option "XkbVariant" "106"
Option "XkbOptions" "ctrl:swapcaps"
EndSection
2008年4月24日木曜日
netflow の exporter その 4
その 5 はその後で...測定せず多々感覚的だけど、いったん自分の中ではオチをつけよう。
きっかけは....良くある話かわからないけどアカウンティングを取ることができないルータ、スイッチでアカウントを取りたかったと。でインターフェースのミラーをして、キャプチャするんだけど送信、受信で 2つのインターフェースの面倒を見なくちゃイカンと。100Mbit 全二重に流れるパケットをロス少なく (古い) nprobe とぷらっとホームさんの OpenMicroServer で取ろう。ってトコ。
新しい nprobe も購入してみたが netflow の v9 や VLAN MPLS などが不要であれば古いものでも、まぁ。加えて正確なフローというより、どこと、どこの、どのポート使った通信が多いか。程度がわかれば十分だし。
MMAPed な libpcap (って言うのかな?) と PF_RING な libpcap では、PF_RING の方が少し良さげ。ただしデバイスに NULL あるいは any を指定することができず、カーネルパッチも必要。また pcap_hoge を pfring_hoge で実装しているのだけど、何となく pcap_loop に重きを置いて、他が足りない感アリ。
PF_RING で二つのインターフェースを一つの (nprobe) プロセスで面倒見ようとこんなパッチ眺めながら epollで実装してみたが、一つのインターフェースで二つプロセス稼働させた方が全く良い。PF_RING のカーネルパッチ眺めると epoll ではなく poll の方が良い? 試しておらず。
むーん。と悩んだ結果....ifenslave で二つのインターフェースをバンディングして、これをデバイスと指定することで良しとした。ring.ko をロードする時に受信のみとするのと ethtool の -G で デバイスの rx ring を大きめに設定してみる。
で結果は 100M全二重はチト辛い。上下合わせてピーク 150M程度のトラヒックで/proc/net/pf_ring/<プロセスID>-<デバイス名>- みたいなエントリを覗くと 6〜7% ロスしてる。
何とかできるか...と無い知恵を絞って画策してみたが nprobe の商用サイト? で販売している筐体 nBox のスペック眺めたところ、OpenMicroServer では難かしいカモ。と弱気になったところで...オチ。
きっかけは....良くある話かわからないけどアカウンティングを取ることができないルータ、スイッチでアカウントを取りたかったと。でインターフェースのミラーをして、キャプチャするんだけど送信、受信で 2つのインターフェースの面倒を見なくちゃイカンと。100Mbit 全二重に流れるパケットをロス少なく (古い) nprobe とぷらっとホームさんの OpenMicroServer で取ろう。ってトコ。
新しい nprobe も購入してみたが netflow の v9 や VLAN MPLS などが不要であれば古いものでも、まぁ。加えて正確なフローというより、どこと、どこの、どのポート使った通信が多いか。程度がわかれば十分だし。
MMAPed な libpcap (って言うのかな?) と PF_RING な libpcap では、PF_RING の方が少し良さげ。ただしデバイスに NULL あるいは any を指定することができず、カーネルパッチも必要。また pcap_hoge を pfring_hoge で実装しているのだけど、何となく pcap_loop に重きを置いて、他が足りない感アリ。
PF_RING で二つのインターフェースを一つの (nprobe) プロセスで面倒見ようとこんなパッチ眺めながら epollで実装してみたが、一つのインターフェースで二つプロセス稼働させた方が全く良い。PF_RING のカーネルパッチ眺めると epoll ではなく poll の方が良い? 試しておらず。
むーん。と悩んだ結果....ifenslave で二つのインターフェースをバンディングして、これをデバイスと指定することで良しとした。ring.ko をロードする時に受信のみとするのと ethtool の -G で デバイスの rx ring を大きめに設定してみる。
で結果は 100M全二重はチト辛い。上下合わせてピーク 150M程度のトラヒックで
何とかできるか...と無い知恵を絞って画策してみたが nprobe の商用サイト? で販売している筐体 nBox のスペック眺めたところ、OpenMicroServer では難かしいカモ。と弱気になったところで...オチ。
2008年4月16日水曜日
netflow の exporter その 3
先日書き綴ったものの修正。
>Documentation/networking/packet_mmap.txt のサイトはアクセスできずmb() でアセンブラがあったが、使っておらず、またこれら PACKET_MMAP な libpcap を参考にした lincap.c についても
>ここからソース持ってきてみたものの x86 のみ? で早々にあきらめ。
mb() についてはカーネルヘッダから、それなりのものを持って来れば良さげ。また>PF_RING に挑戦したが...扱っている量がそーとーなレベルという事に気付く。
なんて書いたが、少々試したところ歴然たる差があった。当初試したときには pcap_open()
での *device
に NULL あるいは any が指定できるものと思い込んでいたが、指定して PF_RING が feature されずに動いてしまったため差が無いと思い込んでいた。この any が指定できないのが少々辛かったりするので PACKET_MMAP の libpcap も作成して試してみよう。
おまけと言っては失礼だけど環境変数設定すると様子が眺められたり、挙動を変更できるらしいのも、ちょと嬉し。
で、libpcap-0.9.8.20080206.tar.gz を持ってきて展開した後、debian lenny にて apt-get source libpcap0.8 この debian ディレクトリを丸ごとコピーして以下 debian/patches/10_shared_lib.diff を参考にした Makefile.in のパッチ。rules にて patch 当てないようにして--- libpcap-0.9.8.20080206/Makefile.in 2008-02-08 08:49:02.000000000 +0900
+++ libpcap-0.9.8.20080206-deb/Makefile.in 2008-04-16 22:12:48.000000000 +0900
@@ -116,6 +116,17 @@
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(libpcap_la_LDFLAGS) $(LDFLAGS) -o $@
DEFAULT_INCLUDES = -I.@am__isrc@
+
+# some defines for shared library compilation
+MAJ=$(shell head -1 debian/changelog | perl -nle 'm/\S+(\d.\d)\s+\(\d\.\d\.\d+-\S+\)/ and print $$1')
+MIN=$(shell head -1 debian/changelog | perl -nle 'm/\S+\s+\(\d\.\d\.(\d+)-\S+\)/ and print $$1')
+LIBVERSION=$(shell head -1 debian/changelog | perl -nle 'm/\S+\s+\((\S+)-\S+\)/ and print $$1')
+VERSION=$(MAJ).$(MIN)
+LIBNAME=pcap
+LIBRARY=lib$(LIBNAME).a
+SOLIBRARY=lib$(LIBNAME).so
+SHAREDLIB=$(SOLIBRARY).$(LIBVERSION)
+
depcomp =
am__depfiles_maybe =
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -155,6 +166,7 @@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
+CFLAGS_SHARED = -shared -Wl,-soname,$(SOLIBRARY).$(MAJ)
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
@@ -278,7 +290,7 @@
LTRELEASE = $(RMAJOR).$(RMINOR).$(RREVISION)
LTVERSION = $(VCURRENT):$(VREVISION):$(VAGE)
PCAP = @V_PCAP@
-PSRC = pcap-@V_PCAP@.c
+PSRC = pcap-@V_PCAP@.c pcap-ring.c
FSRC = fad-@V_FINDALLDEVS@.c
FADS = @V_FADS@
LEX = @V_LEX@
@@ -298,7 +310,9 @@
MAINTAINERCLEANFILES = Makefile.in Makefile.am.bak configure.ac.bak aclocal.m4 configure config.h.in
MOSTLYCLEANFILES = bpf_filter.c scanner.c grammar.c version.c lex.yy.c \
tokdefs.h version.h os-proto.h \
- stamp-h stamp-h.in
+ stamp-h stamp-h.in $(OBJ_PIC) libpcap.so*
+
+OBJ_PIC = $(PSRC:.c=_pic.o) $(FSRC:.c=_pic.o) $(CSRC:.c=_pic.o) $(SSRC:.c=_pic.o) $(GENSRC:.c=_pic.o)
HDR = arcnet.h atmuni31.h config.h ethertype.h gencode.h \
llc.h nlpid.h pcap-bpf.h pcap-int.h pcap-namedb.h \
@@ -384,6 +398,9 @@
$(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
else :; fi; \
done
+ $(INSTALL_DATA) $(SHAREDLIB) $(DESTDIR)$(libdir)/
+ ln -sf $(SHAREDLIB) $(DESTDIR)$(libdir)/$(SOLIBRARY).$(MAJ)
+ ln -sf $(SOLIBRARY).$(MAJ) $(DESTDIR)$(libdir)/$(SOLIBRARY)
uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
@@ -411,7 +428,12 @@
-rm -f *.tab.c
.c.o:
- $(COMPILE) -c $<
+ # $(COMPILE) -c $<
+ $(COMPILE) -c -o $@ $(srcdir)/$*.c
+
+%_pic.o: %.c
+ @rm -f $@
+ $(COMPILE) -fPIC $(CFLAGS) -c -o $@ $(srcdir)/$*.c
.c.obj:
$(COMPILE) -c `$(CYGPATH_W) '$<'`
@@ -767,7 +789,7 @@
#all-local:
# rm -f libpcap.a; $(LN_S) .libs/libpcap.a libpcap.a
-all-local: libpcap.a
+all-local: libpcap.a $(SHAREDLIB)
libpcap.a: .libs/libpcap.a
cp .libs/libpcap.a libpcap.a
@@ -792,6 +814,13 @@
yyy:
sh beenthere
+$(SHAREDLIB): $(OBJ_PIC)
+ -@rm -f $@
+ -@rm -f $(SOLIBRARY) $(SOLIBRARY).$(MAJ)
+ $(CC) $(CFLAGS_SHARED) -o $(SHAREDLIB) $(OBJ_PIC) -lc
+ ln -s $(SHAREDLIB) $(SOLIBRARY).$(MAJ)
+ ln -s $(SOLIBRARY).$(MAJ) $(SOLIBRARY)
+
# generated source
pcap.3.gz: pcap.3
gzip -c < pcap.3 > pcap.3.gz
@@ -800,12 +829,18 @@
rm -f bpf_filter.c
$(LN_S) $(srcdir)/bpf/net/bpf_filter.c bpf_filter.c
+bpf_filter_pic.o: bpf_filter.c
+ $(COMPILE) -fPIC $(CFLAGS) -c bpf_filter.c -o $@
+
scanner.o: scanner.c tokdefs.h
scanner.c: scanner.l tokdefs.h
@rm -f $@
$(V_LEX) -t scanner.l > $$$$.$@; mv $$$$.$@ $@
+scanner_pic.o: scanner.c tokdefs.h
+ $(COMPILE) -fPIC $(CFLAGS) -o $@ -c scanner.c
+
tokdefs.h:
rm -f grammar.c
make grammar.o
@@ -818,6 +853,10 @@
mv y.tab.c grammar.c
mv y.tab.h tokdefs.h
+grammar_pic.o: grammar.c
+ @rm -f $@
+ $(COMPILE) -fPIC $(CFLAGS) -Dyylval=pcap_lval -o $@ -c grammar.c
+
version.o: version.c
version.c: $(srcdir)/REVISION version.h
@@ -828,6 +867,13 @@
version.h: $(srcdir)/VERSION
@rm -f $@
sed -n -e 's/.*/static const char pcap_version_string[] = "libpcap version &";/p' $(srcdir)/VERSION > $@
+
+version_pic.o: version.c
+ $(COMPILE) -fPIC $(CFLAGS) -c version.c -o $@
+
+pcap-ring_pic.o: version.c
+ $(COMPILE) -fPIC $(CFLAGS) -c pcap-ring.c -o $@
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
# 早い時間の帰宅って嬉しいなぁ....
2008年4月11日金曜日
chroot で SSD & cross compile
OpenMicroServer のクロスコンパイルをするために SSD なるディストリビューションがあるらしく Web を彷徨うと Windows 方々は VMWare-Player 上で。と言うのが多いらしい。カーネルのコンパイルしてファームに組み込み。までしか試していないけど linux ならば。と chroot で試したところ、どうもできたらしい。
# なんて言っているが VMWare や lguest でも試した後の話。
ぷらっとホームさんのドキュメント``OpenMicroServer/OpenBlockS266 のファームウェアのカスタマイズ''を多々参考にしつつ長くなるけど...i386 のバイナリ tgz を揃えた後で
# なんて言っているが VMWare や lguest でも試した後の話。
ぷらっとホームさんのドキュメント``OpenMicroServer/OpenBlockS266 のファームウェアのカスタマイズ''を多々参考にしつつ長くなるけど...i386 のバイナリ tgz を揃えた後で
ごにょごにょ# mkdir SSD
# for i in tmp/*.tgz; do
> tar xzpf $i -C SSD
# done
# pushd SSD/usr/src/dist/distfiles/
# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/distfiles/linux-2.6.16.59-004-mips-obs.patch.bz2
....
# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/distfiles/linux-2.6.16.59.patch.bz2
....
# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/distfiles/linux-mips-2.6.16.tar.bz2
....
# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/distfiles/usagi-linux26-stable-20050714-2.6.16.diff.bz2
....
# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/distfiles/mtd-snapshot-20060328.tar.bz2
....
# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/distfiles/pcmcia-cs-3.2.8.tar.gz
....
# cd ../../distrib/mipsel-obs1550/product/initrd/
# wget -nd ftp://ftp.plathome.co.jp/pub/ssdlinux/0.4-LATEST/mipsel-obs1550/installation/ramdisk.image-product.gz
....
# popd
# chroot SSD
# cd /etc/
# cp mk.conf mk.conf.old
# vi mk.conf
# diff -ub mk.conf.old mk.conf
--- mk.conf.old 2008-04-10 23:29:42.000000000 +0900
+++ mk.conf 2008-04-10 23:30:51.000000000 +0900
@@ -10,19 +10,19 @@
#KERNEL_CONFIG?= /any_dir/my_kernel_config
# Cross Compile for OpenBlockS
-#CROSS_BUILD?= powerpc
-#DESTDIR?= /home/dest-powerpc
-#RELEASEDIR?= /home/release-powerpc
+CROSS_BUILD= mipsel
+DESTDIR= /home/dest/mipsel
+RELEASEDIR= /home/release/mipsel
# OPENBLOCKS 'obs50','obs200','obs266' or 'none'
-OPENBLOCKS?= none
+OPENBLOCKS= obs1550
-HAVE_CVS?= yes
+HAVE_CVS?= no
DEVELOPTOOLS?= yes
USE_PAM?= yes
USE_PCMCIA?= yes
USE_EXT3FS?= yes
-IPV6?= yes
+IPV6?= no
WITH_X11?= no
SSDVERSION= 0.4
# mknod /dev/null c 1 3
# export MACHTYPE
# export HOSTTYPE
# export SHELL
# export PATH=$PATH:/usr/cross/mipsel/bin/
# cd /usr/src/mkdist/mtd
# bmake
....
# cd /usr/src/mkdist/kernel
# bmake
....
# cd /usr/src/mkdist/pcmcia-cs
# bmake
....
気を付ける点としては pcmcia-cs を持ってきておくことと /dev/null 作ること位かしら?# cd /usr/src
# bmake -DNOCLEAN build_kernel
....
# cd /usr/src/distrib/mipsel-obs1550/product/treeboot
# bmake
....
# ls
Makefile System-product.map zImage.initrd.treeboot-product
# exit
# ls -l SSD/usr/src/distrib/mipsel-obs1550/product/treeboot
total 9588
-rw-r--r-- 1 root root 172 Aug 23 2005 Makefile
-rw-r--r-- 1 root root 609544 Apr 11 00:03 System-product.map
-rwxr-xr-x 1 root root 9280780 Apr 11 00:03 zImage.initrd.treeboot-product
2008年4月10日木曜日
netflow の exporter その 2
nprobe って言っているなら気付けよっ。との事で、こちら をありがたく参考しつつ PF_RING に挑戦したが...扱っている量がそーとーなレベルという事に気付く。OpenMicroServer にて nprobe 稼働させてロスしまくっていても flow-capture でひろってみると 5分おきに 6M位 のファイルができてる...
# 参考にさせていただいたところ補足。libpfring でのコンパイルは -fPIC 入れた方が良さげ。
# また libpfring の so は単独ではなく libpcap の README 曰く libpcap 作る時に *.o 加えてあげるらしい。
Cisco コンソール & cu & emacs
普段は emacs にて ``M-x shell'' の後 telnet 使っているけどコンソールは持ち運びできる PC が Windows なので TeraTerm なるものを使っていた。コンソールも emacs から。と同じように shell 起動して
なんてやってみたがウマくない。例のごとく Web をウロウロしていたら Term Mode なるものを発見。``M-x term'' の後で cu してみたところ...おぉ ? でヘルプでるし TAB で補完もされる。``C-j'' ``C-k'' で line mode と char mode の切替が必要になるが、使い慣れた emacs でログは取れるし、コピペもできるし、ちょと嬉し。cu --parity=none -s 9600 -l /dev/ttyUSB0
2008年3月31日月曜日
netflow の exporter
日本で debian で mipsel って言わずもがな? ぷらっとホームさんの OpenMicroServer(TM) 。で netflow の exporter を探してみたところ、debian パッケージにあったのが fprobe。ulog の方が良さげだけど、自身を通るトラヒックではなくて、promisc モードで取得する必要あり。かつ EBT の nat テーブル PREROUTING で全て取得できるか定かでは無いし、BRIDGE_EBT_ULOG は OBSOLETE だし。
なので素の fprobe を二つ動かして uptime 見たらロードアベレージが、ほぼ 2。2〜 3割落としてしまったいるようなので、どうしようか...考えたのが
なので素の fprobe を二つ動かして uptime 見たらロードアベレージが、ほぼ 2。2〜 3割落としてしまったいるようなので、どうしようか...考えたのが
- nprobe (本家じゃない)ソースがどこにあるかわからなかった。ぷらっとホームさんでも配布しているけど未テスト
- カーネルコンパイルして、やっぱり ebtables を使う
- PACKET_MMAP を使った libpcap を入れて fprobe で再挑戦
debian でクロスコンパイル 2
続きと言うか、ちょっと jot。Convert library packages で、こんなんならない?
で悩むことしきり。結局 2755 ってパーミッションどこかで見た覚えが。dpkg-deb を string してみて、適当に。例えばカレントに tmp ってディレクトリ作った後に
# ルートで作業するなっ....て....# dpkg-cross -a mipsel -b libc6_2.7-6_mipsel.deb
Building libc6-mipsel-cross_2.7-6_all.deb
dpkg-cross: building package with dpkg-deb -b failed.
dpkg-cross: conversion of libc6_2.7-6_mipsel.deb failed.
# dpkg-cross --verbose -a mipsel -b libc6_2.7-6_mipsel.deb
Excluding: gcc binutils gpm cpp debianutils xfree86-common libpam-runtime xlibs-data debconf tzdata
Trying to build: libc6_2.7-6_mipsel.deb
Going to convert libc6_2.7-6_mipsel.deb
Extracting libc6_2.7-6_mipsel.deb
Extracting information from control file
Creating destination package tree
Creating /usr/share/doc/libc6-mipsel-cross/README
Installing shlibs file
Creating control file
Creating md5sums file
dpkg-deb: building package `libc6-mipsel-cross' in `./libc6-mipsel-cross_2.7-6_all.deb'.
dpkg-deb: control directory has bad permissions 2755 (must be >=0755 and <=0775)
dpkg-cross: building package with dpkg-deb -b failed.
dpkg-cross: conversion of libc6_2.7-6_mipsel.deb failed.
で悩むことしきり。結局 2755 ってパーミッションどこかで見た覚えが。
/tmp を g+s にするのって流行ではないのかしら?# TMPDIR=tmp dpkg-cross -a mipsel -b libc6_2.7-6_mipsel.deb
sh: tmp/dpkg-cross.0MFJb4nZ/dst/DEBIAN/md5sums: No such file or directory
Building libc6-mipsel-cross_2.7-6_all.deb
2008年3月28日金曜日
debian でクロスコンパイル
ってそのままだけど DebianCrossCompilerHowto。以前は toolchain-source だっけ? 覚えておくのは
- dpkg-cross を入れておくこと
- binutils を TARGET=... debian/rules binary-cross でビルド
で VMWare 用のカーネルが出来た。$ cat /usr/bin/i486-linux-gnu-gcc
#!/bin/sh
gcc -m32 $@
2008年3月27日木曜日
lguest on 2.6.25-rc
どこで見付たか忘れちゃったけど、2.6.25-rc7-git2 には未。
mknod するにもメジャー、マイナ番号わからない。と悩んでいたら、こんな方法もあった。いや、最初は/proc/partitions ですか。
ぷらっとホームさんの SSD/Linux を lguest で動かすにあたってスワップを加えようかと思ったところ /dev/vdb とか出来ない。udev とか動いていないから?--- old/arch/x86/kernel/tsc_32.c.old 2008-03-27 23:28:27.000000000 +0900
+++ new/arch/x86/kernel/tsc_32.c 2008-03-27 23:29:51.000000000 +0900
@@ -394,13 +394,15 @@
int cpu;
if (!cpu_has_tsc)
- goto out_no_tsc;
+ return;
cpu_khz = calculate_cpu_khz();
tsc_khz = cpu_khz;
- if (!cpu_khz)
- goto out_no_tsc;
+ if (!cpu_khz) {
+ mark_tsc_unstable("could not calculate TSC khz");
+ return;
+ }
printk("Detected %lu.%03lu MHz processor.\n",
(unsigned long)cpu_khz / 1000,
@@ -433,9 +435,4 @@
tsc_enabled = 1;
clocksource_register(&clocksource_tsc);
-
- return;
-
-out_no_tsc:
- setup_clear_cpu_cap(X86_FEATURE_TSC);
}
mknod するにもメジャー、マイナ番号わからない。と悩んでいたら、こんな方法もあった。いや、最初は
CONFIG_VIRTIO_BLK=m
とかしちゃって調べていたんだけど。2008年3月25日火曜日
VMWare Workstation on 2.6.25-rc
やっぱり web から。any-any-update の 116 展開した後は、この辺りから。書かれている通り vmblock-only が.... vmnetInt.h はいじった覚えが無いけど....
iget()
とread_inode()
が良くわからんので通らないけど (私は) 実害なし。でパッチあれ?diff -ubBr old/vmmon-only/common/task.c new/vmmon-only/common/task.c
--- old/vmmon-only/common/task.c 2007-11-28 19:58:17.000000000 +0900
+++ new/vmmon-only/common/task.c 2008-03-24 22:39:29.000000000 +0900
@@ -25,7 +25,7 @@
* we do not need asm/page.h anymore in this file - not surprising, this
* is common file, yes? And Windows do not have page.h, do they?
*/
-#define _I386_PAGE_H
+#define _ASM_X86_PAGE_H
/* On Linux, must come before any inclusion of asm/page.h --hpreg */
#include "hostKernel.h"
#ifdef linux
diff -ubBr old/vmnet-only/filter.c new/vmnet-only/filter.c
--- old/vmnet-only/filter.c 2007-11-28 19:11:12.000000000 +0900
+++ new/vmnet-only/filter.c 2008-03-24 22:41:08.000000000 +0900
@@ -12,6 +12,11 @@
#include
#include "compat_skbuff.h"
#include
+
+#define NF_IP_LOCAL_OUT NF_INET_LOCAL_OUT
+#define NF_IP_LOCAL_IN NF_INET_LOCAL_IN
+#define NF_IP_POST_ROUTING NF_INET_POST_ROUTING
+
/*
* All this makes sense only if NETFILTER support is configured in our kernel.
*/
diff -ubBr old/vmnet-only/vmnetInt.h new/vmnet-only/vmnetInt.h
--- old/vmnet-only/vmnetInt.h 2007-11-28 19:25:06.000000000 +0900
+++ new/vmnet-only/vmnetInt.h 2008-03-16 21:05:28.000000000 +0900
@@ -78,8 +78,10 @@
*/
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 65)
# define SET_SK_DEAD(_sk, _val) (_sk)->dead = (_val)
-#else
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 25)
# define SET_SK_DEAD(_sk, _val) sock_valbool_flag(_sk, SOCK_DEAD, _val)
+#else
+# define SET_SK_DEAD(_sk, _val) sock_set_flag(_sk, SOCK_DEAD)
#endif
2008年3月4日火曜日
FreeRadius 〜 EAP/TLS, EAP/TTLS, EAP/PEAP 〜 Linux Debian Etch
フランス語? 全くわからないのですが、面白いものでとりあえず build だけはできました。debian etch の freeraduis ですが ssl は別となっているので、ちょっと試そうか。の都度似たような探しものばかりしていた。が、こちらのサイト が良いさげでした。ありがとうございます。毎度のことながらの勉強不足で、コマンドそのまま。ですが...でパッチを jot。freeradius-eaptls_1.1.3-3_i386.deb と freeradius-eappeap_1.1.3-3_i386.deb なるものが出来上がり。これらだけ。であれば、元サイトの下の方にアリ。
でdiff -ubBrN freeradius-1.1.3/debian/control freeradius-1.1.3-ssl/debian/control
--- freeradius-1.1.3/debian/control 2008-03-04 21:36:44.000000000 +0900
+++ freeradius-1.1.3-ssl/debian/control 2008-03-04 21:31:58.000000000 +0900
@@ -1,6 +1,6 @@
Source: freeradius
-Build-Depends: debhelper (>= 5), libltdl3-dev, libpam0g-dev, libmysqlclient15-dev | libmysqlclient-dev, libgdbm-dev, libldap2-dev, libsasl2-dev, libiodbc2-dev, libkrb5-dev, snmp, autotools-dev, dpatch (>= 2), libperl-dev, libtool, dpkg-dev (>= 1.13.19)
-Build-Conflicts: libssl-dev
+Build-Depends: debhelper (>= 5), libltdl3-dev, libpam0g-dev, libmysqlclient15-dev | libmysqlclient-dev, libgdbm-dev, libldap2-dev, libsasl2-dev, libiodbc2-dev, libkrb5-dev, snmp, autotools-dev, dpatch (>= 2), libperl-dev, libtool, dpkg-dev (>= 1.13.19), libssl-dev
+Build-Conflicts:
Section: net
Priority: optional
Maintainer: Stephen Gran
@@ -66,3 +66,19 @@
Description: set of PHP scripts for administering a FreeRADIUS server
These scripts provide a web-based interface for administering a FreeRADIUS
server which stores authentication information in either SQL or LDAP.
+
+Package: freeradius-eaptls
+Architecture: any
+Depends: freeradius (= ${binary:Version}), ${shlibs:Depends}
+Description: eap-tls module for FreeRADIUS server
+ Debian will not provide a binary version of the rlm_eap_tls.so library. This
+ module is required if you want to use EAP/TLS authentication, commonly used
+ for WiFi access points
+
+Package: freeradius-eappeap
+Architecture: any
+Depends: freeradius (= ${binary:Version}), ${shlibs:Depends}
+Description: eap-peap module for FreeRADIUS server
+ Debian will not provide a binary version of the rlm_eap_peap.so library. This
+ module is required if you want to use EAP/PEAP authentication, commonly used
+ for WiFi access points
\ No newline at end of file
diff -ubBrN freeradius-1.1.3/debian/freeradius-eappeap.install freeradius-1.1.3-ssl/debian/freeradius-eappeap.install
--- freeradius-1.1.3/debian/freeradius-eappeap.install 1970-01-01 09:00:00.000000000 +0900
+++ freeradius-1.1.3-ssl/debian/freeradius-eappeap.install 2008-03-04 21:56:40.000000000 +0900
@@ -0,0 +1 @@
+usr/lib/freeradius/rlm_eap_peap*.so
diff -ubBrN freeradius-1.1.3/debian/freeradius-eappeap.postinst freeradius-1.1.3-ssl/debian/freeradius-eappeap.postinst
--- freeradius-1.1.3/debian/freeradius-eappeap.postinst 1970-01-01 09:00:00.000000000 +0900
+++ freeradius-1.1.3-ssl/debian/freeradius-eappeap.postinst 2008-03-04 21:56:15.000000000 +0900
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+set -e
+
+case "$1" in
+ configure)
+ if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
+ invoke-rc.d freeradius reload
+ else
+ /etc/init.d/freeradius reload
+ fi
+ ;;
+ abort-upgrade)
+ ;;
+ abort-remove)
+ ;;
+ abort-deconfigure)
+ ;;
+esac
+
+#DEBHELPER#
diff -ubBrN freeradius-1.1.3/debian/freeradius-eaptls.install freeradius-1.1.3-ssl/debian/freeradius-eaptls.install
--- freeradius-1.1.3/debian/freeradius-eaptls.install 1970-01-01 09:00:00.000000000 +0900
+++ freeradius-1.1.3-ssl/debian/freeradius-eaptls.install 2008-03-04 21:34:18.000000000 +0900
@@ -0,0 +1 @@
+usr/lib/freeradius/rlm_eap_tls*.so
diff -ubBrN freeradius-1.1.3/debian/freeradius-eaptls.postinst freeradius-1.1.3-ssl/debian/freeradius-eaptls.postinst
--- freeradius-1.1.3/debian/freeradius-eaptls.postinst 1970-01-01 09:00:00.000000000 +0900
+++ freeradius-1.1.3-ssl/debian/freeradius-eaptls.postinst 2008-03-04 21:34:48.000000000 +0900
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+set -e
+
+case "$1" in
+ configure)
+ if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
+ invoke-rc.d freeradius restart
+ else
+ /etc/init.d/freeradius restart
+ fi
+ ;;
+ abort-upgrade)
+ ;;
+ abort-remove)
+ ;;
+ abort-deconfigure)
+ ;;
+esac
+
+#DEBHELPER#
diff -ubBrN freeradius-1.1.3/debian/rules freeradius-1.1.3-ssl/debian/rules
--- freeradius-1.1.3/debian/rules 2008-03-04 21:36:44.000000000 +0900
+++ freeradius-1.1.3-ssl/debian/rules 2008-03-04 21:33:21.000000000 +0900
@@ -23,8 +23,10 @@
# You will also need to add a Build-Depends on libssl-dev and libpq-dev
# and remove the Build-Conflicts on libssl-dev
# Finally you need to cat debian/control.postgresql >> debian/control
-buildssl=--without-rlm_eap_peap --without-rlm_eap_tls --without-rlm_eap_ttls --without-rlm_otp --without-rlm_sql_postgresql --without-snmp-modulelist=krb5 ldap sql_mysql sql_iodbc
+# buildssl=--without-rlm_eap_peap --without-rlm_eap_tls --without-rlm_eap_ttls --without-rlm_otp --without-rlm_sql_postgresql --without-snmp
+# modulelist=krb5 ldap sql_mysql sql_iodbc
+buildssl=--without-rlm_otp --without-rlm_sql_postgresql --without-snmp
+modulelist=krb5 ldap sql_mysql sql_iodbc eap_peap eap_tls
#buildssl=--with-rlm_sql_postgresql_lib_dir=`pg_config --libdir` --with-rlm_sql_postgresql_include_dir=`pg_config --includedir`
#modulelist=krb5 ldap sql_mysql sql_iodbc sql_postgresql
登録:
投稿 (Atom)