iptables 端口转发配置规则
请求在防火墙中的路由过程
XXXXXXXXXXXXXXXXXX
XXX Network XXX
XXXXXXXXXXXXXXXXXX
+
|
v
+-------------+ +------------------+
|table: filter| <---+ | table: nat |
|chain: INPUT | | | chain: PREROUTING|
+-----+-------+ | +--------+---------+
| | |
v | v
[local process] | **************** +--------------+
| +---------+ Routing decision +------> |table: filter |
v **************** |chain: FORWARD|
**************** +------+-------+
Routing decision |
**************** |
| |
v **************** |
+-------------+ +------> Routing decision <---------------+
|table: nat | | ****************
|chain: OUTPUT| | +
+-----+-------+ | |
| | v
v | +-------------------+
+--------------+ | | table: nat |
|table: filter | +----+ | chain: POSTROUTING|
|chain: OUTPUT | +--------+----------+
+--------------+ |
v
XXXXXXXXXXXXXXXXXX
XXX Network XXX
XXXXXXXXXXXXXXXXXX
- 配置外网访问端口转发
iptables -t nat -A PREROUTING -p tcp -i eth0 -d 192.168.60.241 --dport 19725 -j DNAT --to 192.168.60.241:22
配置网卡eth0
ip 地址 192.168.60.241
进来的 端口 19725
使用目的地转发到 192.168.60.241:22
地址
- 本机访问端口转发
iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 19725 -j DNAT --to 127.0.0.1:22
iptables -t nat -A OUTPUT -p tcp -d 192.168.60.241 --dport 19725 -j DNAT --to 127.0.0.1:22
和1相同的目的,但是从本机访问 19725
端口的时候会走本地网卡,所以需要添加如上两条规则
遇到的问题
- 在不同网段中,已经设置了
DNAT
转发,比如让访问192.168.60.241:1884
的端口转发到192.168.1.192:1884
但是在另一台机器192.168.20.110
上面是连接不上的
- 我加了另一条规则
iptables -t nat -A POSTROUTING -d 192.168.1.192 -p tcp --dport 1884 -o eth0 -j SNAT --to 192.168.60.241
让在POSTROUTING
的时候修改目的地址就能连通,查看资料后发现是默认服务器默认路由的问题,但是有点想不通,因为在192.168.1.193
上面直接连接192.168.60.241:1884
是可以连通,所以猜测是因为请求的时候的路由之类的问题,先记录下了,后面再看看。
网友评论