同一网络上的两个网关

同一网络上的两个网关

我的机器运行的是 Ubuntu Server 16.04,它有两个网卡,eth0 和 eth1,如网络图所示。它的作用最初是将流量从 192.168.50.0/24 子网路由到 192.168.1.0/24 子网,DSL 路由器就是在这个子网中连接到互联网的。所以我的网络配置是

(eth0) 的输出cat /etc/network/interfaces.d/eth0

#auto eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 192.168.1.7
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1

(eth1)的输出cat /etc/network/interfaces.d/eth1

#auto eth0
#iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.50.7
netmask 255.255.255.0

现在我添加了另一个蜂窝路由器,它也连接到互联网,并且它连接到 192.168.50.0/24 子网。我需要通过该蜂窝路由器路由部分互联网流量,但不是全部(例如 ssh 连接)。关于如何实现这一点,您有什么想法吗?

网络图

答案1

这里我们将其ssh作为路由服务,使用mangleiptable表来修改ssh数据包。

sudo iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 0x1

我们将所有目标端口的数据包标记220x1

现在保存并重新启动iptables

sudo service iptables save
sudo service iptables restart

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

100 sshtable

为数据包编写规则ssh

ip rule add fwmark 0x1 lookup sshtable

在新表中添加路由sshtable。所有其他流量将通过默认网关,可以通过ip route show命令看到。

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

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

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

sudo ip route add default gw 192.168.50.254 table sshtable

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

尝试。

相关内容