我有一台带有 3 个 NIC 的服务器:
- 已连接到互联网
- 连接到 LAN1 (10.0.0.0/24)
- 连接到 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
以服务作为路由,使用mangle
iptable表来修改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
。