iptables之NAT端口转发设置
背景:
服务器A:103.110.114.8/192.168.1.8,有外网ip,是IDC的一台服务器
服务器B:192.168.1.150,没有外网ip,A服务器是它的宿主机,能相互ping通
服务器C:192.168.9.120,是公司的一台服务器,能上网。
服务器C可以直接ssh登陆A服务器,但是不能直接登陆服务器B,因为它们处在两个不同的局域网内。
现在要求能从服务器C上ssh登陆服务器B,并且做ssh无密码信任跳转关系。
这就需要用到iptables的NAT端口转发功能了~~~~~
思路:
让服务器C先访问服务器A上的20022端口,然后NAT转发到服务器B的ssh端口(22端口)
----------------------------------------------------------------------------------------------
下面是在宿主机A上(192.168.1.8)的操作:
1)先开启ip路由转发功能
[root@linux-node1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
或者
[root@linux-node1 ~]# cat /etc/sysctl.conf
..........
net.ipv4.ip_forward = 1
[root@linux-node1 ~]# sysctl -p
2)设置iptables的NAT转发功能
[root@linux-node1 ~]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 20022 -j DNAT --to-destination 192.168.1.150:22
[root@linux-node1 ~]# iptables -t nat -A POSTROUTING -d 192.168.1.150/32 -p tcp -m tcp --sport 22 -j SNAT --to-source 192.168.1.8
[root@linux-node1 ~]# iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 20022 -j ACCEPT
[root@linux-node1 ~]# service iptables save
[root@linux-node1 ~]# service iptables restart
nat端口转发设置成功后,/etc/sysconfig/iptables文件里要注释掉下面两行!不然nat转发会有问题!一般如上面在nat转发规则设置好并save和restart防火墙之后就会自动在/etc/sysconfig/iptables文件里删除掉下面两行内容了。
[root@linux-node1 ~]# vim /etc/sysconfig/iptables
..........
#-A INPUT -j REJECT --reject-with icmp-host-prohibited //这两行最好是注释掉。在一般的白名单设置中,如果这两行不注释,也会造成iptables对端口的设置无效
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
[root@linux-node1 ~]# service iptables restart
----------------------------------------------------------------------------------------------
下面是在服务器B上(192.168.1.150)的操作:
1)首先关闭防火墙
[root@dev-new-test1 ~]# service iptables stop
2)设置网关为宿主机的内网ip(内网网关地址一定要保持和宿主机内网网关地址一致!如果没有内网网关地址,那么就把它的网关设置成宿主机的内网ip地址!)
[root@dev-new-test1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
......
GATEWAY=192.168.1.8
......
[root@dev-new-test1 ~]# /etc/init.d/network restart
[root@dev-new-test1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 192.168.1.8 0.0.0.0 UG 0 0 0 eth0
----------------------------------------------------------------------------------------------
最后在公司服务器C上测试:看看能否登陆到虚拟机上
[root@redmine ~]# ssh -p20022 103.110.114.8
The authenticity of host '[103.10.86.8]:20022 ([103.10.86.8]:20022)' can't be established.
RSA key fingerprint is f8:a9:d1:cb:52:e8:8b:ed:8b:d2:1a:86:06:1a:fd:0f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[103.10.86.8]:20022' (RSA) to the list of known hosts.
root@103.110.114.8's password:
[root@dev-new-test1 ~]# ifconfig #查看,已经成功登陆进来了!
eth0 Link encap:Ethernet HWaddr FA:16:3E:9D:F3:17
inet addr:192.168.1.150 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:fe9d:f317/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:27047404 errors:0 dropped:0 overruns:0 frame:0
TX packets:6401069 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:67605283704 (62.9 GiB) TX bytes:566935277 (540.6 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:87025 errors:0 dropped:0 overruns:0 frame:0
TX packets:87025 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:65978795 (62.9 MiB) TX bytes:65978795 (62.9 MiB)
可以把服务器C的公钥id_rsa.pub内容拷贝到虚拟机上的authorized_keys文件内,这样从C机器就能ssh无密码登陆到虚拟机B上了。
--------------------------------------------------------------------
下面贴出几个其他转口的转发规则(本机开启ip路由转发,目标机器注意防火墙和网关设置):
本机(192.168.1.7)的19200转发到192.168.1.160的9200
[root@kvm-server conf]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 19200 -j DNAT --to-destination 192.168.1.160:9200
[root@kvm-server conf]# iptables -t nat -A POSTROUTING -d 192.168.1.160/32 -p tcp -m tcp --sport 9200 -j SNAT --to-source 192.168.1.7
[root@kvm-server conf]# iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 19200 -j ACCEPT
本机(192.168.1.7)的33066转发到192.168.1.160的3306
[root@kvm-server conf]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 33066 -j DNAT --to-destination 192.168.1.160:3306
[root@kvm-server conf]# iptables -t nat -A POSTROUTING -d 192.168.1.160/32 -p tcp -m tcp --sport 3306 -j SNAT --to-source 192.168.1.7
[root@kvm-server conf]# iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 33066 -j ACCEPT
本机(192.168.1.7)的8880转发到192.168.1.1的8080
[root@kvm-server conf]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8880 -j DNAT --to-destination 192.168.1.160:8080
[root@kvm-server conf]# iptables -t nat -A POSTROUTING -d 192.168.1.160/32 -p tcp -m tcp --sport 8080 -j SNAT --to-source 192.168.1.7
[root@kvm-server conf]# iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 8880 -j ACCEPT
#echo 1 > /proc/sys/net/ipv4/ip_forward
#sysctl -p
2、注释掉可能影响的规则
# vim /etc/sysconfig/iptables
#这两行最好是注释掉。在一般的白名单设置中,如果这两行不注释,也会造成iptables对端口的设置无效
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
3、增加转发规则
#iptables -t nat -A PREROUTING -d 118.94.13.3 -p tcp --dport 80 -j DNAT --to-destination 40.105.20.181:8076
#iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to 40.105.20.181:8076
#iptables -t nat -A POSTROUTING -p tcp -j MASQUERADE
4、重启防火墙
# service iptables save
# service iptables restart
iptables之NAT端口转发设置的更多相关文章
- linux centos6 NAT 端口转发
有很多时候我们为了安全,需要将例如数据库服务器放到内网中.但是有些时候又系统给外网开一个端口,这时就可以利用外网的服务器进行一个端口转发.今天我们以centos6 为例进行端口转发配置. 首先vi / ...
- 配置iptables实现本地端口转发的方法详解
场景假如你在用 resin 调试一个 Web 程序,需要频繁地重启 resin.这个 Web 程序需要开在 80 端口上,而 Linux 限制 1024 以下的端口必须有 root 权限才能开启.但是 ...
- 用iptables 实现本地端口转发
设定本机2121端口转发到21端口 iptables -t nat -A PREROUTING -p tcp -i eth0 -d -j DNAT --to iptables -t nat -I PO ...
- iptables配置服务器端口转发
环境: CentOS6.5,192.168.1.10,外网双向通信,绑定域名zlzkj.org: WinServer2008,192.168.1.11,外网不能直接访问到该机器,但ftp.远程桌面.M ...
- Linux下使用iptables配置防火墙端口转发
1.背景 一些情况下,在linux上面我们想使用80-1024之间的端口,这个时候需要root权限. 当时root权限容易被提权,特别是早起那些Struct2,漏洞爆出的时候,一抓一个准-root权限 ...
- 记号一下用iptables做的端口转发
iptables -t nat -I PREROUTING -p tcp -m tcp --dport 83 -j DNAT --to-destination 192.168.1.55:443ipta ...
- 外网主机访问虚拟机下的web服务器(NAT端口转发)
主机:系统win7,ip地址172.18.186.210 虚拟机:VMware Workstation 7,虚拟机下安装了Centos操作系统,ip地址是192.168.202.128,部署了LAMP ...
- 外网主机访问虚拟机下的web服务器(NAT端口转发)-----端口映射
主机:系统win7,ip地址172.18.186.210 虚拟机:VMware Workstation 7,虚拟机下安装了Centos操作系统,ip地址是192.168.202.128,部署了LAMP ...
- nat+端口转发,使得宿主机secureCRT可以访问vbox里linux虚拟机
环境:vbox或者叫vitrualbox连接虚拟机,由于公司内网不能分配IP(不知道是不是这个原因),虚拟机用桥接得不到IP,没法实现虚拟机和宿主互相访问,于是用NAT. 遗憾:NAT是能连接网络,也 ...
随机推荐
- JQ用法
jQuery简称jq,是一款同prototype一样优秀js开发库类,特别是对css和XPath的支持,使我们写js变得更加方便!如果你不是个js高手又想写出优 秀的js效果,jq可以帮你达到目的!下 ...
- BZOJ 1912 巡逻(算竞进阶习题)
树的直径 这题如果k=1很简单,就是在树的最长链上加个环,这样就最大化的减少重复的路程 但是k=2的时候需要考虑两个环的重叠部分,如果没有重叠部分,则和k=1的情况是一样的,但是假如有重叠部分,我们可 ...
- Matplotlib学习---用matplotlib画误差线(errorbar)
误差线用于显示数据的不确定程度,误差一般使用标准差(Standard Deviation)或标准误差(Standard Error). 标准差(SD):是方差的算术平方根.如果是总体标准差,那么用σ表 ...
- 【 HDU 2177 】取(2堆)石子游戏 (威佐夫博弈)
BUPT2017 wintertraining(15) #5C hdu2177 题意 两个人轮流取石子,可以取一堆的任意非负整数个或两堆取相同个,先取完的输. 给定若干组数据:a,b表示两堆的石子数量 ...
- Shell 对整个文件夹中的文件进行MD5校验 [转]
查看本地文件的 MD5 命令:md5sum FileName查看home目录下所有文件的 MD5 码:cd ~find /home -type f -print0 | xargs -0 md5sum ...
- 集群概念Cluster
系统扩展方式: scale up,向上扩展:提高主机性能等,质变: scale out,向外扩展:水平扩展,质不变量变: 集群类型: LB:Load Balancing 负载均衡集群: HA:High ...
- 【BZOJ4316】小C的独立集(动态规划)
[BZOJ4316]小C的独立集(动态规划) 题面 BZOJ 题解 考虑树的独立集求法 设\(f[i][0/1]\)表示\(i\)这个点一定不选,以及\(i\)这个点无所谓的最大值 转移\(f[u][ ...
- AtCoder ExaWizards2019题解
AtCoder ExaWizards2019题解 AtCoder (因为代码直接用模板写的,可能有点冗长) A.Regular Triangle 给你三根棍子的长度,问你能否用他们组成等边三角形. 什 ...
- cf1000E We Need More Bosses (tarjan缩点+树的直径)
题意:无向联通图,求一条最长的路径,路径长度定义为u到v必须经过的边的个数 如果把强联通分量都缩成一个点以后,每个点内部的边都是可替代的:而又因为这是个无向图,缩完点以后就是棵树,跑两遍dfs求直径即 ...
- 单片机的基本构成、工作原理 LET′S TRY“嵌入式编程”: 1 of 6
单片机的基本构成.工作原理 LET′S TRY“嵌入式编程”: 1 of 6 本连载讲解作为嵌入式系统开发技术人员所必需具备的基础知识.这些基础知识是硬件和软件技术人员都应该掌握的共通技术知识.有了电 ...