iptables 伪装如何允许访问不同的本地子网?

iptables 伪装如何允许访问不同的本地子网?

我的 Linksys 路由器 (IP192.168.1.1/24 子网内)连接到我的 ADSL 调制解调器(IP10.0.0.138在 /24 子网内)通过 PPPoE 建立互联网连接。为了能够从连接到路由器的其中一台 PC 访问调制解调器的 Web 界面,需要在路由器上执行以下命令:

ip addr add 10.0.0.1/24 dev vlan1 brd +
iptables -I POSTROUTING -t nat -o vlan1 -d 10.0.0.138 -j MASQUERADE

据我所知,这是必要的,因为路由器会将 IP 10.0.0.138 视为外部地址,因为它不是其自己的 192.168.1.0/24 子网的一部分。

但是这两行到底在做什么呢?第一行似乎为 vlan1 接口(基本上是路由器的 WAN 端口)分配了第二个 IP 地址。第二行显然修改了传出 IP 数据包的源地址。但这不正是任何家用路由器默认执行的操作吗?通过使用iptables -t nat -L我发现已经有一条规则:

target      prot opt source               destination
MASQUERADE  all  --  anywhere             anywhere

现在第二个命令添加

MASQUERADE  all  --  anywhere             10.0.0.138

到该表,但这是否只是上述规则的更具体版本,因此是多余的?

如果有人能向我解释这里到底发生了什么事情,那就太好了!


输出ip route

87.186.225.71 dev ppp0 proto kernel scope link src [我的公共 IP]
10.0.0.0/24 dev vlan1 proto 内核范围链接 src 10.0.0.1
192.168.1.0/24 dev br0 proto 内核范围链接 src 192.168.1.1
127.0.0.0/8 dev lo 范围链接
默认通过 87.186.225.71 dev ppp0

输出ip addr

1:lo:mtu 16436 qdisc 无队列
    链路/环回 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 范围主机 lo
2:eth0:mtu 1500 qdisc pfifo_fast qlen 1000
    链接/以太 00:13:10:2f:fe:48 brd ff:ff:ff:ff:ff:ff
3:eth1:mtu 1500 qdisc pfifo_fast qlen 1000
    链接/以太 00:13:10:2f:fe:4a brd ff:ff:ff:ff:ff:ff
4:vlan0:mtu 1500 qdisc 无队列
    链接/以太 00:13:10:2f:fe:48 brd ff:ff:ff:ff:ff:ff
5:vlan1:mtu 1500 qdisc 无队列
    链接/以太 00:13:10:2f:fe:49 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/24 brd 10.0.0.255 范围全局 vlan1
6:br0:mtu 1500 qdisc 无队列
    链接/以太 00:13:10:2f:fe:48 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 范围全局 br0
...
23:ppp0:mtu 1492 qdisc pfifo_fast qlen 3
    链路/ppp
    inet [我的公网IP] peer 87.186.225.71/32 brd [我的公网IP] scope global ppp0

相关内容