linux下进行端口映射

工作需要将某个具有外网IP的server的某个端口映射到某个内网IP的server的相同端口上。

首先想到使用NAT,命令如下

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -I PREROUTING -d $outterIP -p tcp --dport $outterPort -j DNAT --to-destination $innerIP:$innerPort
iptables -I FORWARD -p tcp -m state --state RELATED,ESTABLISHED --dport $innerPort -j ACCEPT
iptables -t nat -I POSTROUTING -s $innerIP -j SNAT --to-source $outterIP

后面发现NAT映射失败,仔细检查发现由于$outterIP并不是$innerIP的网关,从$innerIP回来的数据包直接从其网关传输走了,无法到达$outterIP所在的server, 即SNAT无法正常工作。

最后想了想,还是直接用ssh port forwarding了,命令如下

ssh -Nfq -c arcfour  -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -L 0.0.0.0:8118:192.168.9.85:8118 -i /root/.ssh/id_rsa [email protected]

效率方面估计会比直接NAT端口映射差一点,但我也能接受了

最后附一张iptables数据包流转图

时间: 2024-08-03 18:44:59

linux下进行端口映射的相关文章

linux TCP UDP 端口映射 及DNS劫持

对于linux下的端口映射问题多出现在使用linux做为网关路由,用来连接ISP使用时并把公司的内网IP地址NAT成ISP提供的IP.保证内网所有主机可以共享一个公网IP来访问internet.但这样做的同时也会带来一个问题就是我们无法在办公室以后的网络中访问或管理我们内网的服务器.要解决这个问题就要在linux网关服务器上将ISP提供的IP的相关端口通过DNAT方式映射到我们内网服务器的开放端口上,即可实现在外网管理内网服务器. 情景1.公网为223.71.x.x,内网IP为172.17.17

linux下ssh端口的修改和登录

linux下ssh端口的修改和登录 首先修改配置文件 vi /etc/ssh/sshd_config 找到#Port 22一段,这里是标识默认使用22端口,添加如下一行: Port 50000 然后保存退出 1.端口修改 执行/etc/init.d/sshd restart 这样SSH端口将同时工作在50000上. 2.防火墙修改 现在编辑防火墙配置:vi /etc/sysconfig/iptables 启用50000端口.添加如下一行 1 -A INPUT -m state --state N

Linux 下IO端口编程访问

以前写的一篇笔记,偶尔翻出来了,放在这里做个纪念 Linux 下IO端口编程访问 这里记录的方法是在用户态访问IO端口,不涉及驱动程序的编写. 首先要包含头文件 /usr/include/asm/io.h ioperm() 在 unistd.h 中声明.用来打开对IO端口的访问权限,要求程序执行时必须有root 权限.只可以打开0x00到0x3ff 这一地址段的IO端口. ioperm( from, num, turn_on) 比如: #include<asm/io.h> #include&l

Linux下查看端口,强制kill进程

1.查看8088端口被哪个进程占用:netstat -apn | grep 8088 2.强制kill某一进程:kill -s 9 1827 Linux下查看端口,强制kill进程

linux下检测端口是否连通

检测tcp端口使用telnet命令 telnet 例:telnet 192.168.0.1 80 检测udp端口使用uc命令 uc -zu 例:uc -zu 192.169.0.1 80 以上命令在CentOS 6.2 64位下测试通过 bash: fork: Resource temporarily unavailable http://blog.csdn.net/jlds123/article/details/9146865 http://smilejay.com/2012/04/fork_

Linux 下防火墙端口设置

方式1: /sbin/iptables -I INPUT -p tcp --dport 8011 -j ACCEPT  #开启8011端口 /etc/rc.d/init.d/iptables save                                       #保存配置 /etc/rc.d/init.d/iptables restart                                    #重启服务 /etc/init.d/iptables status  

Linux下Tomcat端口号以及进程

 Linux下Tomcat端口号以及进程 1,查看tomcat进程: ps -aux | grep tomcat(或者ps -ef | grep tomcat都行) 可以看到现在运行着两个tomcat进程,一个进程的pid为9974,另一个pid为23422.  2,根据进程查看端口号: sudo netstat -naop | grep 23422 这是查看pid为23422的进程占用的端口号: 可以看到9300和9399端口号被占用,其中9399是tomact Server的SHUTDOWN

Linux下查看端口被哪个程序占用

Linux如何查看端口被哪个进程占用的方法,使用工具lsof,netstat: 1.lsof -i: 端口号 lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP.UDP).找回/恢复删除的文件.是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行. 如果系统没有lsof工具,可以通过yum安装之. yum install lsof 选项: -a:列出打开文件存在的进程:  -c<进程名>:列出指定进程所打开的文件:  -g:列

linux下查看端口的连接数

linux下,可以通过natstat命令来查看端口的连接状况,比如连接数 例如,查看9090端口的连接状况: 查看某个端口的连接数netstat -nat | grep -iw "9090" | wc -l 查看连接状况 netstat -nat | grep -iw "9090"