当前位置:  技术问答>linux和unix

三块网卡,配置 squid 和 iptables问题

    来源: 互联网  发布时间:2016-05-16

    本文导语:  本人新人,遇到如下问题:一台linux服务器,三张网卡  eth0 接电信网  eth1 接校园网,ip为172.18.17.181 255.255.255.192 172.18.17.129  eth2接实验室内部局域网  现在希望通过配置squid和iptables实验透明代理。最终实验室内...

本人新人,遇到如下问题:一台linux服务器,三张网卡 
eth0 接电信网 
eth1 接校园网,ip为172.18.17.181 255.255.255.192 172.18.17.129 
eth2接实验室内部局域网 

现在希望通过配置squid和iptables实验透明代理。最终实验室内部的ip为服务器自动分配的地址(最后使得ip和eth1的ip处于同一个网段),相当于服务器作为二级DHCP服务器,同时实现访问校园网和电信。 

本人新人,可能表述不太清楚,希望高手知道一下如何用命令行通过ssh远程配置,最好有详细的教程和截图。万分感谢了!!

|
在网上翻了很多资料。都是squid2.6的,真正用squid3.0的很少或根本就是错误的。
所以想写一个以备忘及抛砖引玉。其中可能有手误之处。
环境:CentOS 5.2
iptables为系统自带(版本是:iptables v1.3.5)。
三张网卡
其中eth0(192.168.0.2),eth1(192.168.10.11为内网。eth2为外网.
squid:squid-3.0.STABLE10.tar.gz
下载地址:http://www.squid-cache.org/
wget -c http://www.squid-cache.org/Versi ... 3.0.STABLE10.tar.gz
下载的文件放在/usr/local/src目录中

#cd /usr/local/src
#wget -c http://www.squid-cache.org/Versi ... 3.0.STABLE10.tar.gz
#tar -zxvf squid-3.0.STABLE10.tar.gz
# cd squid-3.0.STABLE10
我是把configure写成一个批处理
这里的configure注意要增加--enable-linux-tproxy  --enable-linux-netfilter支持透明正向代理
要不会在安装后启动时中的cache,提示不支持transparent

#vi config.sh
复制以下内容到config.sh
#!/bin/bash
      ./configure --prefix=/usr/local/squid 
       --enable-gnuregex --enable-carp --enable-async-io=80 
       --enable-storeio=aufs,diskd,ufs,null --enable-removal-policies=heap,lru 
       --enable-icmp --enable-delay-pools --enable-useragent-log --enable-snmp 
        --enable-arp-acl --enable-htcp --enable-underscores --enable-auth 
       --enable-external-acl-helpers=ip_user,ldap_group --enable-x-accelerator-vary 
       --enable-ssl --enable-cache-digests --enable-poll 
        --enable-linux-tproxy  --enable-linux-netfilter --with-pthreads  
      --with-aio --with-filedescriptors=65536 
        --enable-err-languages="Simplify_Chinese English" 
      --enable-default-err-language="Simplify_Chinese" 

#chmod 775 config.sh
#./config.sh
#make
#make install
squid3.0安装完毕。
现在设置squid.conf
#cd /usr/local/squid
建立squid的用户及组
#groupadd squid
#useradd squid -g squid -m -s /sbin/nologin

#vi etc/squid.conf
squid.conf 配置文件如下:
#http_port 3128 transparent vhost vport(这一个在上面的配置里面有,只是要改成这样)
cache_mem 1000 MB
cache_swap_low 90
cache_swap_high 95
#cache_dir ufs /opt/cache/squid 8000 16 256
cache_dir ufs /usr/local/squid/var/cache 1000 16 256
cache_access_log /var/log/squid/access.log
#cache_store_log /var/log/squid/store.log
cache_store_log /usr/local/squid/var/logs/store.log

dns_nameservers 218.104.128.106
maximum_object_size 409600 KB
maximum_object_size_in_memory 64000 KB
emulate_httpd_log on
ipcache_size 1024
ipcache_low 90
ipcache_high 95
fqdncache_size 1024
forwarded_for off
#coredump_dir /opt/cache/squid/coredump
#coredump_dir /usr/local/squid/var/cache



#acl all src 0.0.0.0/0
acl normal  src 192.168.0.0/24
acl wluser src 192.168.10.0/24
acl my src 192.168.0.9

http_access allow my
http_access allow normal
http_access allow wluser
http_access deny all

cache_effective_user squid
cache_effective_group squid
cache_mgr edward@hi-bit.net
visible_hostname No1.proxy

上面要注意的是:
1.http_port 3128 transparent vhost vport(这一行写的才是支持透明代理的,写2.6的五行写法不一样)
在squid.conf的875行.我的写法如下,增加accel(加速),具体参数说明见squid.conf中的875行以上的几行,有说明。
http_port 3128   transparent accel  vhost vport

(以下是squid 2.6的写法
httpd_accel_port 80
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_single_host off
httpd_accel_uses_host_header on
原来的squid.conf默认有 http_port 3128这一行。在后面加上transparent这一个参数)
2.有注释掉的几行是在squid.conf本来有的。可以查找到之后更改后面的参数就可以了。

3.#acl all src 0.0.0.0/0把这行注释掉。要不好像会监听0.0.0.0,没有测试过,只不过我是把他给注释掉了。

具本的每一行的意思。可以见网上的文章,很多就不啰嗦了,或见squid.conf.

建立squid的cache的目录及更改权限。要不会运行不了。
#mkdir /var/log/squid
#chown -R squid:squid /var/log/squid
#chown -R squid:squid /usr/local/squid/var/
#mkdir /usr/local/squid/var/cache
#chmod -R 777 var/cache
#chmod -R 777 /usr/local/squid/var/

第一次启动时要创建缓存目录
#/usr/local/squid/sbin/squid -z
成功会提示:
Creating Swap Directories
然后出现每个文件及目录的位置

测试Squid运行状况
#/usr/local/squid/sbin/squid -NCd1
成功后将出现"Ready to serve requests",否则请检查配置文件.
如下:
2008/11/24 22:59:27| Starting Squid Cache version 3.0.STABLE10 for i686-pc-linux-gnu...
2008/11/24 22:59:27| Process ID 13445
2008/11/24 22:59:27| With 1024 file descriptors available
2008/11/24 22:59:27| Performing DNS Tests...
2008/11/24 22:59:27| Successful DNS name lookup tests...
或提示:
2008/11/25 19:39:05| Squid is already running!  Process ID 2356

那么就说明squid已经安装成功了

#ps -aux| grep squid
看下squid进程在不。


iptables中的设置注意打开3128端口和加入以下几句

iptables -t nat -A PREROUTING -s 192.168.0.2 -i eth0
#以下$INET_IP为外网的IP地址,进行内网地址到外网地址的转换
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth2 -j SNAT --to $INET_IP
   129  iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth2 -j SNAT --to $INET_IP

#把从eth0.eth1 目的80端口的数据包重定向到3128端口,其中第一行为我内网的网关地址。可有可无。
#iptables -t nat -A PREROUTING -s 192.168.0.2 -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128


上面这四句比较重要,是进行透明代理的关键。前两句的作用是进行“源地址转换”,也就是说要进行内网地址到外网地址的转换。执行了这两句,即使没有squid,内网机器也可以上网了。
后面两句是对从两个内网网卡进入的、tcp协议的、目的端口号是80的,做“端口重定向”。重定向到3128端口。这样,squid就可以接到这个数据包了。
OK!如果你的squid没有问题,而且你也执行了上面的语句,并且没有报错。那就恭喜你,一个iptables+squid的透明代理做成了。如果你不相信,有两个方法可以测试:一是登录:http://ipid.shat.net ,这是一个国外网站,可以显示你的外网ip地址,还有是否被代理过。
#外网eth2 IP伪装
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
另外要注意载入的模块:

modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

echo 1 > /proc/sys/net/ipv4/ip_forward







    
 
 

您可能感兴趣的文章:

  • centos6网络配置及网卡设置相关命令及配置文件
  • 怎么配置网卡,是不是红帽linux9要装网卡驱动啊
  • 最新CentOS 7中文正式版64位下载、安装及CentOS网卡IP配置(ifconfig)(图文)
  • LINUX如何配置网卡,配置TELNET,急!在线等待!
  • linux网络配置(双网卡)问题
  • 如何配置网卡?
  • Linux网卡配置问题?
  • redhat7.3网卡配置问题
  • 如果买了固定IP,是不是将它配置给连接INTERNET的网卡。Windows中设置网卡的IP,上网后好象又得到了一个分配的IP
  • 网卡配置问题,请教下大家
  • red hat 8下单网卡的机器怎么配置成路由器?
  • 网卡配置
  • 主机换网卡了,里头的虚拟机怎么配置才能使用正常
  • 关于网卡配置问题
  • redhat9怎么配置笔记本无线网卡上网
  • linux下双网卡配置服务器,帮忙看看怎么配啊。。。
  • linux 双网卡配置
  • linux双网卡如何配置网关服务器!
  • 一个简单的问题--怎样配置网卡?
  • linux 在虚拟机VMware下配置两块网卡问题
  • 双网卡,用Linux做服务器怎么配置?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 无线网卡工作模式介绍以及如何设置工作模式
  • 如何保证一个网卡采集到的数据包从另一个网卡转发出去使得采集网卡不丢包
  • linux/Centos下查看和修改网卡Mac地址(ifconfig命令)
  • 4块网卡,如何绑定成看上去只有逻辑上的2个网卡,达到一种物理上的网卡备份效果?
  • 为什么内部网卡可以启动?另一块网卡不能自启动?
  • sqlserver iis7站长之家
  • SCO Unix5下如何装网卡?如何一块网卡配两个IP
  • 用程序如何判断主板上是双网卡还是单网卡呢?
  • sco unix5.0.7的网卡驱动那里有,网卡是8139
  • 走虚拟网卡内核程序和走物理网卡应用程序结合问题
  • linux下多网卡机器中,如何通过指定网卡来接受数据?
  • 关于两个网卡的网卡驱动程序编写的问题?
  • 双网卡搭建网桥后,怎样确定数据包是从那个网卡进来的?(LINUX)
  • LINUX中装了三个网卡,三个网卡都是同个IP段,如何让他们不能互相访问?
  • DHCPD服务开启不了,系统提示:我要声明某个网卡(因为我有两块网卡),不知道怎么搞
  • 求redhat9 下 x5dpa-GG的网卡驱动,装好机器后认不出网卡
  • 网卡刚开机时好的,但Redhat9起来后,网卡的屁股就不闪了,需要多次挺拔网线才行
  • 如何手动调整网卡的half duplex & full duplex ?如何手动调整网卡的10/100M速度?
  • 偶的网卡不能被识别,NFORCE2集成的网卡,
  • Red hat 9.0 无法识别USB移动硬盘, 无法识别网卡和无线网卡,请问如何安装驱动?
  • 请问 如何在 solaris 下装 网卡驱动(网卡不能被识别)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3