在linux下用iptables代理上网
1、网关/代理服务器(proxy server)
iptables: linux下的防火墙软件
iptables具备两种功能:
1、firwall
2、nat地址转换
rpm -qa | grep iptables <查看有没有安装iptables>
iptables-1.2.11-3.1.RHEL4
service iptalbes start <启动iptables服务>
iptables有两张表:1、当你用filter表时它认为是做防火墙
2、当你用nat表时它认为你做代理上网
iptables -t nat -L <查看nat表>
nat表下面是链(Chain)
1、PREROUTING <一般用来做透明代理上网>
2、POSTROUTING <一般用来做单纯的nat地址转换>
3、OUTPUT <出去的链>
iptables -t nat -A(添加) POSTROUTING(添加一个POSTROUTING链) -s 202.106.20.0/24(代动哪个网段/哪些电脑去上网) -j(执行一个动作) MASQUERADE(ip地址伪装)
target <执行什么动作>
prot <协议>
source <源地址>
destination <目标地址>
echo "1" > /proc/sys/net/ipv4/ip_forward <转发数据>
想让代理上网永久生效我们要在linux下写一个脚本(可执行文件)
脚本都放在 cd /bin
- cd /bin
- touch daili
- chmod a+x daili
- vi daili
- #!/bin/bash
- adsl-stop
- adsl-start
- route add default ppp0
iptables -t nat -F <清空nat表里的所有规则>
iptables -t filter -F <清空防火墙里的所有规则>
- echo "1" > /proc/sys/net/ipv4/ip_forward
- iptables -t nat -A POSTROUTING -s 202.106.20.0/24 -j MASQUERADE
- iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
要想每一次开机就能自动带动下面的机器上网的话就执行下面的命令
- vi /etc/rc.local
把 /bin/daili 写到rc.local里
(注:nat的客户端的网关都指向做代理上网那个电脑的ip)
squid代理上网(缓存代理)
端口号:tcp 3128
rpm -qa | grep squid <查看有没有安装squid>
- squid-2.5.STABLE6-3
- vi /etc/squid/squid.conf
http_port 3128 <把这名话放开>
cache_mem 8 MB <代理上网的缓存用多大的内存去做缓存>
cache_dir ufs /var/spool/squid 100 16 256 <把用户浏过的网存放在哪个位置>
(100是这个目录可以存放多少100MB的东西这个可以改,它会在这个目录下建立16子目录用来存放网页,在16子目录下会建立256个子目录)
acl LAN1 src 202.106.20.0/24
acl LAN2 src 192.168.0.0/24 <定义哪个网段/哪些电脑能上网>
http_access allow localhost LAN1 LAN2 <允许哪些电脑能上网,如:允许LAN1 LAN2C能上网>
http_access deny <拒绝哪些电脑上网>
squid -z <创建缓存目录>
service squid start <启动squid服务>
(注:squid的客户端要把IE浏览器中的Internet选项中的连接局域网设置下的代理服务器的ip和squid的端口3128)。这样,就可以在Linux下用iptables上网了。
【编辑推荐】