外网----------------网关--------------------------eth0----------------------eth1----------------------------pc
110.86.1.98 192.168.0.1 192.168.0.201 192.168.1.1 192.168.1.2
#加载模块 iptables
#modprobe ip_tables
#modprobe iptable_nat
#modprobe iptable_filter
#modprobe ip_conntrack_ftp
#modprobe ip_nat_ftp
#启用IP转发
echo 1 >; /proc/sys/net/ipv4/ip_forward
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 192.168.0.201
[root@localhost ~]# service iptables save
Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
结果:192.168.1.2主机可以ping通网段192.168.0.0/24
[root@localhost ~]# iptables -t nat -A POSTROUTING -p tcp --dport 80 -s 192.168.1.0/24 -j SNAT --to-source 192.168.0.1
平台:RedHat8.0 各组件均为Linux 自带,双网卡eth0为出口地址,eth1为连接内网地址,网络连接正常。
实现步骤:
一。做IP地址翻译,让局域网内机器能够连入互联网。
#加载模块
#modprobe ip_tables
#modprobe iptable_nat
#modprobe iptable_filter
#modprobe ip_conntrack_ftp
#modprobe ip_nat_ftp
#启用IP转发
echo 1 >; /proc/sys/net/ipv4/ip_forward
#ip翻译(伪装)
iptables -t nat -A POSTROUTING -s 172.28.0.0/16 -o eth0 -j SNAT --to x.x.x.x
注:172.28.0.0/16为内网地址,x.x.x.x为这台机器的外部接口地址。
客户端只需将自己的网关设置为这些命令就实现了让内网机器上网的目的!如果想用代理服务器提供HTTP的缓存功能接 着做:
二。代理服务器
#修改配置文件----squid.conf
cd /etc/squid
cp squid.conf.defauld squid.conf
#切记!这点重要,因为二者文件有所不同!!!
行数 修改
48 http_port 80
405 cache_mem 80 MB #大小自己改
1466 http_access allow all
1650 httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
最后一步运行squid:
cd /etc/init.d
./squid start
#以上是最简单的设置,至于怎么优化squid请参考其他资料。
这样,客户端实际上是通过代理方式浏览网页(其他服务则不通过代理服务!)。
这样做的最大神奇之处在于:
1.客户断完全感觉不到代理服务器的存在,IE不用做任何设置!
2.你可以随时启动/关闭squid,客户端完全不受影响!(够神奇吧?!)
三.补充
以下两句最好写进 /etc/rc.d/rc.local,因为这两条记录重起机器后就失效了。
echo 1 >; /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.28.0.0/16 -o eth0 -j SNAT --to x.x.x.x
完
祝大家愉快!
这家伙很懒,写的不够详细,如有不明之处,请跟贴。
注: 这部分内容目前实现的功能主要就是一个nat的转换的功能,对于squid方便的功能还没有加上来,如果想实现iptables + squid的结合的话,必须在规则里加上如下一条:
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 172.28.0.0/16 --dport 80 -j REDIRECT --to-port 3128
by wind521