يوليو 18، 2011

الوصل بشبكة الأنترنت على نظام OpenBSD و FreeBSD: التشبيك بمودم LG LDU-800

حصلت من صديق على مودم جديد لمزود الخدمة inwi من فئة LG LDU-800 و هو أيضا مودم من الجيل الثالث (USB 3G Modem) ،فبحثت عن حل لطريقة إعداده على نظام OpenBSD و نظام FreeBSD مستفيدا من تجاربي السابقة و من بعض المصادر على الشبكة.

على OpenBSD 4.9

1. نصل المودم بمنفذ usb ثم ننفذ أحد الأمرين لعرض مخرجات النظام المتعلقة به:
dmesg | grep -i "lg electro"
أو
tail /var/log/messages

المخرجات ستكون كالتالي:
pufy /bsd: umodem0 at uhub4
/bsd:  port 1 configuration 1 interface 0 "LG Electronics Inc. LG EV-DO USB MODEM" rev 1.10/0.00 addr 2
pufy /bsd: umodem0: data interface 1, has CM over data, has break
pufy /bsd: umodem0: status change notification available
pufy /bsd: ucom0 at umodem0
pufy /bsd: umodem1 at uhub4
pufy /bsd:  port 1 configuration 1 interface 2 "LG Electronics Inc. LG EV-DO USB MODEM" rev 1.10/0.00 addr 2
pufy /bsd: umodem1: data interface 3, has CM over data, has break
pufy /bsd: umodem1: status change notification available
pufy /bsd: ucom1 at umodem1
pufy /bsd: umodem2 at uhub4
pufy /bsd:  port 1 configuration 1 interface 4 "LG Electronics Inc. LG EV-DO USB MODEM" rev 1.10/0.00 addr 2
pufy /bsd: umodem2: data interface 5, has CM over data, has break
pufy /bsd: umodem2: status change notification available
pufy /bsd: ucom2 at umodem2


2. على نظام أوبن بي إس دي التعريف المكلف بهذا النوع من المودمات هو umodem و الإعداد و الوصل يتم عبر أداة ppp أو أداة pppd لكن هذه المرة اخترت السابقة.

سننشئ ثلاثة ملفات. الأول لربط الإتصال و هو كالتالي:
nano -w /etc/ppp/ppp.conf

default:
 ident user-ppp
 set log Phase Chat LCP IPCP CCP connect tun command

wana_lg800:
 set device /dev/ttyU0
 #set device /dev/cuaU0
 set speed 115200
 set timeout 0
 set authname "wana"
 set authkey "wana"

 set dial "ABORT BUSY TIMEOUT 2 \
        \"\" \
        AT OK-AT-OK \
        ATDT#777 CONNECT"

 set crtscts on
 disable vjcomp
 disable acfcomp
 disable deflate
 disable deflate24
 disable pred1
 disable protocomp
 disable mppe
 disable ipv6cp
 disable lqr
 disable echo
 nat enable yes
 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
 add default HISADDR
 enable dns
 resolv writable
 set dns 208.67.220.220 208.67.222.222

هذا الملف يضم:
* منفذ العتاد /dev/ttyU0
* صيغة الربط
* اسم و كلمة السر (wana wana) الإفتراضية لدى مزود الخدمة
* و كل ما يساعد من إعدادات لضمان إتصال مستقر.
الأجزاء المسبوقة بعلامة # متروكة كمرجع و لا تأثير لها.

لمعرفة المنافد المتاحة نفد أحد الأمرين:
ls -l /dev/ttyU*

ls -l /dev/cuaU*


الملف الثاني يحدد مفرز أسماء الشبكة على الإنترنت (dns). هذا الأخير يمكن تغييره بخادوم غوغل (8.8.8.8 و 8.8.4.4) أو خادوم أوبن دي إن إس (208.67.222.222 و 208.67.220.220)
nano -w /etc/ppp/ppp.linkup

wana_lg800:
    !bg sh -c "echo 'nameserver 192.168.60.58' > /etc/resolv.conf"
    !bg sh -c "echo 'nameserver 192.168.50.55' >> /etc/resolv.conf"


الملف الثالث يضمن إستعادة الملف /etc/resolv.conf الذي يضم عناوين خوادم فرز الأسماء إلى حالته السابقة، ثم إزالة كل اعدادات بظاقة المودم على النظام
nano -w /etc/ppp/ppp.linkdown

default:
    shell logger "LABEL down (up UPTIME): OCTETSIN received, OCTETSOUT sent"

wana_lg800:
    resolv restore
    iface clear


3. الآن إفتح نافدتين لعرض مخرجات الوصل (فقط للتأكد من أننا نجحنا أم لا)
نفذ على الأولى:
tail -f /var/log/messages
على الثانية نفذ:
tail -f /var/log/ppp.log

ثم لربط الإتصال بمزود الخدمة نفذ:
ppp -ddial wana_lg800

الآن على نافدتي المخرجات سنتوصل بكل ما يجري:
pufy ppp[8050]: Phase: Using interface: tun0 
pufy ppp[8050]: Phase: deflink: Created in closed state 
pufy ppp[8050]: tun0: Command: wana: set device /dev/ttyU0 
pufy ppp[8050]: tun0: Command: wana: set speed 115200 
pufy ppp[8050]: tun0: Command: wana: set timeout 0 
pufy ppp[8050]: tun0: Command: wana: set authname wana 
pufy ppp[8050]: tun0: Command: wana: set authkey ******** 
pufy ppp[8050]: tun0: Command: wana: set dial ABORT BUSY TIMEOUT 2         ""         AT OK-AT-OK         ATDT#777 CONNECT 
pufy ppp[8050]: tun0: Command: wana: set crtscts on 
pufy ppp[8050]: tun0: Command: wana: disable vjcomp 
pufy ppp[8050]: tun0: Command: wana: disable acfcomp 
pufy ppp[8050]: tun0: Command: wana: disable deflate 
pufy ppp[8050]: tun0: Command: wana: disable deflate24 
pufy ppp[8050]: tun0: Command: wana: disable pred1 
pufy ppp[8050]: tun0: Command: wana: disable protocomp 
pufy ppp[8050]: tun0: Command: wana: disable mppe 
pufy ppp[8050]: tun0: Command: wana: disable ipv6cp 
pufy ppp[8050]: tun0: Command: wana: disable lqr 
pufy ppp[8050]: tun0: Command: wana: disable echo 
pufy ppp[8050]: tun0: Command: wana: nat enable yes 
pufy ppp[8050]: tun0: Command: wana: set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0 
pufy ppp[8050]: tun0: Command: wana: add default HISADDR 
pufy ppp[8050]: tun0: Command: wana: enable dns 
pufy ppp[8050]: tun0: Command: wana: resolv writable 
pufy ppp[8050]: tun0: Command: wana: set dns 208.67.220.220 208.67.222.222 
pufy ppp[20150]: tun0: Phase: PPP Started (ddial mode). 
pufy ppp[20150]: tun0: Phase: bundle: Establish 
pufy ppp[20150]: tun0: Phase: deflink: closed -> opening 
pufy ppp[20150]: tun0: Phase: deflink: Connected! 
pufy ppp[20150]: tun0: Phase: deflink: opening -> dial 
pufy ppp[20150]: tun0: Chat: Send: AT\^M 
pufy ppp[20150]: tun0: Chat: Expect(2): OK 
pufy ppp[20150]: tun0: Chat: Received: \^M 
pufy ppp[20150]: tun0: Chat: Received: OK\^M 
pufy ppp[20150]: tun0: Chat: Send: ATDT#777\^M 
pufy ppp[20150]: tun0: Chat: Expect(2): CONNECT 
pufy ppp[20150]: tun0: Chat: Received: \^M 
pufy ppp[20150]: tun0: Chat: Received: CONNECT\^M 
pufy ppp[20150]: tun0: Phase: deflink: dial -> carrier 
pufy ppp[20150]: tun0: Phase: deflink: /dev/ttyU0: CD detected 
pufy ppp[20150]: tun0: Phase: deflink: carrier -> login 
pufy ppp[20150]: tun0: Phase: deflink: login -> lcp 
pufy ppp[20150]: tun0: LCP: FSM: Using "deflink" as a transport 
pufy ppp[20150]: tun0: LCP: deflink: State change Initial --> Closed 
pufy ppp[20150]: tun0: LCP: deflink: State change Closed --> Stopped 
pufy ppp[20150]: tun0: LCP: deflink: LayerStart 
pufy ppp[20150]: tun0: LCP: deflink: SendConfigReq(1) state = Stopped 
pufy ppp[20150]: tun0: LCP:  ACCMAP[6] 0x00000000 
pufy ppp[20150]: tun0: LCP:  MRU[4] 1500 
pufy ppp[20150]: tun0: LCP:  MAGICNUM[6] 0x17b3a610 
pufy ppp[20150]: tun0: LCP: deflink: State change Stopped --> Req-Sent 
pufy ppp[20150]: tun0: LCP: deflink: RecvConfigReq(1) state = Req-Sent 
pufy ppp[20150]: tun0: LCP:  ACCMAP[6] 0x00000000 
pufy ppp[20150]: tun0: LCP:  AUTHPROTO[5] 0xc223 (CHAP 0x05) 
pufy ppp[20150]: tun0: LCP:  MAGICNUM[6] 0x022729c0 
pufy ppp[20150]: tun0: LCP:  PROTOCOMP[2] 
pufy ppp[20150]: tun0: LCP:  ACFCOMP[2] 
pufy ppp[20150]: tun0: LCP: deflink: SendConfigAck(1) state = Req-Sent 
pufy ppp[20150]: tun0: LCP:  ACCMAP[6] 0x00000000 
pufy ppp[20150]: tun0: LCP:  AUTHPROTO[5] 0xc223 (CHAP 0x05) 
pufy ppp[20150]: tun0: LCP:  MAGICNUM[6] 0x022729c0 
pufy ppp[20150]: tun0: LCP:  PROTOCOMP[2] 
pufy ppp[20150]: tun0: LCP:  ACFCOMP[2] 
pufy ppp[20150]: tun0: LCP: deflink: State change Req-Sent --> Ack-Sent 
pufy ppp[20150]: tun0: LCP: deflink: RecvConfigAck(1) state = Ack-Sent 
pufy ppp[20150]: tun0: LCP:  ACCMAP[6] 0x00000000 
pufy ppp[20150]: tun0: LCP:  MRU[4] 1500 
pufy ppp[20150]: tun0: LCP:  MAGICNUM[6] 0x17b3a610 
pufy ppp[20150]: tun0: LCP: deflink: State change Ack-Sent --> Opened 
pufy ppp[20150]: tun0: LCP: deflink: LayerUp 
pufy ppp[20150]: tun0: LCP: deflink: SendIdent(0) state = Opened 
pufy ppp[20150]: tun0: LCP:  MAGICNUM 17b3a610 
pufy ppp[20150]: tun0: LCP:  TEXT user-ppp 
pufy ppp[20150]: tun0: Phase: bundle: Authenticate 
pufy ppp[20150]: tun0: Phase: deflink: his = CHAP 0x05, mine = none 
pufy ppp[20150]: tun0: Phase: Chap Input: CHALLENGE (16 bytes) 
pufy ppp[20150]: tun0: Phase: Chap Output: RESPONSE (wana) 
pufy ppp[20150]: tun0: LCP: deflink: RecvCodeRej(1) state = Opened 
pufy ppp[20150]: tun0: Phase: Chap Input: SUCCESS 
pufy ppp[20150]: tun0: IPCP: Using trigger address 0.0.0.0 
pufy ppp[20150]: tun0: CCP: FSM: Using "deflink" as a transport 
pufy ppp[20150]: tun0: CCP: deflink: State change Initial --> Closed 
pufy ppp[20150]: tun0: CCP: deflink: State change Closed --> Stopped 
pufy ppp[20150]: tun0: Phase: deflink: lcp -> open 
pufy ppp[20150]: tun0: Phase: bundle: Network 
pufy ppp[20150]: tun0: IPCP: FSM: Using "deflink" as a transport 
pufy ppp[20150]: tun0: IPCP: deflink: State change Initial --> Closed 
pufy ppp[20150]: tun0: IPCP: deflink: LayerStart. 
pufy ppp[20150]: tun0: IPCP: deflink: SendConfigReq(1) state = Closed 
pufy ppp[20150]: tun0: IPCP:  IPADDR[6] 0.0.0.0 
pufy ppp[20150]: tun0: IPCP:  PRIDNS[6] 208.67.220.220 
pufy ppp[20150]: tun0: IPCP:  SECDNS[6] 208.67.222.222 
pufy ppp[20150]: tun0: IPCP: deflink: State change Closed --> Req-Sent 
pufy ppp[20150]: tun0: IPCP: deflink: RecvConfigReq(1) state = Req-Sent 
pufy ppp[20150]: tun0: IPCP:  IPADDR[6] 192.168.181.12 
pufy ppp[20150]: tun0: IPCP: deflink: SendConfigAck(1) state = Req-Sent 
pufy ppp[20150]: tun0: IPCP:  IPADDR[6] 192.168.181.12 
pufy ppp[20150]: tun0: IPCP: deflink: State change Req-Sent --> Ack-Sent 
pufy ppp[20150]: tun0: IPCP: deflink: RecvConfigNak(1) state = Ack-Sent 
pufy ppp[20150]: tun0: IPCP:  IPADDR[6] 10.43.70.3 
pufy ppp[20150]: tun0: IPCP:  IPADDR[6] changing address: 0.0.0.0  --> 10.43.70.3 
pufy ppp[20150]: tun0: IPCP: deflink: SendConfigReq(2) state = Ack-Sent 
pufy ppp[20150]: tun0: IPCP:  IPADDR[6] 10.43.70.3 
pufy ppp[20150]: tun0: IPCP:  PRIDNS[6] 208.67.220.220 
pufy ppp[20150]: tun0: IPCP:  SECDNS[6] 208.67.222.222 
pufy ppp[20150]: tun0: IPCP: deflink: RecvConfigAck(2) state = Ack-Sent 
pufy ppp[20150]: tun0: IPCP:  IPADDR[6] 10.43.70.3 
pufy ppp[20150]: tun0: IPCP:  PRIDNS[6] 208.67.220.220 
pufy ppp[20150]: tun0: IPCP:  SECDNS[6] 208.67.222.222 
pufy ppp[20150]: tun0: IPCP: deflink: State change Ack-Sent --> Opened 
pufy ppp[20150]: tun0: IPCP: deflink: LayerUp. 
pufy ppp[20150]: tun0: IPCP: myaddr 10.43.70.3 hisaddr = 192.168.181.12 
pufy ppp[20150]: tun0: Command: wana: !bg sh -c echo 'nameserver 192.168.60.58\\nnameserver 192.168.50.55' > /etc/resolv.conf 
pufy ppp[20150]: tun0: Warning: 0.0.0.0/0: Change route failed: errno: No such process 
pufy ppp[20150]: tun0: Warning: ff01:7::/32: Change route failed: errno: Network is unreachable 
pufy ppp[20150]: tun0: Warning: ff02:7::/32: Change route failed: errno: Network is unreachable 
pufy ppp[20150]: tun0: Warning: ff02:7::/32: Change route failed: errno: Network is unreachable 

