我有 3 个网络接口:lo
和new0
。new1
我用来new1
访问互联网。
几天前我的电脑出问题了,开始尝试访问互联网lo
。这样做ifconfig lo down
会导致数据包通过new0
。但我希望它使用new1
。
我可以使用ssh
、下载种子并使用其他协议,但 http 和 https 不起作用;我只是立即收到“未找到服务器”的提示,而浏览器中没有加载时间。
如何让系统优先new1
于new0
和lo
?
我无法改变我的metric
,new1
和new0
都停留在 1。
答案1
确定一般流量接口的优先级是通过操纵路由指标。
每条路由都有相关参数,例如跳数和带宽。请参阅命令手册页中的netstat -nr
“ ”选项。metric
route
用于非常简单的公制使用控制伊夫米特工具:
sudo apt-get update
sudo apt-get install ifmetric
安装后,使用它来更改接口的度量值,请参阅此http://manpages.ubuntu.com/manpages/vivid/man8/ifmetric.8.html
答案2
度量标准可以在多个地方更改。对我来说,最好的方法是配置etc/network/interface
auto lo
iface lo inet loopback
auto new0
iface new0 inet static
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
up route add default gw aaa.aaa.aaa.aaa metric 10
down route del default gw aaa.aaa.aaa.aaa
auto new1
iface new1 inet static
address yyy.yyy.yyy.yyy
netmask yyy.yyy.yyy.yyy
up route add default gw bbb.bbb.bbb.bbb
down route del default gw bbb.bbb.bbb.bbb
这样,当接口new0
启动时,将aaa.aaa.aaa.aaa
使用度量 10 为网关带来路由。接口使用较低的度量new1
带来路由bbb.bbb.bbb.bbb
,并且流量将在该接口上路由。
如果您sudo ifdown new1
拔下卡上的电缆,路由将被删除,并且路由aaa.aaa.aaa.aaa
将成为新的最佳流量路由。
new1
当再次添加brin int up 路线时,bbb.bbb.bbb.bbb
它将再次成为您的最佳路线。
编辑1
路由优先级与基于目标端口的路由不同。
但是我给你举了个例子来路由 ssh 的流量,port 22
你可以实现你需要的端口
我们从iptable开始,这里我们ssh
以服务作为路由,使用mangle
iptable表来修改ssh
数据包。
sudo iptables -t mangle -A OUTPUT -p tcp –dport 22 -j MARK –set-mark 0×1
我们将所有目标端口的数据包标记22
为“0×1”。
现在保存并重新启动iptables
。
service iptables save
service iptables restart
要从中删除该条目,iptables
我们可以使用-D
而不是-A
。
/etc/iproute2/rt_table
接下来,只需输入一个条目即可创建一个新的 IP 路由表
100 sshtable
为数据包编写规则ssh
。
ip rule add fwmark 0×1 lookup sshtable
在新表中添加路由sshtable
。这里我们将使用“192.168.1.1”作为网关ssh
。地址“192.168.1.1”,在此示例中将是网关地址。new2
所有其他流量将通过默认网关(又称)new1
,可通过 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 via 192.168.1.1 table sshtable
使用ip route show table sshtable
显示 所有路线sshtable
。
就是这样..我们做到了!!!
重复imap
在端口上465
或hhtp
在端口上80
或https
在端口上的所有操作443
...