LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 900|回复: 7

请配置过iptables的朋友进来看一下

[复制链接]
发表于 2003-8-10 01:30:19 | 显示全部楼层 |阅读模式
有一台SuSE8.2的机器A,上面dsl0为ADSL连接。eth0为内网网卡连接。
ADSL的IP是192.168.1.1,eth0是192.168.1.3,此机器拨ADSL上网正常,现在有另外一台机器B是Windows2000,IP是192.168.1.5,想用A机器作为代理上网。
在机器A上配置了squid.conf,设置了默认监听端口为3128,启动,机器B中IE里面配置proxy server为192.168.1.3:3128,上网正常。

问题:
想设置为透明网关,所以配置了iptables。在/etc/init.d目录下建立了firewall文件,然后在/etc/init.d/boot.local中加入内容如下:
#!/bin/sh

echo "Enabling IP Forwarding..."
echo 1 > /proc/sys/net/ipv4/ip_forward

echo "Starting iptables rules..."

#Refresh all chains

/usr/sbin/iptables -F -t nat

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o  dsl0 -j SNAT --to-source 200.200.200.200

机器B中将网关设置成192.168.1.3,但是无法上网。
上面是我从网上找到的配置例子,我改了一下,但是不知道改的对不对。比如dsl0和eth0的位置对吗?200.200.200.200这个IP什么意思?我该改成什么?
看了iptables的帮助,但是看不太懂。说"--to-source"是It specifies that the source address of the  packet should be modified?
我应该如何配置iptables?
 楼主| 发表于 2003-8-10 02:55:57 | 显示全部楼层
刚才在MSN上跟beyond_2000斑竹聊了一下,得到他的帮助,在此感谢
把这句话改了一下
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o dsl0 -j SNAT --to-source 200.200.200.200
把200.200.200.200改成ADSL拨号之后的公网IP,就OK了,现在这台windows2000的机器也可以上网了
但是这个方法并不适合ADSL拨号的,因为拨号后的公网IP每次都不一样,所以这个方法只适合有静态IP的机器。
再琢磨一下去。
 楼主| 发表于 2003-8-10 04:12:28 | 显示全部楼层
现在改成这样了:
#!/bin/sh

echo "Enabling IP Forwarding..."
echo 1 > /proc/sys/net/ipv4/ip_forward

echo "Starting iptables rules..."

#Refresh all chains

/usr/sbin/iptables -F -t filter
/usr/sbin/iptables -F -t nat

#############Define packets from Internet server to Intranet#######################
iptables -A FORWARD -p tcp -s 0/0 --sport ftp-data -d 198.168.1.0/24 -i ppp0 -j ACCEPT
iptables -A FORWARD -p udp -d 198.168.1.0/24 -i ppp0 -j ACCEPT

#############Define packets from Intranet to Internet###############
iptables -A FORWARD -s 198.168.1.0/24 -i eth0 -j ACCEPT

#################################Define fregment rule##############################
iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

#################################Define icmp rule##################################
iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

#################################Define Proxy rule##################################
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

客户端上网正常了。
但是还有一个问题,就是如果在win2000的机器上FTP一个关闭了PASV模式的FTP站点的话,无法获取站点文件列表,应该是:
iptables -A FORWARD -p tcp -s 0/0 --sport ftp-data -d 198.168.1.0/24 -i ppp0 -j ACCEPT
这句话允许客户端采用消极模式访问FTP服务器,但是为什么不行呢?

该睡觉了,总算是有些成果,呵呵。
发表于 2003-8-10 10:36:54 | 显示全部楼层
最初由 Seraphim 发表
刚才在MSN上跟beyond_2000斑竹聊了一下,得到他的帮助,在此感谢
把这句话改了一下


跟Beyond聊了聊, 他不会没有告诉你直接在Yast中设置就可以了吧。
 楼主| 发表于 2003-8-10 16:11:23 | 显示全部楼层
他还真是没说
发表于 2003-8-10 22:42:19 | 显示全部楼层
Beyond该打屁股了。

SuSE, Redhat对防火墙都有自己的管理方法, 虽然你自己写script也可以实现, 但很容易和系统原先的配置产生冲突, 最好是在系统原有的基础上修改。
发表于 2004-10-13 01:50:51 | 显示全部楼层
不该把这么久的帖子翻出来了!可是我实在是太高兴了!我尝试着配置代理服务器已经将近一年的时间了。今天终于找到这个帖子。按照这个配置方案,加上squid我配置成功了!
因为suse不同于其他发行版,很多设置是不一样的,对于我这样的新手来说,是很难的。真的是太高兴了!!
发表于 2004-10-13 02:11:23 | 显示全部楼层
补充一个问题,安装上面的配置好iptables后,在yast里打开防火墙是否可行呢?我现在还没有开防火墙!
谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表