20/10/2550
ลองไล่ดูแล้วครับ ทราบปัญหาแล้ว ครับ แต่ไม่แน่ใจว่าถูกหรือเปล่า
คือว่า ระบบ Intranet ที่มีเครื่องที่ปล่อย multicast เครื่อง server จะไม่รับ Multicast เลยครับ เพราะว่า ip ไม่ได้มี เป้าหมายมาที่เครื่อง server ครับ ดังนั้นจึงต้องทำให้ server รุ้จักโดยลง multicast routing ให้ server คอย join multicast group ได้ครับ
และเมื่อ server รับ multicast ได้แล้ว มันจะผ่าน packet ไปให้ server ซึ่ง NAT ทำงานอยู่ netfilter ก็จะได้รับครับ และก็จะทำงานผ่านไปทั้ง random port เปลี่ยน source address ของ packet
แต่ว่า !!! เครื่องจะไม่ส่ง packet ออกไปสู่ internet ครับ เนื่องจากที่ผมเข้าใจคือ เครื่อง server เองก็คือปลายทางเหมือนกัน จึงไม่สามารถทำงาน forward ได้ ถามว่า
ผมจะแก้ส่วนไหนดีครับ ถ้าต้องการให้ มี packet multicast ออก ไป สู่ internet ครับ
1 เก็บ packet ลง mem อะไรสักอย่างนึง แล้วเขียน create sock อ่าน mem ออกไปเอง (ไม่รู้ว่า ยากไหมถ้าจะเขียนให้ kernel ส่งเอง จะเขียนไว้ที่ไหนดี หรือว่าควรแก้ที่ไหนดีครับ)
retval = sock_create(PF_INET, SOCK_DGRAM, 0, &sock);
2 ....
21/10/2550
วันนี้ลองเขียนดูแล้วครับ ก็เกิดคำถามสงสัยขึ้นมาว่า
จะเขียนแบบไปแทรกๆ ใน function ของเขาดีหรือว่าเขียนเป็นไฟล์ใหม่ดีครับ เพราะว่าผมเขียนการเขียนแล้วมันจะมี init_funtion name ประมาณว่าเป็น constructer ประมาณนี้
int __init netfilter_init(void)
void __exit netfilter_exit(void)
module_init(netfilter_init);
module_exit(netfilter_exit);
ซึ่งผมก็ยังคง งงๆ กับการทำงานของ kernel อยู่แต่ไม่รู้ว่าถูกหรือเปล่าคือ module_init(netfilter_init); คือการ register กับ kernel ให้ kernel เรียกทำงานเมื่อเปิดเครื่อง (ประมาณนี้) แล้วผมสงสัยว่าจะเรียกใช้งาน function ในไฟล์อย่างไรนอกเหนือจาก init และ exit
คือผมยังเริ่มต้นเขียนไม่ถูกครับ ไม่รู้ว่าจะเริ่มอย่างไรดี ตัวอย่างก็มีให้ดูแล้วครับ แต่คงไม่ 100% ก็การทำงานของ kernel นี่สิ ที่ไม่รุ้จะอ่าน code อย่างไรครับ T-T
ตอนมืดๆ
ลองเขียน packet ลงไฟล์ก่อนครับ ลองเล่นๆ ที่ ipt_LOG.c เขียนไฟล์ต้อง stdlib.h พอ include เข้าไปใช้ไม่ได้ครับ ทั้งๆ ที่ ที่อื่น ใช้ได้ ไม่รู้ว่าทำไมใน /ipv4/netfilter/ ถึงใช้ไม่ได้ งงอีกครั้ง หุหุ (จริงๆ เรียกว่าไม่รู้โครงสร้างมากกว่าไม่งั้นไม่ติดแง็กอย่างนี้หรอก)


Posts: 831
Joined: 12-05-2003