الآن إختبر الوصول إلى الأنترنت بالتصفح أو بتنفيذ الامر:
ping -c 3 google.com


لاحظ جيدا أني استخدمت أداة ppp بمعيار -ddial بمعنى أنها ستتصل ثم ستبقى في الخلفية تراقب الإتصال و تضمن تجديد الربط في حالة إنقطاعه. هذه الطريقة جيدة في حالة نجاحك في الربط لكن ستزعجك إن لم تكن قد نجحت في إعداد الموديم من قبل.

على العموم لقطع الإتصال، و إنهاء عمل ppp و إزالة كل الإعدادات المتعلقة بالموديم، أزل هذا الأخير ثم نفذ:
pkill -9 ppp 
ifconfig tun0 destroy
route flush


تذكر: للوصل بمزود الخدمة يدويا قم بوصل الودم و انتظر لبضع ثوان ثو نفذ:
ppp -ddial wana_lg800

الربط التلقائي عند الوصل ممكن بواسطة آلية hotplugd لكن إعداده أصعب مقارنة مع devd على فري بي إس دي:

هذا مثال :
* ننشئ ملف السكريبت التالي
nano -w /etc/hotplug/attach

ثم نضع فيه:
#!/bin/sh

DEVCLASS=$1
DEVNAME=$2

if [ $DEVNAME == "umodem2" ]; then
        if [ -z `usbdevs | grep -i "LG EV-DO USB MODEM"` ]; then
                sleep 20
                ppp -ddial wana_lg800
        fi
fi

ثم نعطيه صلاحية التشغيل:
chmod +x /etc/hotplug/attach

ثم نشغل خدمة hotplugd
/usr/sbin/hotplugd &

و لكي تشتغل خدمة hotplugd تلقائيا مع النظام سنضيفها إلى ملف إعدادات النظام rc.conf.local
echo "hotplugd_flags=YES" >> /etc/rc.conf.local

من اﻵن فصاعدا سيتم الربط تلقائيا بالشبكة عند وصل المودم.





على FreeBSD 8.2

1. علينا تشغيل وحدة النواة المكلفة بالتعرف عليه
kldload -v umodem

و بعدها سنصل المودم بمنفد usb ثم ننفذ ما يلي:
dmesg | grep -i "lg electro"
أو
tail /var/log/messages

المخرجات ستكون كالتالي:
freedy root: Unknown USB device: vendor 0x0483 product 0x2016 bus uhub1
freedy kernel: ugen3.2:  at usbus3
freedy kernel: umodem0:  on usbus3
freedy kernel: umodem0: data interface 1, has CM over data, has break
freedy kernel: umodem1:  on usbus3
freedy kernel: umodem1: data interface 3, has CM over data, has break
freedy kernel: umodem2:  on usbus3
freedy kernel: umodem2: data interface 5, has CM over data, has break

