当前位置:科技动态 > Iptables 的 NAT 端口转发设置

Iptables 的 NAT 端口转发设置

  • 发布:2023-09-29 04:12

背景:
服务器 A:103.110.114.8/192.168.1.8,有外网 ip,是 IDC 服务器
服务器 B:192.168.1.150,无外网 ip,服务器A是其主机,可以互相ping通
服务器C:192.168.9.120,是公司的服务器,可以访问Internet。
服务器C可以通过ssh直接登录服务器A,但不能直接登录服务器B,因为它们处于两个不同的局域网。
现在要求能够从服务器C通过ssh登录到服务器B,并建立ssh无密码信任跳转关系。
这就需要用到iptables的NAT端口转发功能了~~~~~~
思路:
让服务器C先访问服务器A上的20022端口,然后NAT转发到服务器A的ssh端口服务器B(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 ~ ]# 服务 iptables 重新启动

成功设置nat端口转发后,在/etc/sysconfig/iptables文件中注释掉以下两行!不然nat转发会有问题!一般情况下,如上设置nat转发规则并保存并重启防火墙后,/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
内核 IP 路由表
目标网关 Genmask 标志指标参考使用 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上测试:看看能否登录虚拟机Up
[root@redmine ~]# ssh -p20022 103.110.114.8
主机'[103.10.86.8]:20022 ([103.10.86.8]:20022)'的真实性无法建立。
RSA密钥指纹是 f8:a9:d1:cb:52:e8:8b:ed:8b:d2:1a:86:06:1a:fd:0f。
您确定要继续连接吗(是/否)? yes
警告:将“[103.10.86.8]:20022”(RSA)永久添加到已知主机列表中。
root@103.110.114.8的密码:
[root@dev-new-test1 ~]# ifconfig                          #查看,已经登陆成功进来了!
eth0 链接 encap:以太网 HWaddr FA:16:3E:9D:F3:17
inet addr:192.168.1.150 广播:192.168.1.255 掩码:255.255.255.0
inet6 addr: fe80::f816:3eff :fe9d :f317/64 范围:链接
向上广播运行多播 MTU:1500 指标:1
RX 数据包:27047404 错误:0 丢弃:0 溢出:0 帧:0
TX 数据包:6401069 错误:0 丢弃:0 溢出:0 载波:0
冲突:0 txqueuelen:1000
RX 字节:67605283704 (62.9 GiB) TX 字节:566935277 (540.6 MiB)

lo 链接 encap:本地环回
inet addr:127.0.0.1 掩码:255.0.0.0
inet6 addr:::1/128 范围:主机
上环回运行 MTU:65536 指标:1
RX 数据包:87025 错误:0 丢弃:0 溢出:0 帧:0
TX 数据包:87025 错误:0 丢弃:0 溢出:0 载波:0
冲突:0 txqueuelen:0
RX字节:65978795 (62.9 MiB) 发送字节:65978795 (62.9 MiB)

可以把服务器C的公钥id_www.sychzs.cn内容复制到虚拟机上的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 - - 目的地 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 --到目的地 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 接受

相关文章