Re: [問題] 請問iptables和ip queue

看板LinuxDev作者 (Ya-Shiuan)時間18年前 (2007/04/08 22:23), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《woomar (hi)》之銘言: : 我想請問一下 : 我有一台機器有兩張網卡 : eth0是對外的(192.168.1.3) : eth1是對內的(192.168.3.254)(NAT GW) : 這台機器本身就有做NAT : 我現在想要用iptables加上ip queue的方法做封包的tunnel : 不曉得是不是因為NAT的關係 : 我只能在FORWARD 抓到封包(ex:192.168.1.4-->192.168.3.9) 根據 netfilter hook 法則,的確 1.4 -> 3.9 的 packet 會先經過 prerouting 再經過 forward 由 eth1 出去 ( net.ipv4.ip_forward == 1) : 然後我用libipq修改封包 : 想要把封包tunnel給192.168.1.5 : 我在ip header上修改了dst addr : 也重新算過checksum : 也用過ipq_set_verdict(NF_ACCEPT) : 不過封包並沒有送給192.168.1.5 : 不管是只修改daddr+checksum : 或是多加一層ip header上去都沒有用 : 我想請問的是 : 是因為已經到forward階段了 : 所以給192.168.1.5的封包被drop掉了嗎 : 我應該要怎麼做才能讓這些封包藉由eth0送給192.168.1.5呢? 看你的情況 ipq 的 rule 應該是 hook 在 forward 上 我記得 forward 似乎不能 input/output 同一個 interface (也許我記錯了...!!) 以你的情況,如果是 1.4 -> 3.9 想要轉送給 1.5 就形成 in/out 同個 if 我之前的經驗是藉由 libipq 將 packet 抓起來後,利用 raw socket 將改過的 packet 再送出去即可,完成後回 nf_drop 給 ipq ,讓他可以將 packet free, accept 就會繼續送給 3.9 如此應該可以達到你的要求 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.188.188

04/10 03:37, , 1F
感謝 我今天嚐試了依下 將s:1.4 d:3.9 -->s:3.9 d:1.5
04/10 03:37, 1F

04/10 03:39, , 2F
再將ACK tunnel回去 還是依樣沒成功 看起來只有用rawsocket
04/10 03:39, 2F
文章代碼(AID): #166FhS1L (LinuxDev)
討論串 (同標題文章)
文章代碼(AID): #166FhS1L (LinuxDev)