في حالة عدم تشغيل وحدة umodem ستكون المخرجات كالتالي:
freedy kernel: ugen3.2:  at usbus3
freedy root: Unknown USB device: vendor 0x1004 product 0x605e bus uhub3


و حتى نتفادى تشغيل تلك الوحدة يدويا كلما احتجنا إلى الإتصال، سنضيفها على ملف إعدادات إقلاع نواة النظام بتنفيذ:
echo 'umodem_load="YES"' >> /boot/loader.conf



2. على نظام فري بي إس دي التعريف المكلف بهذا النوع من المودمات هو umodem و الإعداد و الوصل يتم عبر أداة ppp.

سننشئ ثلاثة ملفات. الأول لربط الإتصال و هو كالتالي:
ee /etc/ppp/ppp.conf

default:
 set log Phase Chat Connect LCP IPCP CCP tun command
 ident user-ppp VERSION

wana_lg800:
 set device /dev/ttyU0
 set speed 115200
 set timeout 0
 set authname "wana"
 set authkey "wana"
 #set phone PHONE_NUM
 #set device /dev/cuaU0
 #set speed 921600
 #set speed 384000
 #set mtu maximum 296
 #set mru maximum 296

 set dial "ABORT BUSY TIMEOUT 2 \
        \"\" \
        AT OK-AT-OK \
        ATDT#777 CONNECT"

 set crtscts on
 disable vjcomp
 disable acfcomp
 disable deflate
 disable deflate24
 disable pred1
 disable protocomp
 disable mppe
 disable ipv6cp
 disable lqr
 disable echo
 nat enable yes
 enable dns
 resolv writable
 set dns 208.67.220.220 208.67.222.222  # openDNS
 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
 #add default HISADDR          # See ppp.link*

هذا الملف يضم:
* منفذ العتاد /dev/ttyU0
* صيغة الربط
* اسم و كلمة السر (wana wana) الإفتراضية لدى مزود الخدمة
* و كل ما يساعد من إعدادات لضمان إتصال مستقر.
كل شيء موثق جيدا هنا و هنا.
الأجزاء المسبوقة بعلامة # متروكة كمرجع و لا تأثير لها.
لمعرفة المنافد المتاحة نفد أحد الأمرين:
ls -l /dev/ttyU*

ls -l /dev/cuaU*


الملف الثاني يحدد مسار الخروج الإفتراضي (route) و يحدد مفرز أسماء الشبكة على الإنترنت (dns). هذا الأخير يمكن تغييره بخادوم غوغل (8.8.8.8 و 8.8.4.4) أو خادوم أوبن دي إن إس (208.67.222.222 و 208.67.220.220)
ee /etc/ppp/ppp.linkup

wana_lg800:
 shell route delete default
 shell route add default -interface INTERFACE
 shell sh -c "echo 'nameserver 192.168.60.58' > /etc/resolv.conf"
 shell sh -c "echo 'nameserver 192.168.50.55' >> /etc/resolv.conf"


الملف الثالث يضمن إستعادة الملف /etc/resolv.conf الذي يضم عناوين خوادم فرز الأسماء إلى حالته السابقة، ثم إزالة مسار الخروج الإفتراضي
ee /etc/ppp/ppp.linkdown

default:
 shell logger "LABEL down (up UPTIME): OCTETSIN received, OCTETSOUT sent"

wana_lg800:
 resolv restore
 shell route delete default


3. الآن إفتح نافدتين لعرض مخرجات الوصل (فقط للتأكد من أننا نجحنا أم لا)
نفذ على الأولى:
tail -f /var/log/messages
على الثانية نفذ:
tail -f /var/log/ppp.log

ثم لربط الإتصال بمزود الخدمة نفذ:
ppp -ddial wana_lg800

