linux配置本地tomcat应用80端口转发
2013-08-20 21:18
555 查看
场景:
本地部署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 链(原文点此)。即:PREROUTING isn't used by the loopback interface(讨论贴)。
知识点:
iptables基本介绍:http://wiki.centos.org/HowTos/Network/IPTables(是centos版)iptables全面介绍:
http://lesca.me/archives/iptables-tutorial-structures-configuratios-examples.html
http://blog.chinaunix.net/uid-307943-id-3559357.html
iptables原理:/content/1336492.html
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
相关文章推荐
- linux配置本地tomcat应用80端口转发
- 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )
- 一台linux服务器配置多个tomcat应用
- 本地Linux虚拟机配置jdk及Tomcat环境的安装
- linux下 tomcat多应用配置
- Linux+Nginx+Tomcat 多域名,多应用在同一服务器的配置
- Linux下Tomcat配置80端口(8080端口被禁用了)
- 利用IIS应用请求转发ARR实现IIS和tomcat整合共用80端口
- Linux下Tomcat配置80端口以及开机自动启动
- [Linux]RHEL/CentOS6配置tomcat使用80端口(与httpd整合)
- 利用IIS应用请求转发ARR实现IIS和tomcat整合共用80端口
- 部署到Linux-部署J2EE应用-TOMCAT配置
- Linux(CentOS 7)下安装配置nginx代理多个tomcat实例和应用
- 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )
- 在同一台Linux服务器上配置两个tomcat应用
- linux上配置apache和tomcat配置转发mod_jk
- linux apache 配置多个域名转发不同tomcat
- linux应用之tomcat的安装及配置(centos)
- 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )