我工作的地方,我的电子邮件 imap(使用 thunderbird)只能通过 wifi 开启。其余的大多只能通过有线连接(而且速度更快)。那么,当 wifi 和有线都连接时,通过 wifi 使用我的邮件(假设 smtp 的 imap 端口为 993 和 465)并通过有线连接所有其他邮件的最佳选择是什么。顺便说一下,仅适用于这个位置(因此可能需要批量撤消并重做)。使用 ubuntu 14.04 桌面(在笔记本电脑上)。
答案1
首先,确保你已经iproute
安装了该软件包。如果你有 ip 命令,那么你就设置好了
/etc/iproute2/rt_tables
通过附加以下行来编辑并添加新表:
200 wlan-route
然后,您需要为名为 wlan-route 的新路由表配置默认网关,并创建规则以有条件地将流量发送到该表。我假设您的默认网关是 192.168.0.1。当然,这需要与您的实际网络相匹配,而不仅仅是我的假设。
ip route add default via 192.168.0.1 dev wlan0 table wlan-route
ip rule add fwmark 0x1 table wlan-route
您最终的注释脚本将如下所示:
# Populate secondary routing table
ip route add default via 192.168.0.1 dev wlan0 table wlan-route
# Anything with this fwmark will use the secondary routing table
ip rule add fwmark 0x1 table wlan-route
# Mark these packets so that iproute can route it through wlan-route
iptables -A OUTPUT -t mangle -o eth1 -p tcp --dport 993 -j MARK --set-mark 1
# now rewrite the src-addr
iptables -A POSTROUTING -t nat -o wlan0 -p tcp --dport 993 -j SNAT --to 192.168.0.2
此脚本通过 wlan0 发送端口 993 上的任何流量
答案2
可以根据目的地添加额外路线来解决问题。
从航站楼
sudo ip route add ip_address_mail_server dev wlan0
这可以通过编辑连接来完成/etc/NetworkManager/system-connections/connection_name
sudo nano /etc/NetworkManager/system-connections/connection_name
[connection]
id=Auto XXXX
uuid=f4a27a71-202f-45ac-bc58-59a55600f515
type=802-11-wireless
[802-11-wireless]
ssid=XXXX
mode=infrastructure
mac-address=18:CF:5E:23:2A:0A
security=802-11-wireless-security
[802-11-wireless-security]
key-mgmt=wpa-psk
auth-alg=open
psk=yyyyyyyyy
[ipv4]
method=auto
routes1=xxx.xxx.xxx.xxx;32;yyy.yyy.yyy.yyy;0;
[ipv6]
method=auto
xxx.xxx.xxx.xxx-代表邮件服务器的 ip 地址
yyy.yyy.yyy.yyy - 代表 wlan0 接口的网关
编辑1
第二种方法更精确,但也更复杂
我们从iptable开始,这里我们smtp
以服务作为路由,使用mangle
iptable表来修改smtp
数据包。
sudo iptables -t mangle -A OUTPUT -p tcp –dport 993 -j MARK –set-mark 0×1
我们将所有目标端口的数据包标记993
为“0×1”。
现在保存并重新启动iptables
。
service iptables save
service iptables restart
要从中删除该条目,iptables
我们可以使用-D
而不是-A
。
/etc/iproute2/rt_table
接下来,只需输入一个条目即可创建一个新的 IP 路由表
100 smtp
为数据包编写规则smtp
。
ip rule add fwmark 0×1 lookup smtp
在新的 smtp 表中添加路由。这里我们将使用 '192.168.1.1′ 作为网关smtp
。所有其他流量都将通过默认网关,可以通过 IP route show 命令查看。
我们从主表复制除默认网关条目之外的所有条目。
sudo ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table sshtable $ROUTE; done
将数据包的默认网关条目添加smtp
到表中smtp
sudo ip route add default via 192.168.1.1 table smtp
使用ip route show table smtp to show all routes at
smtp`。
就是这样..我们做到了!!!
imap
对端口重复所有操作465
。