有線と無線LAN2枚差しに翻弄される!?
とある理由でもらい受けた古いノートPCにLinuxを入れて、自宅のちょっとしてサーバにすることにした。
ノートPCに有線LANポートは既に備わっている。
手元にはBUFFARLOの「WLI-UC-GNM2」というUSBで接続できる無線LANアダプターがある。
じゃあ、ってことで、ノートPCにこの無線LANアダプターを使って、NICの2枚差しをやってみることにした。
Linuxは使い慣れた「CentOS6」を使用。
2つのLANには別々のIPアドレスをふってみる。
将来的には有線LANと無線LANでbonding(チーミング、ともいうか)設定にして耐障害性を上げるつもり。
設定は簡単にできたんだけれど、一部「おやっ?」という動きをしていたことで、またまた毎度のことながらハマった。
その顛末を忘れないように、また同じことでハマる人が出てきた時の助けとなればいいな、と願い以下に書いておくことにする。
現象(というか気になった点)
- wpa_supplicantを導入する前の、無線LANの諸設定(SSIDやらKEYやら)をしない状態でも、無線LAN側にIPアドレスをふってやれば、他のPCから無線LAN側のIPアドレスへpingが飛び応答が返ってくる。
_ - 別のPCからこのノートPCの有線LAN側、および無線LAN側にpingを打つと両方返ってくるが、pingを打ったPCには有線,無線両方とも同じMACアドレス(有線LANのMACアドレス)がarpテーブルに記録される。
_ - 有線LANのケーブルを抜くと、無線LAN側へのpingも返ってこなくなる。
2.の現象のためにこうなるのは予想はつく。
_ - 上記2, 3 の現象は、無線LAN側の設定をちゃんとした後も同じく発生する。
_
結論
ルートとルールの設定をしてあげなければならないんだよっ!
やり方を以下に書いていきます。
wpa_supplicantをインストール
何はともあれ、無線LAN側の設定を終わらせて使えるようにしないと。
ちなみに、CentOS6 であれば、今回使用した「WLI-UC-GNM2」を認識した。
「ifconfig -a」を実行すると、「wlan01」という名前で表示される。
なので、今回は無線LANドライバのインストールは省略。
CentOS5までは別途無線LANドライバを入れないといけなかったようだ。
パッケージの インストール
まずは必要なパッケージをインストール。
ついでに、後で無線LANの状態確認用にツールをインストールしておく。
#yum install wpa_supplicant #yum install wireless-tools #yum install usbutils
wpa_supplicantサービスの登録
wpa_supplicantサービスをchkconfigで登録。その際、networkサービスより前に起動するようにrcファイルに一工夫。
#vi /etc/init.d/wpa_supplicant ------------------------------------------------------------------------ chkconfig - 23 88 ↓下記に変更 chkconfig 2345 09 88 ------------------------------------------------------------------------
※途中に余計なスペースが入ると次のchkconfig –addで正しく起動設定されないので注意
wpa_supplicantサービスを登録
#chkconfig --del wpa_supplicant ----- 登録済みのものを一旦削除 #chkconfig --add wpa_supplicant ---- 改めて追加 #chkconfig --list |grep wpa ----------- ちゃんと登録されているかどうかを確認 wpa_supplicant 0:off 1:off 2:on 3:on 4:on 5:on 6:off
/etc/wpa_supplicant/wpa_supplicant.confのベース作成
#wpa_passphrase SSID名 パスワード >> /etc/wpa_supplicant/wpa_supplicant.conf
以下のようにベースが作成される。
#cat /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=wheel network={ ssid="SSID名" #psk="パスワード" psk=1234567890123456789012345678901234567890123456789012345678901234 ↑実際には正しい暗号化されたパスフレーズが入る
wpa_supplicant.confの編集
#vi /etc/wpa_supplicant/wpa_supplicant.conf ------------------------------------------------------------------------ ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=wheel network={ ssid="SSID名" key_mgmt=WPA-PSK proto=WPA WPA2 pairwise=CCMP TKIP group=CCMP TKIP psk=1234567890123456789012345678901234567890123456789012345678901234 ------------------------------------------------------------------------
/etc/sysconfig/wpa_supplicantの編集
#vi /etc/sysconfig/wpa_supplicant ------------------------------------------------------------------------ # Use the flag "-i" before each of your interfaces, like so: # INTERFACES="-ieth1 -iwlan0" INTERFACES="-iwlan0" <------------------------ ここ # Use the flag "-D" before each driver, like so: # DRIVERS="-Dwext" DRIVERS="-Dwext" <---------------------------- ここ # Other arguments # -u Enable the D-Bus interface (required for use with NetworkManager) # -f Log to /var/log/wpa_supplicant.log # -P Write pid file to /var/run/wpa_supplicant.pid # required to return proper codes by init scripts (e.g. double "start" action) # -B to daemonize that has to be used together with -P is already in wpa_supplicant.init.d #OTHER_ARGS="-u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid" OTHER_ARGS="-f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid" ↑ここ。-uを取ること ------------------------------------------------------------------------
確認
# iwconfig lo no wireless extensions. eth0 no wireless extensions. wlan0 IEEE 802.11bgn ESSID:"SSID名" Mode:Managed Frequency:2.447 GHz Access Point: xx:xx:xx:xx:xx:xx Bit Rate=48 Mb/s Tx-Power=20 dBm Retry long limit:7 RTS thr:off Fragment thr:off : Tx excessive retries:43 Invalid misc:26 Missed beacon:0 # iwpriv lo no private ioctls. eth0 no private ioctls. wlan0 no private ioctls. <---- 既存のドライバではiwprivは使えないようだ #iwpriv : Bus 001 Device 002: ID 0411:01ee BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070]
IPルール&ルートの設定
要はこれを設定しないといけないようだ。
ちなみに各NICのIPアドレスは
eth0: 192.168.1.100
wlan0:192.168.1.101
に設定しているものとする。
ipルールの設定
以下のようなファイルを新規作成する。
#vi /etc/sysconfig/network-scripts/rule-wlan0 ------------------------------------------------------------------------ from 192.168.1.101 table 100 prio 200 ------------------------------------------------------------------------
ipルートの設定
こっちも新規作成する。
#vi /etc/sysconfig/network-scripts/route-wlan0 ------------------------------------------------------------------------ dev wlan0 src 192.168.1.101 table 100 ------------------------------------------------------------------------
できたらnetworkデーモンを再起動するか、リブートしてみる。
これでeth0(192.168.1.100)に宛てたパケットはeth0から返し、
wlan0(192.168.1.101)に宛てたパケットはwlan0から返すように設定される。
はず!
うちのPCはうまくいった(^^)/
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply