Chinaunix首页 | 论坛 | 博客
  • 博客访问: 71013
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 134
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-20 09:38
文章分类

全部博文(9)

文章存档

2017年(2)

2015年(2)

2014年(5)

我的朋友

分类: LINUX

2014-06-28 11:50:35

客户要求通过WAN口访问web界面,且自定义端口,在本站论坛的各位高人悉心指导下终于得到解决

     iptables -t nat -I PREROUTING -i eth1 -p tcp -m tcp --dport 8080 -j REDIRECT --to-ports 80

转换eth1(WAN口)的8080端口访问到80端口

但在默认配置编译出来的内核,无法执行 REDIRECT 这个模块

iptable 命令有些模块是默认关闭的,要在内核配置里开启才可以用
(Realtek SDK)
linux_menuconfig - Networking support -Networking options-Network packet filtering framework (Netfilter)  --->此处有许多targget match ...可以添加



以下是iptables执行的代码片段,以便日后查阅

点击(此处)折叠或打开

  1. int Port=0, wan_port1 = 0, wan_port2 = 0;
  2.     apmib_get( MIB_WEB_WAN_ACCESS_ENABLED, (void *)&intVal);
  3.     apmib_get( MIB_WAN_WEB_PORT1, (void *)&wan_port1);
  4.     apmib_get( MIB_WAN_WEB_PORT2, (void *)&wan_port2);
  5.     Port = (wan_port1<<8)^wan_port2;
  6.     if(intVal==1){
  7.         //printf("\n%s_%d__oldport:%d,port:%d\n",__FILE__,__LINE__,old_port,intVal1);
  8.         char portStr[10];
  9.         RunSystemCmd(NULL_FILE, Iptables, ADD, INPUT, _protocol, _tcp, dport, "80:80", in, pInterface, _dest, WanIpAddr, jump, ACCEPT, NULL_STR);
  10.         if(old_port!=0){//删除之前的两条旧规则以免冲突
  11.             sprintf(portStr,"%d",old_port);
  12.             RunSystemCmd(NULL_FILE, Iptables, _table, nat_table, DEL, PREROUTING, in, pInterface, _protocol, _tcp,    dport, portStr, jump, REDIRECT, "--to-ports", "80", NULL_STR);
  13.             RunSystemCmd(NULL_FILE, Iptables, _table, nat_table, DEL, PREROUTING, in, pInterface, _protocol, _tcp,    dport, "80", jump, REDIRECT, "--to-ports", portStr, NULL_STR);
  14.             
  15.         }
  16.         
  17.         if(intVal1!=80){// add by Zuo 20130524 ,转换wan口访问web端口号
  18.             sprintf(portStr,"%d",Port);
  19.             RunSystemCmd(NULL_FILE, Iptables, _table, nat_table, INSERT, PREROUTING, in, pInterface, _protocol, _tcp,    dport, portStr, jump, REDIRECT, "--to-ports", "80", NULL_STR);
  20.             RunSystemCmd(NULL_FILE, Iptables, _table, nat_table, INSERT, PREROUTING, in, pInterface, _protocol, _tcp,    dport, "80", jump, REDIRECT, "--to-ports", portStr, NULL_STR);
  21.             old_port=Port;//每次转换端口都记录下端口号,为了下次更改端口号之后删除之前的转换规则
  22.             
  23.         }
  24.         
  25.     }else{
  26.         RunSystemCmd(NULL_FILE, Iptables, ADD, INPUT, _protocol, _tcp, dport, "80:80", in, pInterface, _dest, WanIpAddr, jump, DROP, NULL_STR);
  27.     }







特别感谢版主  的耐心
以此记方便后查者

阅读(4230) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~