阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux配置本地Tomcat应用80端口转发

193次阅读
没有评论

共计 2508 个字符,预计需要花费 7 分钟才能阅读完成。

场景:
本地部署 Tomcat 到 8080 端口,并期望本地访问 80 端口来访问本地 Tomcat。

结论:
使用 Linux 下的 iptables 工具实现端口转发功能。

具体为

现取得 root 权限
执行 iptables -t nat -I OUTPUT -p tcp  -d 127.0.0.1 –dport 80 -j REDIRECT –to-port 8080
目前在重启前均生效。要想永久生效,需要继续执行(Ubuntu 环境):iptables-save > /etc/iptables.rules
新建一个 bash 脚本
#!/bin/bash
iptables-restore < /etc/iptables.rules 保存到 /etc/network/if-pre-up.d/ 目录下
结束!
BTW:如果是配置外部服务器,则把第 2 步换为执行 iptables -t nat -I PREROUTING -p tcp –dport 80 -j REDIRECT –to-port 8080

实验过程:
实验过程主要集中在上述第 2 步中该添加何种 iptables 规则。

取得 root 权限后,单独执行各个操作:

iptables -t nat -I OUTPUT -p tcp  –dport 80 -j REDIRECT –to-port 8080 
结果:访问本地 localhost 正常转发,访问外部网络全部被重定向到本地 localhost:8080
原因:本机访问请求时,本地进程产生的报文将进入 OUTPUT 链,因为当前请求包的端口是 80,于是重定向道 8080,注意是所有数据包。

iptables -t nat -I OUTPUT -p tcp -s 127.0.0.1 –dport 80 -j REDIRECT –to-port 8080
结果:访问本地 localhost 正常转发, 访问外部网络正常没特殊处理
原因:类似上例,但多了一个规则:需匹配数据包源地址 -s 127.0.0.1。但实际上,访问外部网络时实际数据包在经过这个链时的源地址是本机 ip,而不是回路 ip(127.0.0.1),所以相当于本规则对访问外部网络时无效。

iptables -t nat -I OUTPUT -p tcp -s 非回路网卡 ip –dport 80 -j REDIRECT –to-port 8080
结果:访问本地 localhost 无法转发, 访问外部网络全部被重定向到本地 localhost:8080
原因:和上例类似,规则匹配了对外访问的数据包,从而被重定向。

iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 –dport 80 -j REDIRECT –to-port 8080
结果:访问本地 localhost 正常转发, 访问外部网络正常没特殊处理
原因:本地应用的 ip 被匹配上,所以访问本地应用时,数据包将被重定向道 8080

iptables -t nat -I OUTPUT -p tcp -s 127.0.0.1 -d 127.0.0.1 –dport 80 -j REDIRECT –to-port 8080
结果:访问本地 localhost 正常转发, 访问外部网络正常没特殊处理
原因:2,4 操作的原因结合。

iptables -t nat -I PREROUTING -p tcp -s 127.0.0.1 -d 127.0.0.1 –dport 80 -j REDIRECT –to-port 8080
结果:访问本地 localhost 无法转发, 访问外部网络正常没特殊处理
原因: 本地连接指的是在本机上,用 127.0.0.1 或者本机 IP 来访问本机的端口。本地连接的数据包不会通过网卡,而是由内核处理后直接发给本地进程。这种数据包在 iptables 中只经过 OUTPUT 链,而不会经过 PREROUTING 链。

iptables 数据包流向:

以本地为目的的包 数据包 —-> mangle prerouting ——-> nat prerouting ——-> mangle input ——-> filter input
以本地为源的包 数据包 ——-> mangle output ——-> nat output ——-> filter output ——-> mangle postrouting ——-> nat postrouting
经过本地转发的包 数据包 ——-> mangle prerouting ——-> nat prerouting ——-> mangle forward ——-> filter forward ——-> mangle postrouting ——-> nat postrouting

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

CentOS 6.5 下安装 Tomcat  http://www.linuxidc.com/Linux/2015-01/111415.htm 

Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/133078.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2508字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中