两个 LAN 之间的 ip 转发

两个 LAN 之间的 ip 转发

我有一台带有 3 个 NIC 的服务器:

  1. 已连接到互联网
  2. 连接到 LAN1 (10.0.0.0/24)
  3. 连接到 LAN2 (192.168.0.0/28)
    LAN2 有一个在端口(例如 4444)上工作的服务器。如何在 LAN 之间转发来自特定端口的流量?我希望只有 LAN1 能够访问互联网,而 LAN2 不能。所有机器都是 Ubuntu 15.04

答案1

首先要启用 IP 转发。可以使用

echo "1" > /proc/sys/net/ipv4/ip_forward

然后,我们将添加一条规则,告诉转发流量

sudo iptables -A FORWARD -i LAN1 -o LAN0 -j ACCEPT
sudo iptables -A FORWARD -i LAN0 -o LAN1 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o LAN0 -j MASQUERADE

通过这种方式LAN1就可以通过 访问互联网LAN0

编辑1

尝试这个

示例为端口 4444 的流量路由,您可以实现所需的端口

我们从iptable开始,这里我们4444以服务作为路由,使用mangleiptable表来修改4444数据包。

  sudo iptables -t mangle -A OUTPUT -p tcp –dport 4444 -j MARK –set-mark 0×1

我们将所有目标端口的数据包标记4444为“0×1”。

要从中删除该条目,iptables我们可以使用-D而不是-A

/etc/iproute2/rt_table接下来,只需输入一个条目即可创建一个新的 IP 路由表

100 4444table

为数据包编写规则4444

ip rule add fwmark 0×1 lookup 4444table

在新表中添加路由4444table。这里我们将使用“192.168.1.1”作为网关4444。地址“192.168.1.1”

我们从主表复制除默认网关条目之外的所有条目。

 sudo ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table 4444table $ROUTE; done

将数据包的默认网关条目添加4444到表中4444table

  sudo ip route add default via 192.168.1.1 table 4444table

使用ip route show table 4444table显示 所有路线4444table

相关内容