الآن على نافدتي المخرجات سنتوصل بكل ما يجري:
freedy ppp[3096]: Phase: Using interface: tun0
freedy ppp[3096]: Phase: deflink: Created in closed state
freedy ppp[3096]: tun0: Command: default: ident user-ppp VERSION
freedy ppp[3096]: tun0: Command: wana_lg800: set device /dev/ttyU0
freedy ppp[3096]: tun0: Command: wana_lg800: set speed 921600
freedy ppp[3096]: tun0: Command: wana_lg800: set timeout 0
freedy ppp[3096]: tun0: Command: wana_lg800: set authname wana
freedy ppp[3096]: tun0: Command: wana_lg800: set authkey ********
freedy ppp[3096]: tun0: Command: wana_lg800: set dial ABORT BUSY TIMEOUT 2         ""         AT OK-AT-OK         ATDT#777 CONNECT
freedy ppp[3096]: tun0: Command: wana_lg800: set crtscts on
freedy ppp[3096]: tun0: Command: wana_lg800: disable vjcomp
freedy ppp[3096]: tun0: Command: wana_lg800: disable acfcomp
freedy ppp[3096]: tun0: Command: wana_lg800: disable deflate
freedy ppp[3096]: tun0: Command: wana_lg800: disable deflate24
freedy ppp[3096]: tun0: Command: wana_lg800: disable pred1
freedy ppp[3096]: tun0: Command: wana_lg800: disable protocomp
freedy ppp[3096]: tun0: Command: wana_lg800: disable mppe
freedy ppp[3096]: tun0: Command: wana_lg800: disable ipv6cp
freedy ppp[3096]: tun0: Command: wana_lg800: disable lqr
freedy ppp[3096]: tun0: Command: wana_lg800: disable echo
freedy ppp[3096]: tun0: Command: wana_lg800: nat enable yes
freedy ppp[3096]: tun0: Command: wana_lg800: enable dns
freedy ppp[3096]: tun0: Command: wana_lg800: resolv writable
freedy ppp[3096]: tun0: Command: wana_lg800: set dns 208.67.220.220 208.67.222.222
freedy ppp[3096]: tun0: Command: wana_lg800: set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
freedy ppp[3098]: tun0: Phase: PPP Started (ddial mode).
freedy ppp[3098]: tun0: Phase: bundle: Establish
freedy ppp[3098]: tun0: Phase: deflink: closed -> opening
freedy ppp[3098]: tun0: Phase: deflink: Connected!
freedy ppp[3098]: tun0: Phase: deflink: opening -> dial
freedy ppp[3098]: tun0: Chat: Send: AT^M
freedy ppp[3098]: tun0: Chat: Expect(2): OK
freedy ppp[3098]: tun0: Chat: Received: ^M
freedy ppp[3098]: tun0: Chat: Received: OK^M
freedy ppp[3098]: tun0: Chat: Send: ATDT#777^M
freedy ppp[3098]: tun0: Chat: Expect(2): CONNECT
freedy ppp[3098]: tun0: Chat: Received: ^M
freedy ppp[3098]: tun0: Chat: Received: CONNECT^M
freedy ppp[3098]: tun0: Phase: deflink: dial -> carrier
freedy ppp[3098]: tun0: Phase: deflink: /dev/ttyU0: CD detected
freedy ppp[3098]: tun0: Phase: deflink: carrier -> login
freedy ppp[3098]: tun0: Phase: deflink: login -> lcp
freedy ppp[3098]: tun0: LCP: FSM: Using "deflink" as a transport
freedy ppp[3098]: tun0: LCP: deflink: State change Initial --> Closed
freedy ppp[3098]: tun0: LCP: deflink: State change Closed --> Stopped
freedy ppp[3098]: tun0: LCP: deflink: LayerStart
freedy ppp[3098]: tun0: LCP: deflink: SendConfigReq(1) state = Stopped
freedy ppp[3098]: tun0: LCP:  ACCMAP[6] 0x00000000
freedy ppp[3098]: tun0: LCP:  MRU[4] 1500
freedy ppp[3098]: tun0: LCP:  MAGICNUM[6] 0x69044a57
freedy ppp[3098]: tun0: LCP: deflink: State change Stopped --> Req-Sent
freedy ppp[3098]: tun0: LCP: deflink: RecvConfigReq(10) state = Req-Sent
freedy ppp[3098]: tun0: LCP:  ACCMAP[6] 0x00000000
freedy ppp[3098]: tun0: LCP:  AUTHPROTO[5] 0xc223 (CHAP 0x05)
freedy ppp[3098]: tun0: LCP:  MAGICNUM[6] 0x02228f59
freedy ppp[3098]: tun0: LCP:  PROTOCOMP[2]
freedy ppp[3098]: tun0: LCP:  ACFCOMP[2]
freedy ppp[3098]: tun0: LCP: deflink: SendConfigAck(10) state = Req-Sent
freedy ppp[3098]: tun0: LCP:  ACCMAP[6] 0x00000000
freedy ppp[3098]: tun0: LCP:  AUTHPROTO[5] 0xc223 (CHAP 0x05)
freedy ppp[3098]: tun0: LCP:  MAGICNUM[6] 0x02228f59
freedy ppp[3098]: tun0: LCP:  PROTOCOMP[2]
freedy ppp[3098]: tun0: LCP:  ACFCOMP[2]
freedy ppp[3098]: tun0: LCP: deflink: State change Req-Sent --> Ack-Sent
freedy ppp[3098]: tun0: LCP: deflink: RecvConfigAck(1) state = Ack-Sent
freedy ppp[3098]: tun0: LCP:  ACCMAP[6] 0x00000000
freedy ppp[3098]: tun0: LCP:  MRU[4] 1500
freedy ppp[3098]: tun0: LCP:  MAGICNUM[6] 0x69044a57
freedy ppp[3098]: tun0: LCP: deflink: State change Ack-Sent --> Opened
freedy ppp[3098]: tun0: LCP: deflink: LayerUp
freedy ppp[3098]: tun0: LCP: deflink: SendIdent(0) state = Opened
freedy ppp[3098]: tun0: LCP:  MAGICNUM 69044a57
freedy ppp[3098]: tun0: LCP:  TEXT user-ppp 3.4.2
freedy ppp[3098]: tun0: Phase: bundle: Authenticate
freedy ppp[3098]: tun0: Phase: deflink: his = CHAP 0x05, mine = none
freedy ppp[3098]: tun0: Phase: Chap Input: CHALLENGE (16 bytes)
freedy ppp[3098]: tun0: Phase: Chap Output: RESPONSE (wana)
freedy ppp[3098]: tun0: LCP: deflink: RecvCodeRej(10) state = Opened
freedy ppp[3098]: tun0: Phase: Chap Input: SUCCESS
freedy ppp[3098]: tun0: IPCP: Using trigger address 0.0.0.0
freedy ppp[3098]: tun0: CCP: FSM: Using "deflink" as a transport
freedy ppp[3098]: tun0: CCP: deflink: State change Initial --> Closed
freedy ppp[3098]: tun0: CCP: deflink: State change Closed --> Stopped
freedy ppp[3098]: tun0: Phase: deflink: lcp -> open
freedy ppp[3098]: tun0: Phase: bundle: Network
freedy ppp[3098]: tun0: IPCP: FSM: Using "deflink" as a transport
freedy ppp[3098]: tun0: IPCP: deflink: State change Initial --> Closed
freedy ppp[3098]: tun0: IPCP: deflink: LayerStart.
freedy ppp[3098]: tun0: IPCP: deflink: SendConfigReq(1) state = Closed
freedy ppp[3098]: tun0: IPCP:  IPADDR[6] 0.0.0.0
freedy ppp[3098]: tun0: IPCP:  PRIDNS[6] 208.67.220.220
freedy ppp[3098]: tun0: IPCP:  SECDNS[6] 208.67.222.222
freedy ppp[3098]: tun0: IPCP: deflink: State change Closed --> Req-Sent
freedy ppp[3098]: tun0: IPCP: deflink: RecvConfigReq(10) state = Req-Sent
freedy ppp[3098]: tun0: IPCP:  IPADDR[6] 192.168.181.12
freedy ppp[3098]: tun0: IPCP: deflink: SendConfigAck(10) state = Req-Sent
freedy ppp[3098]: tun0: IPCP:  IPADDR[6] 192.168.181.12
freedy ppp[3098]: tun0: IPCP: deflink: State change Req-Sent --> Ack-Sent
freedy ppp[3098]: tun0: IPCP: deflink: RecvConfigNak(1) state = Ack-Sent
freedy ppp[3098]: tun0: IPCP:  IPADDR[6] 10.43.63.248
freedy ppp[3098]: tun0: IPCP:  IPADDR[6] changing address: 0.0.0.0  --> 10.43.63.248
freedy ppp[3098]: tun0: IPCP: deflink: SendConfigReq(2) state = Ack-Sent
freedy ppp[3098]: tun0: IPCP:  IPADDR[6] 10.43.63.248
freedy ppp[3098]: tun0: IPCP:  PRIDNS[6] 208.67.220.220
freedy ppp[3098]: tun0: IPCP:  SECDNS[6] 208.67.222.222
freedy ppp[3098]: tun0: IPCP: deflink: RecvConfigAck(2) state = Ack-Sent
freedy ppp[3098]: tun0: IPCP:  IPADDR[6] 10.43.63.248
freedy ppp[3098]: tun0: IPCP:  PRIDNS[6] 208.67.220.220
freedy ppp[3098]: tun0: IPCP:  SECDNS[6] 208.67.222.222
freedy ppp[3098]: tun0: IPCP: deflink: State change Ack-Sent --> Opened
freedy ppp[3098]: tun0: IPCP: deflink: LayerUp.
freedy ppp[3098]: tun0: IPCP: myaddr 10.43.63.248 hisaddr = 192.168.181.12
freedy ppp[3098]: tun0: Command: wana_lg800: shell route delete default
freedy ppp[3098]: tun0: Command: wana_lg800: shell route add default -interface INTERFACE
freedy ppp[3098]: tun0: Command: wana_lg800: shell sh -c echo 'nameserver 192.168.60.58' > /etc/resolv.conf
freedy ppp[3098]: tun0: Command: wana_lg800: shell sh -c echo 'nameserver 192.168.50.55' >> /etc/resolv.conf
freedy ppp[3098]: tun0: Warning: 0.0.0.0/0: Change route failed: errno: No such process

