QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1660|回复: 25

求救:关于NAT的问题

[复制链接]
发表于 2004-11-3 21:40:21 | 显示全部楼层 |阅读模式
各位LINUX高手,版主:
      你们好!我是用ADSL拨号上网,想建立一个NAT服务,我搞了一个SHELL具体如下:
       #!/bin/bash
EXIF='ppp0'
EXNET='172.21.127.0'
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH
echo "1" > /proc/sys/net/ipv4/if_forward
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -F -t nat
/sbin/iptables -X -t nat
/sbin/iptables -Z -t nat
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT      ACCEPT
modprobe ip_tables 2>/dev/null
modprobe ip_nat_ftp 2>/dev/null
modprobe ip_nat_irc 2>/dev/null
modprobe ip_conntrack_ftp 2>/dev/null
modprobe ip_conntrack 2>/dev/null
modprobe ip_conntrack_irc 2>/dev/null
/sbin/iptables -t nat -A POSTROUTING -o $EXIF -s $EXNET -j masquerade
我把这个SHELL放在/usr/loca/nat/nat.sh里面,当我执行/usr/local/nat/nat.sh时系统提示如下错误:
/usr/local/nat/nat.sh:/proc/sys/net/ipv4/if_forward:no such file or
directorly
iptables v1.2.3:could not load target masquerade:/lib/iptables/libipt_masquerade.so:can not open shared object file:no such file or directorly
try  "iptable -h " or "iptable -help" for more information.
请各位LINXU高手,版主帮忙看一下,有问题的地方帮我解决一下好吗!小弟在此跪谢各位了.谢谢啊!
发表于 2004-11-4 00:04:18 | 显示全部楼层
呃,那个不叫“shell”,叫“script” :)

错误的原因是内核不支持 iptables.
回复

使用道具 举报

 楼主| 发表于 2004-11-4 15:42:55 | 显示全部楼层
但是我用的是7.2版本的,应该支持的啊
回复

使用道具 举报

发表于 2004-11-4 20:48:00 | 显示全部楼层
> /proc/sys/net/ipv4/if_forward
> /proc/sys/net/ipv4/ip_forward

-j masquerade
-j MASQUERADE
回复

使用道具 举报

 楼主| 发表于 2004-11-4 20:51:59 | 显示全部楼层
在上面的scripts里面我已经引用了啊
回复

使用道具 举报

发表于 2004-11-4 20:52:46 | 显示全部楼层
[quote:25c14c7c59="魔蝎之帝"]发表于: 2004-11-04 5:50pm    发表主题: 救命啊,关于NAT问题
各位版主,LINUX高手们:
你们好!
在提出问题之前,我先向大家说明以下几点:
1.我是在win2000上安装了一个VMWARE linux 软件,其中LINUX的IP为192.168.1.2/24,win2000的为192.168.1.5/24 两者可以相互PING通;
2. linux 上用的是ADSL拨号上网,而且可以正常上网;
现在我想架设一个NAT可以让WIN2000也可以通过ADSL上网,我在LINUX上作了一个scripts:
#!/bin/bash
EXIF='ppp0'
EXNET='172.21.127.0'
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH EXIF EXNET
echo "1" > /proc/sys/net/ipv4/if_forward
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -F -t nat
/ sbin/iptables -X -t nat
/sbin/iptables -Z -t nat
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
modprobe ip_tables 2>/dev/null
modprobe ip_nat_ftp 2>/dev/null
modprobe ip_nat_irc 2>/dev/null
modprobe ip_conntrack_ftp 2>/dev/null
modprobe ip_conntrack 2>/dev/null
modprobe ip_conntrack_irc 2>/dev/null
/ sbin/iptables -t nat -A POSTROUTING -o $EXIF -s $EXNET -j masquerade
然后在win2000上的TCP/IP里面的设定为:
ip:192.168.1.5
netmask:255.255.255.0
gateway: 192.168.1.2
dns: 202.101.172.48
可当我在IE里面输入www.163.com时,却不能显示其网页,而且也PING不能DNS,不过网关是可以PING通的.
请各位版主,LINUX高手帮帮忙,看看小弟的配置,问题出现在哪些方面好吗?小弟已经被搞了好几天了啊!!!在此小弟跪谢各位好心人了啊!谢谢![/quote]

不要重复发贴好不好?
回复

使用道具 举报

发表于 2004-11-4 20:55:54 | 显示全部楼层
[quote:e8eb09bbc0="dannycat"]呃,那个不叫“shell”,叫“script” :)

错误的原因是内核不支持 iptables.[/quote]唉,玩游戏玩花眼了……
回复

使用道具 举报

 楼主| 发表于 2004-11-5 07:52:10 | 显示全部楼层
不好意思我是想把问题说的更明白一点而已啊,对不起啊,我下次不会再重复发贴了.请版主帮帮忙,帮小弟分析一下,小弟的NAT配置问题会出现在哪几个方面啊,小弟现在很茫然啊,谢谢啦!
回复

使用道具 举报

发表于 2004-11-5 11:56:53 | 显示全部楼层
[code:1]#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
INET_IFACE="ppp0"
INET_IP="xxx.xxx.xxx.xxx"
LAN_IFACE="eth0"
LAN_IP="172.21.127.0"
LAN_IP_RANGE="172.21.0.0/16"
IPT="/sbin/iptables"
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG
for TABLE in filter nat mangle ; do
$IPT -t $TABLE -F
$IPT -t $TABLE -X
done
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
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[/code:1][/code]
回复

使用道具 举报

发表于 2004-11-5 12:10:26 | 显示全部楼层
[quote:c290fdfa30="dannycat"]
> /proc/sys/net/ipv4/if_forward
> /proc/sys/net/ipv4/ip_forward

-j masquerade
-j MASQUERADE[/quote]

没看清?

ip_forward 你写成 if_forward, 是 p 不是 f

MASQUERADE 你写成 masquerade ,是大写不是小写
回复

使用道具 举报

 楼主| 发表于 2004-11-5 17:15:24 | 显示全部楼层
版主:
     你好!
      在你的指导下,我现在执行/usr/local/nat/nat.sh这个命令已经没有出错的提示了,用lsmod看时,那些IPTABLES 模组也已经激活了.可是客户端还是连不上INTERNET.
    我现在用的系统是redhat 9.0 版本的,还有我的LINUX是用VMWARE软件的,通过ADSL已经可以通向INTERNET,客户端PING 主机可以PING通, PING DNS时就不通了.麻烦版主再指点小弟一下,帮帮小弟解决这个问题,小弟万分的感谢您!
这和是用VMWARE这个软件有关吗?因为我用的是同一块网卡?
回复

使用道具 举报

发表于 2004-11-5 19:27:02 | 显示全部楼层
ping DNS 通不通不用管它, ping ppp0 的对端可以通吗?

/ sbin/iptables -t nat -A POSTROUTING -o $EXIF -s $EXNET -j masquerade

去掉 -s $EXNET 看看
回复

使用道具 举报

 楼主| 发表于 2004-11-5 21:29:47 | 显示全部楼层
版主:
    你好!首先,忠心的感谢你对小弟不厌其烦的指导!
  通过以上的那些设定,我可以PING通PPP0这个端口,我也试着把 -s $EXNET 这一小部分去掉,可还是只能PING通PPP0 这个端口为止.
请版主继续帮小弟找一些问题好吗?小弟自已真是没有什么折了,但又不甘心放弃,所以一切就拜托版主了.小弟在此多谢你的帮助!
  对了,小弟每次route 后,显示的结果为:
destinatiion     gateway     flags          use iface
218.72.96.1          *              uh              ppp0
192.168.1.0         *               u                eth0
169.254.0.0         *               u                eth0
127.0.0.0             *               u                 Io
default            218.72.96.1   ug               ppp0
第次PING 218.72.96.1 这个默认网关,就是PING 不通啊!
回复

使用道具 举报

发表于 2004-11-5 21:44:06 | 显示全部楼层
不开防火墙,直接 ping 网关也不通吗?
回复

使用道具 举报

 楼主| 发表于 2004-11-6 08:33:41 | 显示全部楼层
不行啊,我在安装ADSL-PPPOE软件时,那个防火墙参数选择0的啊,再说我本身的电脑也还有开启防火墙啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 03:29 , Processed in 0.041918 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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