我的机器运行Ubuntu Server 16.04,它具有两个NIC,即eth0和eth1,如网络图所示。它的作用最初是将流量从192.168.50.0/24子网路由到DSL1.0路由器连接到Internet的192.168.1.0/24子网。所以我的网络配置是
(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
现在,我添加了另一个蜂窝路由器,该路由器也连接到Internet,并且连接在192.168.50.0/24子网中。我需要通过该蜂窝路由器路由一些Internet通信,但不是全部路由(例如ssh连接),有关如何实现此目标的任何想法?
在这里,我们将ssh
作为路由服务。使用mangle
iptable表修改ssh
数据包。
sudo iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 0x1
我们将所有目标端口标记为的数据包标记22
为0x1
。
现在保存并重新启动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
。
尝试。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句