الآن إختبر الوصول إلى الأنترنت بالتصفح أو بتنفيذ الامر:
ping -c 3 google.com


لاحظ جيدا أني استخدمت أداة ppp بمعيار -ddial بمعنى أنها ستتصل ثم ستبقى في الخلفية تراقب الإتصال و تضمن تجديد الربط في حالة إنقطاعه. هذه الطريقة جيدة في حالة نجاحك في الربط لكن ستزعجك إن لم تكن قد نجحت في إعداد الموديم من قبل.

على العموم لقطع الإتصال، و إنهاء عمل ppp و إزالة كل الإعدادات المتعلقة بالموديم، أزل هذا الأخير ثم نفذ:
pkill -9 ppp 
ifconfig tun0 destroy
route flush


بالنسبة للربط التلقائي عند الوصل فسنستخدم آلية devd

devd تحتاج إلى معرفة معرفات العتاد لتنفد عملية معينة عندما يوصل هذا الأخير.

معرفات LG LDU-800 سنجدها على مخرجات الأمر tail -f /var/log/messages عند وصله، و هي كالتالي:
freedy kernel: ugen3.2:  at usbus3
freedy root: Unknown USB device: vendor 0x1004 product 0x605e bus uhub3

سنفتح الملف
nano -w /etc/devd.conf

و سنضيف إلى آخره ما يلي:
attach 100 {
    device-name "umodem[2]+";
    match "vendor" "0x1004";
    match "product" "0x605e";
    action "/bin/sleep 20 ; /usr/sbin/ppp -ddial wana_lg800";
};


ثم سنعيد تشغيل خدمة devd:
/etc/rc.d/devd restart

من الآن فصاعدا كلما وصلت الموديم LG LDU-800 بالمعرف 0x605e و المصنع 0x1004 سيتم الإنتظار لمدة 20 ثانية ليكتمل الموديم من تحضير نفسه ثم ليبدأ بعدها الوصل بمزود الخدمة.



مصادر و مراجع :
* Wana : configurer le modem LG LDU-800 sous GNU/Linux
* [Solved] Internet access in freebsd (LG LDU-800)? 
* FreeBSD Forums: [Solved] ppp Change route failed
* OpenBSD MAKEDEV(8) man page
* ML: Re: Run script on cd insertion
* BSD start services
* OpenBSD 3.8 Service commands
* OpenWikiBSD - OpenBSD Réseau 
* Re: My modem was working in ubuntu 9.10 but it doesn't in 10.04 lts #21
* Modem usb LG LDU-800 wana 3g


* Ubuntu Wiki - MoroccanTeam - Modems
* Ubuntu Fr Doc - cles_3g
* Ubuntu Fr Doc - modem
* bayn : configurer le modem Huawei E-325 sous GNU/Linux
* comment installer- HUAWEI- E173 -MAROC TELECOM-Ubuntu [Resolu] #2
* [Résolu] Problème de connexion avec le modem 3G ZTE MF100


.

هناك تعليق واحد:

  1. غير معرف29/9/11 9:25 ص

    شكراً على الشرح ممكن تضيف طريقة إتصال عن طريق pppd

    ردحذف