iptables 设置『罗斌原创』

 
iptables 设置
拓扑图:                                                                                                192.168.20.254
*----------*           *--------*          *--------* ↑
|client    |-----------|iptables|----------*internet*
*----------*♂       ♂*--------* ♂       *--------*
  192.168.1.2     192.168.1.1    192.168.20.44
拓扑图说明:
client代表局域网中的工作站,iptables是一台Linux系统的服务器,它需要有两块网卡,一块连内外,一块上因特网。internet表示因特网,我这里用一台另一网段的机器做实验
任务1:SNAT
任务2: DNAT
任务3:Squid

任务解析:
SNAT:静态网络地址转换,相当于拓扑图中局域网中的client想上网
就必须通过网关192.168.1.1,由192.168.1.1转发给192.168.20.44 最后上到Internet。
DNAT:动态NAT,比如说client所在局域网中有1台网站服务器,它只能通过iptables去上Internet,而这时侯该网站服务器要想成为
公网上的一台服务器,那么就必须将该服务器的80端口映射到iptables主机的外网IP 192.168.20.44 ,这样外网通过访问 http://192.168.20.44 就等于直接访问到了我局域网中的这台WEB服务器了。
Squid:LINUX下一款有名的缓存代理软件,还是照拓扑来说,Squid的功能就是让局域网中客户机能通过iptables主机做代理服务器上因特网。这样客户机器只要将网关指向iptables主机,在IE工具INTERNET选项中设置连接中的代理就可以上网了。如果iptables主机做成透明代理的话则不需要设置INTERNET选项,只要指定网关就可以上网了。

实验前奏
搭建环境:client网卡自定义网卡类型2
          iptables主机的第一块网卡也为自定义类型2
          iptables主机的另一块网卡为桥接
配置IP:client的IP设置为192.168.1.2网关指向1.1
        iptables主机eth0 IP设置为1.1 eth1设置为20.44
任务1实验步骤(SNAT):
①开启LINUX主机iptables的内核包转发功能,vi /etc/sysctl.conf 将net.ipv4,ip_forward = 0 的0改为1
:wq 保存退出 然后使用sysctl -p命令重新加载该值。
如果是临时使用的话则可以用echo 1 > /proc/sys/net/ipv4/ip_forward命令使之临时生效。之后就可以在client上ping 192.168.20.44 看它是否能ping通,如果能ping通则说明刚才的设置正确。
②使用iptables  -t filter -L -n 查看下是否已经有过防火墙的设置,如果有的话,可以使用
iptables -F filter
iptables -F nat  
iptables -F mangle
分别清除这三种防火墙策略列表。
iptables  -t filter -P  INPUT/OUTPUT DROP/ACCEPT
iptables  -t nat  -P    INPUT/OUTPUT DROP/ACCEPT
iptables  -t mangle -P  INPUT/OUTPUT DROP/ACCEPT
分别设置这三种防火墙策略列表默认设置。

③配置一条NAT策略
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 192.168.20.44
(命令解释:-t 选项表示指定要写入到的该规则表名称,-A 为指定要添加的规则在该链的末尾添加规则,-s 表示数据包的源地址为192.168.1.0/24子网 -j SNAT --to 192.168.20.44 这个表示允许192.168.1.0/24子网的所有数据包通过192.168.20.44出去)
可以使用iptables -t nat -L -n来查看刚才添加的策略。
④测试,这个时候client就可以访问Internet了,我这里可以用
http://192.168.20.254 (WEBmail服务器)如果成功访问则OK。
也可以访问下百度,如果成功则OK。
任务2实验步骤(DNAT):
①将client配置成IIS做个简单的网页。
②设置一条策略,
iptables -t nat -A PREROUTING -p tcp --dprot 80 -j DNAT --to 192.168.1.2
③测试,这个时候用真机,或client这台机器来访问
http://192.168.20.44 看到的界面跟在client上访问 http://192.168.1.2 一样则成功!

任务3实验步骤(普通Squid):
①确认Squid包已经安装 rpm -qa |grep Squid
② cd /etc/Squid
③初始化代理服务器。生成缓存目录,在未生成前ls /var/spool/squid目录下什么都没有的。现在vi /var/spool/squid/squid.conf 查找 /hostname
在#Default:
  # none 下面添加一行 visible_hostname mylinux(该iptables的主机名) 保存退出。
  
④使用squid -z 创建Swap目录,这里时候在/var/spool/squid/下就产生了许多交换分区的文件夹。
⑤使用netstat -tunl |grep 3128 查看是否开放了3128窗口。
⑥ vi /var/spool/squid/squid.conf 查找 /http_access
在#be allowed 下面两行前面的#注释去掉,并设置它的SRC地址段
比如 acl our_networks src 192.168.1.0/24
     http_access allow our_networks
保存退出。
重启 squid 服务 service squid restart
(为什么要设置这个呢?因为缓存代理默认只允许自己,拒绝所有)
⑦测试,在client机器上只需要设置好IP地址,子网掩码,再在IE中
连接,局域网设置中启用代理服务器。现在就可以在client机器上访问外网的网站了,比如 http://192.168.20.254

任务3实验步骤(透明代理Squid):
①vi /var/spool/squid/squid.conf 查找 /http_accel
找到 #Default:
     #http_accel_port 80
     #http_accel_host  virtual (添加virtual)
将前面的两个#去掉变为:
     #Default:
      http_accel_port 80
      http_accel_host virtual
继续查找 /httpd_accel_with_proxy off 将 前面的#去掉,将off 改为 on  保存退出。
②重启 squid 服务 service squid restart
③添加一条策略:
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p --dprot 80 -j REDIRECT  --to-ports 3128
④测试,在client机器中将TCP/IP中的网关指定为iptables内网IP,将Internet选项中的局域网设置的代理前面的勾去掉,然后在IE浏览器中输入 HTTP://192.168.20.254 或其他Internet地址 如果能访问则成功!

『罗斌原创Linux网络服务搭建笔录』
更多原创请浏览罗斌的博客 http://luobin44.51.com

你可能感兴趣的:(配置,职场,iptables,休闲,设置『罗斌原创』)