最近给工作站换了Linux Mint,但是一直有几个问题:
- 我的工作站是双网卡,一个内网,一个外网。但是两个网卡都设置了默认路由,导致无法上网。所以写了一个临时脚本来调整路由策略,每次开机都要执行,甚烦。
- 因为需要使用shadowsocks科学上网,在防火墙配置了ss-redir的透明代理,然后试图用iptables-persistent自动加载,但是一直没有成功,于是每次开机也要手动执行。
这两个问题困扰了我很久,于是趁着周末加班又没有什么事情,把他们一并解决掉,记录一下。
0x01 双网卡路由的问题
Linux Mint使用了NetworkManager替代了传统的
/etc/network/interfaces
来进行网络配置,因此,无法在/etc/network/interfaces
进行网关调整的工作。翻了翻资料,发现其实NetworkManager也挺简单的,在界面就可以配置:
注意底下的这一句”仅对此网络上的资源使用此连接“,就是这个破烂翻译,一直让我没明白这是干嘛的。其实就是”是否将此连接设置为默认路由“。果断打勾,让其不要成为默认路由,完事。其影响的配置文件是在
/etc/NetworkManager/system-connections
下面,翻看一下:[ipv4]
method=manual
dns=192.168.1.1;
address1=xxx.xxx.xxx.xxx/24,xxx.xxx.xxx.xxx
route1=xxx.xxx.xxx.xxx/8,xxx.xxx.xxx.xxx,0
never-default=true
看到那个never-default了吗,就是刚才那个玩意儿。
0x01 iptables-persistent自动加载的问题
iptables-persistent提供了持久化防火墙配置以及自动恢复配置的功能,一般使用为:
sudo service iptables-persistent save
来保存当前的路由sudo service iptables-persistent reload
来恢复保存的路由- 另外就是开机会自动加载保存的路由
但是我的路由一直没有办法开机自动加载,但是手动运行
sudo service iptables-persistent reload
又是正常的。
我的路由规则如下:
# Generated by iptables-save v1.4.21 on Mon Jan 18 18:42:51 2016
*nat
:PREROUTING ACCEPT [1346:179886]
:INPUT ACCEPT [312:64296]
:OUTPUT ACCEPT [1542:101428]
:POSTROUTING ACCEPT [1917:121104]
-A PREROUTING -p tcp -m set ! --match-set IGNORE dst -j REDIRECT --to-ports 8964
-A OUTPUT -p tcp -m set ! --match-set IGNORE dst -j REDIRECT --to-ports 8964
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Mon Jan 18 18:42:51 2016
# Generated by iptables-save v1.4.21 on Mon Jan 18 18:42:51 2016
*filter
:INPUT ACCEPT [27982:10781746]
:FORWARD ACCEPT [14978:14180368]
:OUTPUT ACCEPT [24258:5975052]
COMMIT
# Completed on Mon Jan 18 18:42:51 2016
其中最主要的一段
-A OUTPUT -p tcp -m set ! --match-set IGNORE dst -j REDIRECT --to-ports 8964
就是加载透明代理。其中涉及到用ipset保存的国内路由表IGNORE。而ipset规则加载我是在/etc/rc.local
中完成的。
琢磨着,会不会是iptables-persistent先于
/etc/rc.local
加载了,导致这时候找不到IGNORE这个ipset规则,于是防火墙加载失败了。遂将ipset加载过程放在了iptables-persistent的启动文件中/etc/init.d/iptables-persistent
。果不起然,自动加载OK.
No comments:
Post a Comment