首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NAT后保留源IP

NAT后保留源IP
EN

Server Fault用户
提问于 2012-11-26 12:42:19
回答 1查看 19.2K关注 0票数 6

直到今天,我使用了一个便宜的路由器,以便我可以共享我的互联网连接,并保持一个网络服务器在线,同时使用NAT。用户IP ($_SERVER‘REMOTE_阿德尔’)很好,我看到的是A类用户IP。

但是随着流量的增长,我不得不安装一个Linux服务器(Debian)来共享我的互联网连接,因为我的旧路由器再也不能保持流量了。我使用NAT通过IPTABLES共享互联网,但是现在,在将端口80转发到我的see服务器之后,现在我没有看到真正的用户IP,而是将我的网关IP ()看作任何用户IP地址。

如何解决这个问题?

我编辑了我的帖子,这样我就可以粘贴我目前使用的规则了。

代码语言:javascript
复制
#!/bin/sh
#I made a script to set the rules

#I flush everything here.
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables -F
iptables -X


# I drop everything as a general rule, but this is disabled under testing
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP


# these are the loopback rules
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# here I set the SSH port rules, so I can connect to my server
iptables -A INPUT -p tcp --sport 513:65535 --dport 22 -m state --state NEW,ESTABLISHED     -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT


# These are the forwards for 80 port
iptables -t nat -A PREROUTING -p tcp -s 0/0 -d xx.xx.xx.xx --dport 80 -j DNAT --to     192.168.42.3:80
iptables -t nat -A POSTROUTING -o eth0 -d xx.xx.xx.xx -j SNAT --to-source 192.168.42.3
iptables -A FORWARD -p tcp -s 192.168.42.3 --sport 80 -j ACCEPT

# These are the forwards for bind/dns
iptables -t nat -A PREROUTING -p udp -s 0/0 -d xx.xx.xx.xx --dport 53 -j DNAT --to 192.168.42.3:53
iptables -t nat -A POSTROUTING -o eth0 -d xx.xx.xx.xx -j SNAT --to-source 192.168.42.3
iptables -A FORWARD -p udp -s 192.168.42.3 --sport 53 -j ACCEPT


# And these are the rules so I can share my internet connection
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0:1 -j ACCEPT

如果我删除伪装部分,我会看到我的真实IP,同时与PHP相呼应,但我没有互联网。怎么做,有互联网,看到我真正的IP,而端口也被转发?

** xx.xx-是我的公共知识产权。为了安全起见我把它藏起来了。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2012-11-26 16:59:11

解决了我自己的迷思,但多亏了那些帮助我的人。更多地研究了iptables的手册页,并找到了一个解决方案,它似乎如我所愿:

将包含伪装的行(iptables、-t、nat、-A、POSTROUTING -o eth0 -j伪装)替换为以下行:

代码语言:javascript
复制
iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth0 -j SNAT --to-source XX.XX.XX.XX

现在,我可以看到我的真实IP地址,也有互联网。

*XX.XX=公共IP

票数 5
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/452183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档