Chinaunix

标题: 大虾帮帮忙!! [打印本页]

作者: zhangyuankui    时间: 2004-05-17 09:36
标题: 大虾帮帮忙!!
我用的电信的固定IP,用iptables做 nat,在外网一论坛上看自己的地址是外网地址,后来又用squid做透明代理将www80端口转到3128端口,再上该论坛发现自己的地址变成了自己的局域网地址,取掉80--》3128转换后又恢复正常,请各位看官分析分析是什么原因,在下感激不尽!!!
作者: zhangyuankui    时间: 2004-05-18 00:12
标题: 大虾帮帮忙!!
怎么没人回答啊?
作者: szkingrose    时间: 2004-05-18 07:58
标题: 大虾帮帮忙!!
如果是透明代理的话,应该看到的是外网IP
SQUID中,这个设置成了ON吗?
httpd_accel_uses_host_header
作者: zhangyuankui    时间: 2004-05-18 10:08
标题: 大虾帮帮忙!!
设置了啊!!
作者: szkingrose    时间: 2004-05-18 11:49
标题: 大虾帮帮忙!!
将你的iptables贴出来看看.
作者: zhangyuankui    时间: 2004-05-18 20:38
标题: 大虾帮帮忙!!
echo 1 >; /proc/sys/net/ipv4/ip_forward

INET_IF="eth0"
EXT_IF="eth0"
LAN_IF="eth1"
LAN_IP="192.168.0.1"
LAN_IP_RANGE="192.168.0.0/24"

WAN_IP="61.101.xxx.xxx"

LO_IF="lo"
LO_IP="127.0.0.1"

modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ipt_state
modprobe ip_nat_irc
modprobe ip_conntrack_irc

iptables -F -t filter
iptables -X -t filter
iptables -Z -t filter
iptables -F -t mangle
iptables -X -t mangle
iptables -Z -t mangle
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

iptables -A INPUT -p icmp -i lo -j ACCEPT
iptables -A OUTPUT -p icmp -o lo -j ACCEPT


iptables -A INPUT -p ALL -i $LAN_IF -s $LAN_IP_RANGE -j ACCEPT
iptables -A OUTPUT -p ALL -o $LAN_IF -d $LAN_IP_RANGE -j ACCEPT


iptables -A INPUT -p ALL -i $INET_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p ALL -o $INET_IF -j ACCEPT


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

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 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 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 tcp -j bad_tcp_packets
iptables -A INPUT -p icmp -i $INET_IF -j icmp_packets
iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level INFO --log-prefix "IPT INPUT packets died:"
iptables -A INPUT -p udp -i $LAN_IF --dport 67 --sport 68 -j ACCEPT


iptables -A FORWARD -p tcp -j bad_tcp_packets
iptables -A FORWARD -o $INET_IF -s $LAN_IP_RANGE -j ACCEPT
iptables -A FORWARD -i $INET_IF -d $LAN_IP_RANGE -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packets died:"

iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
iptables -A FORWARD -p udp -d $LAN_IP_RANGE -i $EXT_IF -j ACCEPT

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

iptables -t nat -A POSTROUTING -o $INET_IF -s $LAN_IP_RANGE -j SNAT --to $WAN_IP
作者: szkingrose    时间: 2004-05-19 07:45
标题: 大虾帮帮忙!!
看不出你的IPTABLES有什么问题,你到这个网站看看IP多少?

http://www.91wz.com/tools/ip.htm
作者: szkingrose    时间: 2004-05-19 08:02
标题: 大虾帮帮忙!!
呵呵,我也发现这个问题了。
我在一个论坛上也发现的我IP是内网的了
您的真实IP 是:192.168.0.252, 操作系统: Windows 2000,浏 览 器:Microsoft Internet Explorer 6.0
这应该是论坛程序存在一些问题。
不信的话,找一个DVBBS架设的论坛,就会发现这个问题。
作者: zhangyuankui    时间: 2004-05-19 09:22
标题: 大虾帮帮忙!!
从http://www.91wz.com/tools/ip.htm看自己的IP确实是外网的,但为什么DVBBS反而能辨别出实际的IP呢,这不应该是论坛程序存在的问题吧,是不是iptables或者squid存在问题呢?大家讨论讨论!!
作者: szkingrose    时间: 2004-05-19 16:12
标题: 大虾帮帮忙!!
我没有从事过ASP方面的开发,所以这个问题我不太了解.
作者: paulwang    时间: 2004-05-20 14:37
标题: 大虾帮帮忙!!
会不会是本地执行的脚本如 java/vb/j script 给出的IP地址呢?
作者: szkingrose    时间: 2004-05-20 15:41
标题: 大虾帮帮忙!!
等我有机会的时候,研究一下ASP,再给你回答。
作者: zhangyuankui    时间: 2004-05-20 17:18
标题: 大虾帮帮忙!!
先谢谢了!!
作者: szkingrose    时间: 2004-05-20 17:30
标题: 大虾帮帮忙!!
找到答案了:

在 index.asp中有

        Dim userip,userip2
        userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR"
        userip2 = Request.ServerVariables("REMOTE_ADDR"
        if userip = ""  then
                response.write "您的真实IP 是:"&userip2&","
        else
                response.write "您的真实IP 是:"&userip&","
        end if

而获限代理后的IP应该为:
ASP如何获取真实IP地址
2003:7:10 ·来源:99软件站 karry  




在 ASP 中使用 Request.ServerVariables("REMOTE_ADDR" 来取得客户端的 IP 地址,但如果客户端是使用代理服务
器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实
IP 地址,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR" 来读取。
  不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR" 来读取客户端
的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP。
  还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用 Request.ServerVariables
("HTTP_X_FORWARDED_FOR" 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理:

......
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR"
If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR"
......

  即:如果客户端通过代理服务器,则取 HTTP_X_FORWARDED_FOR 的值,如果没通过代理服务器,就取 REMOTE_ADDR 的值。
作者: zhangyuankui    时间: 2004-05-20 18:37
标题: 大虾帮帮忙!!
明白了,再次感谢szkingrose的解答!!!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2