Chinaunix
标题:
用IPTABLES NAT配置后,客户端还是不能上网,请求各位帮忙
[打印本页]
作者:
bcjsghost
时间:
2004-07-19 21:34
标题:
用IPTABLES NAT配置后,客户端还是不能上网,请求各位帮忙
我的具体配置如下:
#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
作者:
yunqing
时间:
2004-07-19 23:38
标题:
用IPTABLES NAT配置后,客户端还是不能上网,请求各位帮忙
what is ppp+?
作者:
szkingrose
时间:
2004-07-20 08:10
标题:
用IPTABLES NAT配置后,客户端还是不能上网,请求各位帮忙
可以从几个地方入手:
1.可不可以ping外网
2.域名可不可以解析
3.将控制上网那段拿除,可以上网后再加上.
作者:
llzqq
时间:
2004-07-20 08:55
标题:
用IPTABLES NAT配置后,客户端还是不能上网,请求各位帮忙
改:
echo "1" >; /proc/sys/net/ipv4/ip_forward
为:
echo 1 >; /proc/sys/net/ipv4/ip_forward
作者:
bcjsghost
时间:
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也正常,就是别的都不行.
作者:
bcjsghost
时间:
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和不填都一样,就是上不了网
作者:
網中人
时间:
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 ]
作者:
bcjsghost
时间:
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伪装上网的,其好像无法实现?对此,还请各位以解小弟的凝惑.
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2