亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 5975 | 回復: 7
打印 上一主題 下一主題

[網絡子系統(tǒng)] ftp ALG問題 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-07-11 16:01 |只看該作者 |倒序瀏覽
本帖最后由 peruke 于 2013-07-15 09:06 編輯

測試2.6.21內核(非標準)ftp 穿透防火墻,Windows自帶的ftp client不能下載文件,抓包發(fā)現(xiàn)ftp PORT命令包含私有IP:
PORT 192,168,1,100,12,172
500 Illegal PORT range rejected.
被ftp server拒絕了。

檢查了linux kernel 配置,NF_CONNTRACK_FTP 和NF_NAT_FTP 選項都是yes 的,按理ftp 載荷里私有IP應被修改為廣域網IP地址,
不知道為什么ftp ALG 沒有起作用。

跟標準2.6.21 kernel對比了一下,netfilter代碼基本相同,相信是2.6.21 kernel 本身就存在的bug,求patch,謝謝!

論壇徽章:
0
2 [報告]
發(fā)表于 2013-07-12 10:19 |只看該作者
本帖最后由 peruke 于 2013-07-12 10:32 編輯

查看了內核nf_conntrack_ftp.c,有注冊ftp helper的代碼:
  1. static int __init nf_conntrack_ftp_init(void)
  2. {
  3.         int i, j = -1, ret = 0;
  4.         char *tmpname;

  5.         ftp_buffer = kmalloc(65536, GFP_KERNEL);
  6.         if (!ftp_buffer)
  7.                 return -ENOMEM;

  8.         if (ports_c == 0)
  9.                 ports[ports_c++] = FTP_PORT;

  10.         /* FIXME should be configurable whether IPv4 and IPv6 FTP connections
  11.                  are tracked or not - YK */
  12.         for (i = 0; i < ports_c; i++) {
  13.                 ftp[i][0].tuple.src.l3num = PF_INET;
  14.                 ftp[i][1].tuple.src.l3num = PF_INET6;
  15.                 for (j = 0; j < 2; j++) {
  16.                         ftp[i][j].tuple.src.u.tcp.port = htons(ports[i]);
  17.                         ftp[i][j].tuple.dst.protonum = IPPROTO_TCP;
  18.                         ftp[i][j].mask.src.l3num = 0xFFFF;
  19.                         ftp[i][j].mask.src.u.tcp.port = htons(0xFFFF);
  20.                         ftp[i][j].mask.dst.protonum = 0xFF;
  21.                         ftp[i][j].max_expected = 1;
  22.                         ftp[i][j].timeout = 5 * 60;        /* 5 Minutes */
  23.                         ftp[i][j].me = THIS_MODULE;
  24.                         ftp[i][j].help = help;
  25.                         tmpname = &ftp_names[i][j][0];
  26.                         if (ports[i] == FTP_PORT)
  27.                                 sprintf(tmpname, "ftp");
  28.                         else
  29.                                 sprintf(tmpname, "ftp-%d", ports[i]);
  30.                         ftp[i][j].name = tmpname;

  31.                         DEBUGP("nf_ct_ftp: registering helper for pf: %d "
  32.                                "port: %d\n",
  33.                                 ftp[i][j].tuple.src.l3num, ports[i]);
  34.                         ret = nf_conntrack_helper_register(&ftp[i][j]);
  35.                         if (ret) {
  36.                                 printk("nf_ct_ftp: failed to register helper "
  37.                                        " for pf: %d port: %d\n",
  38.                                         ftp[i][j].tuple.src.l3num, ports[i]);
  39.                                 nf_conntrack_ftp_fini();
  40.                                 return ret;
  41.                         }
  42.                 }
  43.         }

  44.         return 0;
  45. }
復制代碼
并且在syslog中也有記錄:
Netfilter messages via NETLINK v0.30.
nf_conntrack version 0.5.0 (256 buckets, 2048 max)
nf_ct_ftp: registering helper for pf: 2 port: 21
nf_ct_ftp: registering helper for pf: 10 port: 21
ip_tables: (C) 2000-2006 Netfilter Core Team, Type=Restricted Cone
ipt_time loading
說明ftp helper 確實被注冊了,也沒有出錯。

但是,有LAN到WAN的ftp 連接時,且LAN端client 發(fā)出PORT命令,ftp help 函數竟沒有輸出任何東西,調試開關都已打開,奇怪。

請熟悉linux netfilter conntrack 的朋友幫忙釋疑!

論壇徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16賽季CBA聯(lián)賽之廣東
日期:2018-02-05 11:22:1215-16賽季CBA聯(lián)賽之八一
日期:2016-07-04 12:26:1815-16賽季CBA聯(lián)賽之青島
日期:2016-06-08 11:15:4115-16賽季CBA聯(lián)賽之遼寧
日期:2016-04-05 10:10:1415-16賽季CBA聯(lián)賽之遼寧
日期:2016-03-11 11:11:48酉雞
日期:2014-12-18 14:35:48獅子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16賽季CBA聯(lián)賽之廣夏
日期:2018-03-21 08:51:10
3 [報告]
發(fā)表于 2013-07-12 14:25 |只看該作者
看看alg有沒有支持port方法?
我有patch,不過不能給你。

論壇徽章:
0
4 [報告]
發(fā)表于 2013-07-12 14:43 |只看該作者
daniel_11:
你所說是否指nf_nat_ftp.c中的PORT方法?
  1. static int (*mangle[])(struct sk_buff **, __be32, u_int16_t,
  2.                        unsigned int, unsigned int, struct nf_conn *,
  3.                        enum ip_conntrack_info, u32 *seq)
  4. = {
  5.         [NF_CT_FTP_PORT] = mangle_rfc959_packet,
  6.         [NF_CT_FTP_PASV] = mangle_rfc959_packet,
  7.         [NF_CT_FTP_EPRT] = mangle_eprt_packet,
  8.         [NF_CT_FTP_EPSV] = mangle_epsv_packet
  9. };
復制代碼
因為對netfilter conntrack整體框架不熟,所以里面的來龍去脈搞不清楚,以我的理解是:
nf_nat_ftp.c 中的函數 nf_nat_ftp 賦給指針nf_nat_ftp_hook,應該被nf_conntrack_ftp.c 中的help 函數在某個時間調用,如果是PORT命令,最終由 mangle_rfc959_packet 調用 nf_nat_mangle_tcp_packet來修改包。

論壇徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16賽季CBA聯(lián)賽之廣東
日期:2018-02-05 11:22:1215-16賽季CBA聯(lián)賽之八一
日期:2016-07-04 12:26:1815-16賽季CBA聯(lián)賽之青島
日期:2016-06-08 11:15:4115-16賽季CBA聯(lián)賽之遼寧
日期:2016-04-05 10:10:1415-16賽季CBA聯(lián)賽之遼寧
日期:2016-03-11 11:11:48酉雞
日期:2014-12-18 14:35:48獅子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16賽季CBA聯(lián)賽之廣夏
日期:2018-03-21 08:51:10
5 [報告]
發(fā)表于 2013-07-12 14:48 |只看該作者
peruke 發(fā)表于 2013-07-12 14:43
daniel_11:
你所說是否指nf_nat_ftp.c中的PORT方法?因為對netfilter conntrack整體框架不熟,所以里面的來 ...

因為port方法需要nat開port,需要根據ftp port命令內容建立正確的exp。

論壇徽章:
0
6 [報告]
發(fā)表于 2013-07-12 14:54 |只看該作者
本帖最后由 peruke 于 2013-07-12 14:55 編輯
daniel_11 發(fā)表于 2013-07-12 14:48
因為port方法需要nat開port,需要根據ftp port命令內容建立正確的exp。

是的,nat所做的工作一個是開放port,另一個是修改私有IP為廣域網IP.

如果help 函數中的調試消息可以出來,對調試是很大的幫助,再問一下,什么情況下help 函數中的調試消息出不來呢?
謝謝!

論壇徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16賽季CBA聯(lián)賽之廣東
日期:2018-02-05 11:22:1215-16賽季CBA聯(lián)賽之八一
日期:2016-07-04 12:26:1815-16賽季CBA聯(lián)賽之青島
日期:2016-06-08 11:15:4115-16賽季CBA聯(lián)賽之遼寧
日期:2016-04-05 10:10:1415-16賽季CBA聯(lián)賽之遼寧
日期:2016-03-11 11:11:48酉雞
日期:2014-12-18 14:35:48獅子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16賽季CBA聯(lián)賽之廣夏
日期:2018-03-21 08:51:10
7 [報告]
發(fā)表于 2013-07-12 15:33 |只看該作者
本帖最后由 daniel_11 于 2013-07-12 15:36 編輯
peruke 發(fā)表于 2013-07-12 14:54
是的,nat所做的工作一個是開放port,另一個是修改私有IP為廣域網IP.

如果help 函數中的調試消息可以出 ...

連調試信息都沒有?你用pasv方法能出來不?用的什么方法看log?
有用conntrack tool來看看conntrack的信息么?
對于ftp alg流程,開個傳送門,http://www.72891.cn/thread-1935787-1-1.html

論壇徽章:
0
8 [報告]
發(fā)表于 2013-07-12 16:15 |只看該作者
pasv模式也沒有調試信息,我用dmesg看的,相關消息如下:
Netfilter messages via NETLINK v0.30.
nf_conntrack version 0.5.0 (256 buckets, 2048 max)
nf_ct_ftp: registering helper for pf: 2 port: 21
nf_ct_ftp: registering helper for pf: 10 port: 21
ip_tables: (C) 2000-2006 Netfilter Core Team, Type=Restricted Cone
ipt_time loading


我在/proc/net/nf_conntrack 看的連接信息:
ipv4     2 tcp      6 3597 ESTABLISHED src=192.168.1.10 dst=193.162.146.4 sport=8118 dport=21 packets=9 bytes=427 src=193.162.146.4 dst=183.37.243.99 sport=21 dport=8118 packets=9 bytes=730 [ASSURED] mark=0 use=1

謝謝你的門,進去看看。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP