策略路由设置
2015 年 11 月 18 日
服务器有两个外网连接,eth0上的PPPOE是一个,wlan0是一个。从服务器出的时候默认走的ppp0,这个不用设置就好了。但从wlan0进来的入口就不通,于是学习了一下策略路由的配置,简单记录一下。
- 策略路由要处理本机的路由表,不是route -n看到的那种,而是在
/etc/iproute2/rt_tables
中可以看到的,从1到255最多255个,默认已经有4个了,local/main/default/unspec,这些都不能动 - 用nginx在80端口监听,通过
同时分析从ppp0和wlan0两个interface的数据包,可以发现:当外网请求走ppp0时,tcp连接很明确的建立了。但从wlan0进入时,出站的数据包走的是ppp0,这就是问题根源
- 找到问题根源后,就需要对相应的数据包做处理:
- 在
/etc/iproute2/rt_tables
中增加一个表,我这里叫miroute,注意id不要重复,也不要超过255 - 在miroute表中增加一个默认出口,走wlan0的路由
可以看出,192.168.31.1就是路由IP。此时可以通过
看到新增的这个路由表。
- 再增加一条内网路由,命令是
意思是所有内网请求都从wlan0网卡出。这句话不加,内网连接是不通的。
- 将要从wlan0出的数据包都导向miroute这个表,命令是
很明显,192.168.31.6就是wlan0口的IP。此时可以通过
看到这次的改动。
- 试验OK之后,将这三句脚本加到/etc/network/interfaces中启动wlan0的地方,也就是说写成up …… 的形式
按照这样修改之后,服务器就能正确响应来自wlan0的请求了。
本来以为已经搞定了,结果还有后续。在服务器上架了一个vpn,这样服务器上就有eth0/wlan0/ppp0/ppp1等多个interface了,只好又研究了一下iptables。
至于dns,用chinadns。