【发布时间】:2020-06-19 13:45:37
【问题描述】:
我有一台 linux 机器,它充当路由器 R、子网 B 和主机 a。
我想创建以下转发规则:
- 将来自 B 的所有内容路由到某台机器
a。 - 从
a,通过 NAT 将流量返回到在B上发起的所有内容。 - 将所有其他流量从
a路由到互联网。
Internet
|
--- --- ---
| |<----|-/ | | |
| a | | R | | B |
| |<----|---|---->| |
--- --- ---
R上的iptables配置:
iptables -t nat -A POSTROUTING -o eth_to_a -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth_to_B -j SNAT --to IP_eth_B_R
iptables -t nat -A PREROUTING -i eth_to_B -j DNAT --to IP_a
iptables -A FORWARD -i eth_to_a -o eth_to_B -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth_to_B -o eth_to_a -j ACCEPT
使用此配置,从 B 到 a 的流量可以正常工作,但我无法将来自 a 的流量转发到互联网(并返回)。
【问题讨论】: