端口转发配置

端口转发配置

需求

有的时候机器有一台网关机器,需要做端口转发的工作,那么可以使用iptables或者使用firwalld进行配置,firewalld底层也是调用的跟iptables一样的内核模块的,只是命令的不同

配置

环境说明

  • 机器A

    • 外网IP:192.168.0.85
    • 内网IP:192.168.1.103
  • 机器B

    • 内网IP:192.168.1.102
  • 机器C

    • 内网IP:192.168.1.101

配置访问192.168.0.85端口44561映射到192.168.1.102的4456端口
配置访问192.168.0.85端口44562映射到192.168.1.101的4456端口

通用配置

开启内核转发功能

1
2
3
[root@lab103 ~]# cat /etc/sysctl.conf |grep forwa
net.ipv4.ip_forward = 1
[root@lab103 ~]# sysctl -p

使用iptable配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/sh
IPT="/sbin/iptables"
/bin/echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
$IPT -F
$IPT -t nat -F
$IPT -X
$IPT -t nat -X
$IPT -Z
$IPT -t nat -Z
iptables -t filter -P FORWARD ACCEPT
#DNAT 做端口转发 lab102
$IPT -t nat -A PREROUTING -d 192.168.0.85 -p tcp --dport 44561 -j DNAT --to-destination 192.168.1.102:4456
#SNAT 做端口转发
$IPT -t nat -A POSTROUTING -p tcp -d 192.168.1.102 --dport 4456 -j SNAT --to-source 192.168.1.103


#DNAT 做端口转发 lab1021
$IPT -t nat -A PREROUTING -d 192.168.0.85 -p tcp --dport 44562 -j DNAT --to-destination 192.168.1.101:4456
#SNAT 做端口转发
$IPT -t nat -A POSTROUTING -p tcp -d 192.168.1.101 --dport 4456 -j SNAT --to-source 192.168.1.103

上面的注意下那个to-source后面应该接上转发机器的内网的IP的地址,如果错了就有问题

使用firewalld配置

1
2
3
4
5
6
7
8
#!/bin/sh
firewall-cmd --add-masquerade --permanent
firewall-cmd --add-port=44561/tcp --permanent
firewall-cmd --add-port=44562/tcp --permanent
firewall-cmd --add-forward-port=port=44561:proto=tcp:toport=4456:toaddr=192.168.1.102 --permanent
firewall-cmd --add-forward-port=port=44562:proto=tcp:toport=4456:toaddr=192.168.1.101 --permanent
firewall-cmd --reload
firewall-cmd --list-all

注意点

上面的配置好转发以后都不要在转发的机器本机进行测试,本机上直接测试会不通,这个需要在外部进行访问转发机器进行验证