场景:
Proxy跟NAT、FWD、REVERS的区别:
(1)NAT是地址转换,改变的是源地址和源端口,把源地址为私有IP换成指定的公网IP,从而使内网机器能上网;
(2)Proxy是透明代理,改变的仅仅是目标地址,如果指定端口,则一并改变端口。一般用来限制内网机器所访问的目标,比如上某一特别网站时,则代理至某一个提示主机,返回提示页面。
(3)FWD仅仅是将包做转发,除了发向localhost的包以外,对源地址、目标地址以及两个端口,都不会改变。
(4)revers也是改变的目标地址,但是端口没法控制,主要用在内网网卡上作nat,如果用来做NAT上网的话,内网接口必须是公有IP段,可以正确路由出去才可以。源代码里面的实现就是in当成out,out变成了in。
语法:
NAT和FWD都有很多示例,主要说proxy:
(1)natd -p 3333 -proxy_only -proxy_rule "server 192.168.6.6:80 proto tcp" -log
(2)ipfw add 100 divert 3333 tcp from any to any 80 out via em0
说明:
(1)proxy_rule的参数很多,可以参照man libalias;
(2)如果没有指定proto,则默认为tcp,不会使用udp;
(3)ipfw nat(内核nat)还没有实现proxy_rule,正在提交给ipfw maillist;
示例:
请求网卡为em0,单网卡,dns服务器监听在vlan虚拟网卡:192.168.1.1:
ipfw add 00100 divert 3333 udp from 10.0.0.0/8 to any dst-port 53 in via em4
ipfw add00110 divert 3333 udp from 192.168.1.0/24 53 to 10.0.0.0/8 out via em4
ipfw add20000 allow ip from any to any dst-port 53
ipfw add21000 allow ip from any 53 to any
ipfw add50000 48 27128 allow log logamount 10000 ip from any to any
natd命令:
natd -p 3333 -proxy_only -proxy_rule "server 192.168.1.1 proto udp" -log -reverse
注意事项:
(1)server地址不能为入口网卡ip,否则会被忽略掉;
(2)因为是在内网卡上进行nat(proxy),所以要加reverse
(3)divert规则中的端口一定要准确,否则会把出去的正字缓存请求也一起处理掉,造成外网无法访问。
阅读(2723) | 评论(0) | 转发(0) |