[問題] linux netfilter修改ip address問題

看板C_and_CPP (C/C++)作者 (2orx)時間14年前 (2011/08/24 23:11), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 無 大家好, 我目前在寫一個netfilter kernel module, 安裝此module的主機可以把特定 protocol封包的ip位置改變而轉發該封包到別的host,我的問題如下: 1. 經過測試, 我發現如果在PRE_ROUTING的時機點作hook, 可以修改dst ip address, 封包將隨我修改的dst ip address轉送到擁有該ip address的host, 但如果我也 同時修改src ip address, 封包似乎就無法轉發出去?? 2. 為了解決問題一, 我掛載2個netfilter hook, 一個掛在PRE_ROUTING負責修改 dst ip address, 一個掛在FORWARD負責修改src ip address, 這樣的機制在 2台ubuntu上(kernel分別是2.6.24和2.6.35)都可順利轉發封包; 但如果跑在 centOS5上(kernel為2.6.18), 安裝kernel module的主機就會開始"亂轉送"(冏) 明明我把dst ip address從A修改成B, 主機轉送的封包在wireshark看來 dst ip address卻是C, 唉呦真是氣死我.... 請問各位前輩有什麼經驗指教嗎? 小弟kernel還不熟, 問題粗淺請多包涵 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.101.33
文章代碼(AID): #1ELHIaEE (C_and_CPP)
文章代碼(AID): #1ELHIaEE (C_and_CPP)