命令行下配置路由和远程访问内的NAT/基本防火墙入出站筛选

今天碰到一个问题,需要在Windows2003下配置路由和远程访问来完成共享上网,并通过设置其 NAT/基本防火墙 中的入站筛选器和出站筛选器屏蔽一些已经确认的恶意网站和,最主要的是在需要时(有时阻止、有时允许)阻止固定的内网机器上网,如果每次都通过在图形界面底下添加、删除同样的一条规则显得特别的麻烦。
所以,我尝试在命令行底下通过脚本来调整筛选器,这样就可以做成批处理执行,避免每次打开“路由和远程访问”的控制台再手动输入信息,经过思考我决定利用命令行下的 netsh 命令来配置:netsh routing ip add filter "nei" input 192.168.2.200 255.255.255.255 222.222.222.222 255.255.255.255 any,通过这个命令我可以在名为nei的LAN连接的入站筛选器里增加一条“接收所有除符合下列条件以外的数据包”的筛选规则。
        但现在的问题是,用这个命令增加的信息不能选择是“接收所有除符合下列条件以外的数据包”还是“丢弃所有的包,满足下面条件的除外”。这样的话我如果要一台机子上网、其他的机子都不能上网,就要写254(255-1)条上面的命令,而如果能将这条规则设置成“丢弃所有的包,满足下面条件的除外”,那么就只需要添加一条筛选记录,做成批处理执行起来也相对容易。
        经过在Windows2003的帮助文档下对netsh的仔细查找,终于找到解决的办法,可以使用 set来设置是 drop(接收所有除符合下列条件以外的数据包)还是 forward(丢弃所有的包,满足下面条件的除外) ,加上用add来添加筛选条件。
        应用当中碰到一个问题,规则的源地址可以设置成允许上网的那台机器,但目的地址要不设置或者设成全部就不知道如何设置了,经过实验发现其实要不设置目的地址可以将目的地址的IP和掩码都设置成“0.0.0.0 0.0.0.0”就OK了,执行命令后你会在内网连接的入站筛选里面发现一条: “丢弃所有的包,满足下面条件的除外”、源地址和掩码是192.168.2.200 255.255.255.255、目的地址是空(全部)的规则,这样就可以在DOS下完全控制筛选了。方法找到了,开心ing……

下面是我写的两个批处理:

添加一条只允许192.168.2.200访问外网的筛选规则
@echo of
netsh routing ip add filter "nei" input 192.168.2.200 255.255.255.255 0.0.0.0 0.0.0.0 any
netsh routing ip set filter nei input drop

删除这条规则,允许所有人上网
@echo of
netsh routing ip delete filter "nei" input 192.168.2.200 255.255.255.255 0.0.0.0 0.0.0.0 any
netsh routing ip set filter nei input forward

        *实际应用中发现只删除规则的话,其他机器仍然不能上网,但将这条已经删除的规则设成forward后正常,原因我还没想到,谁知道的话赶紧告诉我吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值