iptables暴露localhost的端口服务

kampoo 2021-03-09 12:41:17
某服务器安装了网卡eth0,拥有内网IP(假定:192.168.1.3)和外网IP(通过路由器获得,假定:1.2.3.4),在127.0.0.1 开启了端口 8359,使用“curl localhost:8359”正常返回网页。
现在想把 localhost:8359(本机) 映射到 1.2.3.4:8059(外网),尝试了如下指令:

# 运行如下指令后,不能从外网访问,只能在服务器 使用 localhost:8359 或者 192.168.1.3:8059 都可以
iptables -t nat -A OUTPUT -d 192.168.1.3 -p tcp --dport 8059 -j DNAT --to-destination 127.0.0.1:8359
# 尝试修改 target 为 REDIRECT 也不能从外网访问(在服务器上也可以访问成功:localhost:8359 或者 192.168.1.3:8059)
iptables -t nat -A OUTPUT -d 192.168.1.3 -p tcp --dport 8059 -j REDIRECT --to-destination 127.0.0.1:8359

现在在服务器上直接访问 “curl 192.168.1.3:8059”可以正常返回网页,但:通过外网则无法连接~ (指令: curl 1.2.3.4:8059)
请教还需要那些配置?谢谢!
...全文
649 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kampoo 2021-03-10
  • 打赏
  • 举报
回复
补充完整的操作过程,现在外网访问 curl 1.2.3.4:8859 仍然连接失败:

# 先从内网地址 192.168.1.3 转 127.0.0.1,使用 OUTPUT 链。就是把从 192.168.1.3:8059 的待发消息,切换到目的地址 127.0.0.1:8359 发出
iptables -t nat -A OUTPUT -d 192.168.1.3 -p tcp -m tcp --dport 8059 -j DNAT --to-destination=127.0.0.1:8359
#这步操作成功,在服务器通过 curl 192.168.1.3:8059 可以正常访问网页
#
# 再把 192.168.1.3 的入站消息 从 8859 端口转发到8059端口。结合上一步,请求消息最终被路由到 127.0.0.1:8359!@但是没有,参考附图
iptables -t nat -A PREROUTING -d 192.168.1.3 -p tcp -m tcp --dport 8859 -j REDIRECT --to 8059
# 图1 是测试之前,将消息统计清零
# 图2 从外网测试 curl 1.2.3.4:8859,可以看到 这条规则收到了消息。但没有路由到 lo 本机栈。
图1: 图2:
kampoo 2021-03-09
  • 打赏
  • 举报
回复
服务器在阿里云,操作系统为 aliyun-linux(内核版本 centos ?)
kampoo 2021-03-09
  • 打赏
  • 举报
回复
阿里云安全组默认全部开放的(<1024的端口号除外),开放的8080端口等,从外网都能正常访问,未出现不能访问的情况:
	
允许 100 全部
目的: -1/-1

源: 0.0.0.0/0

这里感觉主要是 iptables 没有配置好,或者 eth0 不允许跟 lo 网卡互通?
引用 3 楼 X-i-n 的回复:
如果本机有防火墙,本机防火墙也要放行8059
X-i-n 2021-03-09
  • 打赏
  • 举报
回复
如果本机有防火墙,本机防火墙也要放行8059
X-i-n 2021-03-09
  • 打赏
  • 举报
回复
到阿里云ECS安全组放行 8059端口。

1,321

社区成员

发帖
与我相关
我的任务
社区描述
网络维护与管理相关内容讨论专区
网络网络安全安全 技术论坛(原bbs)
社区管理员
  • 网络维护与管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