LinuxSir.cn,穿越时空的Linuxsir!

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

请问有关linux建共享上网后。内网记录外网访问IP的问题

[复制链接]
发表于 2005-4-26 23:58:37 | 显示全部楼层 |阅读模式
使用有rhel as3建了一个共享上网。双网卡。一个接ADSL 一个接交换机。内网有服务器及上网用机,已经将80端口映射到服务器IP 192.168.0.9了。可是服务器记录的IP访问只有上网共享的机的IP 192.168.0.1(连接ADSL的网卡为:192.168.0.2) 请问有访问可以使服务器记录到外网的IP吗?
发表于 2005-4-27 06:52:20 | 显示全部楼层
你的iptables规则是什么?
回复 支持 反对

使用道具 举报

发表于 2005-4-27 08:52:13 | 显示全部楼层
如果您是用IPTABLES共享的,在您的局域网访问您指定的服务器,LOG会记录成192.168.0.1的IP地址。如果从外网访问,应该能记录下外网的IP地址,您把IPTABLES贴出来大家分析一下。我的APACHE就能记录下所有外网IP,我的服务器也是NAT到内网一个机器的。不过我主服务器上做的是LFS系统。没有用过A3,这个和系统没有任何关系。
所以重点是您的IPTABLES规则。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-27 16:00:02 | 显示全部楼层
CNET_IP=`ifconfig|grep "-t-P"|awk '{print $2}'|cut -d: -f2'
CNET_IFACE="ppp0"
LNET_IP="192.168.88.1"
LNET_IFACE="eth1"
SER_IP="192.168.88.9"

depmod -a
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe iptable_filter
modprobe iptable_nat
modprobe ipt_LOG
modprobe ipt_limit
modprobe ipt_state

iptables -F
iptables -X
iptables -Z
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

iptables -N allowed
iptables -N bad_tcp_packets
iptables -N icmp_packets

iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \-m state --state NEW -j REJECT --reject-with tcp-reset
iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

iptables -A allowed -p tcp --syn -j ACCEPT
iptables -A allowed -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A allowed -p tcp -j DROP

iptables -A icmp_packets -p icmp -s 0/0 --icmp-type 8 -j ACCEPT
iptables -A icmp_packets -p icmp -s 0/0 --icmp-type 11 -j ACCEPT

iptables -A INPUT -p icmp -i $CNET_IFACE -j icmp_packets



iptables -t nat -A PREROUTING -d $CNET_IP -p tcp --dport 80 -j DNAT --to $SER_IP
iptables -t nat -A POSTROUTING -d $SER_IP -p tcp --dport 80 -j SNAT --to $LNET_IP
iptables -t nat -A POSTROUTING -o $CNET_IFACE -s 192.168.0.0/24 -j SNAT --to-source $CNET_IP

iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "Forward packets died:"
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

iptables -A FORWARD -p tcp -j bad_tcp_packets
iptables -A OUTPUT -p tcp -j bad_tcp_packets
iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level INFO --log-prefix "Input packets died:"

iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ppp0 -j MASQUERADE


请大家帮帮忙看看。谢谢。这样写还有什么漏洞吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-29 16:51:12 | 显示全部楼层
顶一下。大家帮帮忙好吗?
回复 支持 反对

使用道具 举报

发表于 2005-4-30 03:04:55 | 显示全部楼层
注意要将FORWARD打开。
将这几句

iptables -t nat -A PREROUTING -d $CNET_IP -p tcp --dport 80 -j DNAT --to $SER_IP
iptables -t nat -A POSTROUTING -d $SER_IP -p tcp --dport 80 -j SNAT --to $LNET_IP
iptables -t nat -A POSTROUTING -o $CNET_IFACE -s 192.168.0.0/24 -j SNAT --to-source $CNET_IP

改成

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -i ppp0 -p tcp -m tcp --dport 80 -j DNAT --to $SER_IP:80
iptables -t nat -A PREROUTING -i $LNET_IFACE -p tcp -m tcp -d $LNET_IP --dport 80 -j DNAT --to $SER_IP:80
iptables -A FORWARD -p tcp -d $SER_IP --dport 80 -m state --state NEW -j ACCEPT
iptables -t nat -I POSTROUTING -s 192.168.88.0/24 -d $SER_IP -p tcp -m tcp --dport 80 -j SNAT --to $LNET_IP
试试。看看成不?


另外,CNET_IP=`ifconfig|grep "-t-P"|awk '{print $2}'|cut -d: -f2'
这些我觉得多余,因为是adsl的,不要在iptables规则中写上相关的ip,而是用ppp0来代替,因为adsl是经常
断线的,ip经常会变,每变一次,又要重新运行一次脚本,挺麻烦的。

基它的没有详细看:-)

要安全的还是策略为DROP。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-2 13:44:19 | 显示全部楼层
但是设置为ppp0上不了网,不知道哪里有设置错误了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-2 13:48:04 | 显示全部楼层
可否共享一下iptable规则?只要adsl断线重联不用执行脚本一次的规则那一部分。谢谢大哥
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-5 22:19:03 | 显示全部楼层
顶一顶。大家帮帮忙好吗?
回复 支持 反对

使用道具 举报

发表于 2005-5-6 10:32:41 | 显示全部楼层
可以的。
你要用MASQUERADE代替出外网的SNAT就成了。

port map还是一样的语句。至少我的DMZ的ftp可以记录外网IP。
回复 支持 反对

使用道具 举报

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

本版积分规则

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