免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2346 | 回复: 7
打印 上一主题 下一主题

用IPTABLES NAT配置后,客户端还是不能上网,请求各位帮忙 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-19 21:34 |只看该作者 |倒序浏览
我的具体配置如下:



#eth0接internet,eth1接内网,eth1固定ip为192.168.50.1,eth0动态获得地址

#!/bin/bash
echo "Starting iptables rules(zq)..."
echo "1" >; /proc/sys/net/ipv4/ip_forward
IPT=/sbin/iptables
IP_RANGE="192.168.50.0/24"
MAC1="00-0c-76-08-58-cb" #内网永许上网的主机1MAC
MAC2="00-0C-76-07-C9-F1" #内网永许上网的主机2MAC
NET_IFACE="eth0"
INET_IP="xxx.xxx.xxx.xxx"
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG

$IPT -F
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT

$IPT -P FORWARD DROP
$IPT -t nat -A POSTROUTING -o ppp+ -j MASQUERADE

#仅让如下MAC地址的主机可以浏览外部WWW
$IPT -A FORWARD -m mac --mac-source $MAC1 -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -m mac --mac-source $MAC1 -p tcp --dport 443 -j ACCEPT
$IPT -A FORWARD -m mac --mac-source $MAC2 -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -m mac --mac-source $MAC2 -p tcp --dport 443 -j ACCEPT

$IPT -A FORWARD -p tcp -s $IP_RANGE --dport 25 -i eth1 -j ACCEPT
$IPT -A FORWARD -p tcp -s $IP_RANGE --dport 110 -i eth1 -j ACCEPT
$IPT -A FORWARD -p tcp -s $IP_RANGE --dport 143 -i eth1 -j ACCEPT

#拒绝其他机器访问internet WWW
$IPT -A FORWARD -s $IP_RANGE -p tcp --dport 80 -j REJECT
$IPT -A FORWARD -s $IP_RANGE -p tcp --dport 443 -j REJECT

#禁止MSN
$IPT -A FORWARD -p tcp --dport 1863 -j REJECT
$IPT -A FORWARD -d $IP_RANGE -j REJECT

#接收FTP
$IPT -A FORWARD -p tcp -s 0/0 --sport ftp-data -d $IP_RANGE -i ppp+ -j ACCEPT

#接收UDP
$IPT -A FORWARD -p udp -d $IP_RANGE -i ppp+ -j ACCEPT

#接收非联接请求TCP包
$IPT -A FORWARD -p tcp -d $IP_RANGE ! --syn -i ppp+ -j ACCEPT

#内网数据包通过
$IPT -A FORWARD -s $IP_RANGE -i eth1 -j ACCEPT

$IPT -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

$IPT -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT


$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
for DNS in $(grep ^n /etc/resolv.conf|awk '{print $2}') ; do
$IPT -A INPUT -p udp -s $DNS --sport domain -j ACCEPT
done

if [ "$INET_IFACE"=ppp0 ] ; then
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
else
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to $INET_IP
fi

论坛徽章:
0
2 [报告]
发表于 2004-07-19 23:38 |只看该作者

用IPTABLES NAT配置后,客户端还是不能上网,请求各位帮忙

what is ppp+?

论坛徽章:
0
3 [报告]
发表于 2004-07-20 08:10 |只看该作者

用IPTABLES NAT配置后,客户端还是不能上网,请求各位帮忙

可以从几个地方入手:
1.可不可以ping外网
2.域名可不可以解析
3.将控制上网那段拿除,可以上网后再加上.

论坛徽章:
0
4 [报告]
发表于 2004-07-20 08:55 |只看该作者

用IPTABLES NAT配置后,客户端还是不能上网,请求各位帮忙

改:
echo "1" >; /proc/sys/net/ipv4/ip_forward
为:
echo 1 >; /proc/sys/net/ipv4/ip_forward

论坛徽章:
0
5 [报告]
发表于 2004-07-20 19:19 |只看该作者

用IPTABLES NAT配置后,客户端还是不能上网,请求各位帮忙

我是ADSL动态获得IP拨号上网,本机上网正常,域名解析也正常,不过PING不通外网的所有一切,PING内网正常,听说是网关设置问题,但因为是动态IP,我不知道网关在哪设置.
我吧该设置取消后,在字符下一句一句用命令执行,所有都永许,只要能带动客户机上网就成,只要一个命令/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE;执行后还是一样,客户机上不了网,客户PING本机内网IP正常,外网动态IP也正常,就是别的都不行.

论坛徽章:
0
6 [报告]
发表于 2004-07-20 20:39 |只看该作者

用IPTABLES NAT配置后,客户端还是不能上网,请求各位帮忙

听说我们这边DNS屏蔽PING不通,不过外网所有的一切都PING不通,客户机无法域名解析,就是设置了本地DNS地址,也不行.我的服务器用REDHAT9,客户机用WIN2K,服务器内网IP为192.168.50.1,MASK:255.255.255.0,客户机IP:192.168.50.2,MASK:255.255.255.0,GATEWAY:192.168.50.1.DNS设置成本地的DNS和不填都一样,就是上不了网

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2004-07-20 23:10 |只看该作者

用IPTABLES NAT配置后,客户端还是不能上网,请求各位帮忙

1) 先將如下結果列上來:
ifconfig
route -n
cat /proc/sys/net/ipv4/ip_forward
iptables-save

2) 先從簡而繁...
若連簡單的都不行, 那複雜的更不可行, 先等下面 okay 再說吧:
service iptables stop
iptables -t nat -A POSTROUTING -j MASQUERADE
若這還不行, 檢查 routing 及連線, 起碼要確定 linux 自己可連得上.

3) 若 ping 不能用, 那就試 isp 的 mail server 吧:
(sleep3; echo helo localhost; sleep 3; echo quit) | telnet your.isp.net 25

4) shell script 有些錯誤要留意:
if [ "$INET_IFACE"=ppp0 ]
改為:
if [ "$INET_IFACE" = ppp0 ]

论坛徽章:
0
8 [报告]
发表于 2004-07-21 18:43 |只看该作者

用IPTABLES NAT配置后,客户端还是不能上网,请求各位帮忙

主要问题解决,解决方法如下:
首先/sbin/service iptables stop,然后再iptables -t nat -A POSTROUTING -j MASQUERADE,发现客户机可以上网了,原来执行过iptables -t nat -A POSTROUTING -j MASQUERADE,命令,发现上不了网,看来主要原因在没停IPTABLES服务.

然后把自己作的脚本导入后,一步一步测试,发现主要问题在这:
(1) $IPT -P FORWARD DROP ,如果注消掉或改为ACCEPT,客户机上网正常,经测试能安MAC地址要求上网,如果加上马上就不行.对此我不太明白,按理说这个默认规则应该是最后执行,所有规则不匹配才执行,为什么现在加上后,其会屏蔽掉一切规则,我以为是顺序问题,把该句放最后,经测试还是不行.还望各位解答.这好像是最重要的,如默认ACCEPT了感觉特不保险.
(2)#拒绝其他机器访问internet WWW
$IPT -A FORWARD -s $IP_RANGE -p tcp --dport 80 -j REJECT
$IPT -A FORWARD -s $IP_RANGE -p tcp --dport 443 -j REJECT

加上后会屏蔽该网段一切,都上不了网,应该说"仅让2个MAC地址的主机可以浏览外部WWW"应该是例外,怎么一加后会屏蔽掉这两台客户机,虽然其IP属于该网段,但其是以MAC检测的,怎么会屏蔽掉了呢?
(3) #禁止MSN规则的第二句
$IPT -A FORWARD -d $IP_RANGE -j REJECT中的$IP_RANGE有问题,该规则我是从网上COPY 过来的,原来的IP范围是64.4.13.0/24,我改为自己的网段192.168.50.0/24后,又会屏蔽掉所有一切,是不是64.4.13.0/24是MSN的专属IP范围?对此不明白,也不知其原理.
(4) 楼上朋友所说的shell script 有些錯誤
if [ "$INET_IFACE"=ppp0 ]
改為:
if [ "$INET_IFACE" = ppp0 ]
也就是在=号两边各加一个空格,我该后,执行该脚本,显示INET_IP="xxx.xxx.xxx.xxx"有问题,不可知.当然我内网客户机都是固定IP的,不是动态获得,所以这段脚本没必要要的,但我对此不甚明白,还望解答,所谓的xxx.xxx.xxx.xxx格式就是如此,还是我内网DHCP的具体IP,我想不可能是外网的DHCP吧,一是其IP不可知,再是内网客户机都是通过服务器IP伪装上网的,其好像无法实现?对此,还请各位以解小弟的凝惑.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP