外网地址:x.x.x.x 内部服务器地址: 192.168.10.225
做过 nat 映射后,访问 x.x.x.x 实际访问的是 192.168.10.225 , 一切正常,唯的问题是:
192.168.10.225 上面的程序,获取到的客户 ip 地址全都是 192.168.100.1 ,这个是路由器地址。
我在网上找过很多答案都解决不了,请问有谁遇到相同情况没?
企业中通过外网访问公司内部论坛,比如 discuz 这种,有很多需求会要得到访客的 ip 的地址的,如果用的是 nat 一般是获取 不到用户 ip 的,你们公司是如何解决的?
能不能不通过 nat 把外网映射到内网上面。
我可以通过 ssh 访问路由器,可以命令操作。
1
exch4nge 2017-12-14 12:21:06 +08:00
一般是有公网 IP 的服务器用 nginx 之类的做代理,然后用 HTTP 头里的当用户 IP 吧
|
2
sbmzhcn OP |
3
gamexg 2017-12-14 12:32:03 +08:00 via Android
路由器问题,
但是不知道华为路由器怎么修正这个问题。 大概是 snat 不只设置了外网接口,把内网接口也设置了。 另外不是一个网段还是打错了? |
4
Nioty 2017-12-14 12:33:44 +08:00 via Android
在内网的 dns 上把论坛 ip 解析到内网就行了
|
5
Nioty 2017-12-14 12:38:02 +08:00 via Android
抱歉回复错了 没看清题 ()
|
6
exch4nge 2017-12-14 12:40:30 +08:00
3L 说的 SNAT 应该是对的,我上面说的忽略吧。。。
|
7
topbandit 2017-12-14 13:12:29 +08:00
ssh 进去 nat 配置贴出来看看什么情况?
|
8
BOYPT 2017-12-14 13:14:26 +08:00
内部服务器如果网管地址也是这个路由器,那 NAT 上只做 DNAT 就可以,不需要做 SNAT,这样你看到的来源地址还是原来的外网地址。
|
9
yingfengi 2017-12-14 13:26:06 +08:00 via Android
从 http 头取用户地址
|
10
isyu 2017-12-14 14:07:39 +08:00
你的 ip 不止一个用途吗?那你可以用 ACL 和 destination-nat 来做 NAT 并且不更改源 IP
1.添加 ACL <sysname> system-view [sysname] acl number 3333 [sysname-acl-adv-3333] rule permit destination 外网地址 port NAT 端口 [sysname-acl-adv-3333] quit 2.创建 destination-nat [sysname] firewall zone untrust [sysname-zone-untrust] destination-nat 3333 address 内网服务器 port 内网端口 |
11
carterdang 2017-12-14 14:45:12 +08:00 via Android
只需 dnat, 你应该做了双向 nat 吧
|
12
sbmzhcn OP ```
[USG2200]display nat server 15:49:55 2017/12/14 Server in private network information: id : 0 zone : --- interface : GigabitEthernet0/0/0 global-start-addr : 116.193.49.157 global-end-addr : --- inside-start-addr : 192.168.10.225 inside-end-addr : --- global-start-port : 0(any) global-end-port : --- insideport : 0(any) globalvpn : public insidevpn : public protocol : tcp vrrp : --- no-reverse : no Total 1 NAT servers ``` 命令行不太熟悉,我在网页版使用的仅有目的 nat |
13
carterdang 2017-12-14 15:51:02 +08:00 via Android
这是防火墙吗,display firewall session table 看看 客户 ip 是不是被转换成了内网 ip
|
14
sbmzhcn OP @isyu
``` [USG2200-acl-adv-3333]rule permit ? <1-255> Specify the protocol number gre GRE tunneling(47) icmp ICMP Protocol(1) igmp IGMP Protocol(2) ip Any IP protocol ipinip IP in IP tunneling(4) ospf OSPF routing protocol(89) service-set Indicate service set tcp TCP Protocol(6) udp UDP Protocol (17) [USG2200-acl-adv-3333]rule permit destination ? ^ Error: Wrong parameter found at '^' position. ``` |
15
sbmzhcn OP [USG2200-acl-adv-3333]display firewall session table
15:59:58 2017/12/14 Current Total Sessions : 1517 143 http VPN:public --> public 192.168.10.215:63688[116.193.49.157:2055]-->163.177.56.70:80 203 udp VPN:public --> public 192.168.10.215:53157[116.193.49.157:49150]-->47.90.57.164:10087 341 udp VPN:public --> public 192.168.10.215:34991[116.193.49.157:49139]-->45.32.118.45:10019 429 tcp VPN:public --> public 192.168.10.215:46777[116.193.49.157:17798]-->182.92.100.67:1113 751 tcp VPN:public --> public 192.168.20.223:6716[116.193.49.157:2194]-->217.146.13.50:5938 930 msn-stun VPN:public --> public 192.168.20.207:45203[116.193.49.157:16344]-->112.13.64.167:3478 1016 udp VPN:public --> public 192.168.10.215:7618[116.193.49.157:2052]-->123.131.0.19:7719 1250 dns VPN:public --> public 192.168.100.1:52469[192.168.100.1:52470]-->192.168.5.1:53 1338 http VPN:public --> public 192.168.10.215:56335[116.193.49.157:6519]-->182.254.89.122:80 1543 udp VPN:public --> public 192.168.10.215:44424[116.193.49.157:49152]-->47.90.57.164:10087 1568 udp VPN:public --> public 192.168.10.215:58528[116.193.49.157:49161]-->45.32.100.53:10033 1608 https VPN:public --> public 192.168.10.220:49959[116.193.49.157:28804]-->173.194.196.197:443 1654 udp VPN:public --> public 192.168.10.215:46904[116.193.49.157:49163]-->45.32.118.45:10019 1731 tcp VPN:public --> public 192.168.10.215:55177[116.193.49.157:2307]-->61.135.186.113:8800 1736 udp VPN:public --> public 192.168.10.215:39008[116.193.49.157:49201]-->45.32.118.45:10019 1956 tcp VPN:public --> public 192.168.10.215:47149[116.193.49.157:44829]-->47.90.57.164:10087 2059 udp VPN:public --> public 192.168.10.215:58744[116.193.49.157:49202]-->45.32.100.53:10033 2139 tcp VPN:public --> public 192.168.10.250:53881[116.193.49.157:34402]-->182.92.100.67:21807 2196 tcp VPN:public --> public 192.168.10.215:58934[116.193.49.157:43183]-->45.32.118.45:10019 2360 https VPN:public --> public 192.168.20.207:38331[116.193.49.157:2365]-->118.194.55.199:443 2387 udp VPN:public --> public 192.168.10.215:7618[116.193.49.157:2049]-->222.247.209.182:49630 2649 http VPN:public --> public 192.168.10.215:59051[116.193.49.157:16270]-->124.14.1.174:80 2657 tcp VPN:public --> public 192.168.20.207:33349[116.193.49.157:2581]-->180.149.136.83:4829 2750 tcp VPN:public --> public 192.168.10.215:47035[116.193.49.157:44811]-->47.90.57.164:10087 2751 dns VPN:public --> public 192.168.100.1:52358[192.168.100.1:52359]-->192.168.5.1:53 2953 https VPN:public --> public 192.168.10.220:49943[116.193.49.157:12871]-->119.75.222.122:443 3196 tcp VPN:public --> public 192.168.10.215:47023[116.193.49.157:44809]-->47.90.57.164:10087 3241 http VPN:public --> public 192.168.10.245:55474[116.193.49.157:2148]-->101.199.97.164:80 3260 https VPN:public --> public 192.168.10.245:55996[116.193.49.157:3684]-->220.181.13.219:443 3459 tcp VPN:public --> public 192.168.10.215:47142[116.193.49.157:44828]-->47.90.57.164:10087 3496 tcp VPN:public --> public 192.168.10.215:46701[116.193.49.157:17760]-->182.92.100.67:1113 3523 udp VPN:public --> public 192.168.10.215:58324[116.193.49.157:49173]-->47.90.57.164:10087 3589 dns VPN:public --> public 192.168.100.1:52442[192.168.100.1:52443]-->192.168.5.1:53 @carterdang |
16
carterdang 2017-12-14 16:16:23 +08:00 via Android
没看到有 nat server 相关的 session,应该现在没有你的客户在访问,有大量的内网到外网的,应该有源地址 NaT,是不是你的源地址 NAT 的策略 包括了你的目的 NAT 的域,另外直接贴出公网地址是不是不好,最好隐藏下,可以联系我 TG,lxcavcba
|
17
isyu 2017-12-14 16:26:29 +08:00
@sbmzhcn 哦你使用的 USG2200 系列啊
1.添加 ACL <sysname> system-view [sysname] acl number 3333 [sysname-acl-adv-3333] rule permit tcp destination 外网地址 0 destination-port NATport [sysname-acl-adv-3333] quit 2.创建 destination-nat [sysname] firewall zone 你设置的区域 [sysname-zone-untrust] destination-nat 3333 address 内网服务器 port 内网端口 [sysname-zone-untrust] quit 记得一定要关闭 ALG 功能,如果你们还用这个 IP 上网,源 NAT 你也需要更改设置避开服务器的 IP 或者安全区域。 |
18
isyu 2017-12-14 16:35:27 +08:00
最好还是使用 WEB 页面来设置啦,简单点
USG2200 新版固件有目的 NAT 的 web 设置页面的。还要先把原来那条 NAT 规则删掉 |
19
yanest 2017-12-14 17:08:37 +08:00
usg2200 还是扔了吧。百兆端口,性能也不行,广播包稍微多点就不行了。 换成 er-x 都比这货强
|
20
sbmzhcn OP 这几天有事 下周过去弄,谢谢大家回复。 这路由器可是公司花好多钱买的!!!
|
23
sbmzhcn OP 这个问题解决了:
“,请您检查一下设备配置,看一下是不是 USG 的内网口配置了 nat enable 或映射之类的” 这是官方客服回复的,修改了 192.168.100.1 接口的 nat enable 为禁用就好了。 不过外访问 ip 问题解决了,但此时内网使用外网的 ip 却无法访问了。 |