公司网络设置备忘

2013 年 11 月 08 日

这个星期基本都在折腾网络,除了OpenWrt,还收拾了一下公司的网络,解决了大家上网的问题。做个备忘。

前因:先前由于工作需要,公司里被硬生生切成两个子网,其中子网1可以正常上Internet;子网2接到一个不可控的二级交换机,再接到一个不可控的三级交换机,连到某个VPN,因此不能上Internet。

一开始大家是搞了个双网卡的机器同时连接子网1和子网2,在那台机器上加了个http代理,用的还算正常。后来大家发现这个做法有问题,最直接的问题,是子网2仍然不能连接子网1里面的某些服务器,比如用samba方式访问服务器上的文件。

本来如果子网2的三级交换机可控的话,加几条路由就可以解决问题。但现在这种情况决定这招不能用。所以我的解决办法是,修改子网2中所有机器的路由表,然后在双网卡机器上搞包转发。

具体的做法是:

  1. 双网卡机器用Ubuntu,修改iptables,参考这篇文章(已失效),其实操作没有那么多,关键点就两个:
  • 在/etc/sysctl.conf中,打开net.ipv4.ip_forward=1
  • 开启nat,其中ethx是internet出口网卡:iptables -t nat -A POSTROUTING -o ethx -j MASQUERADE ;
  • 注意这一步目前是没有自动启动的,也就是每次开机要手动操作。如果要自动启动,这里提供一个思路:去修改/etc/udev/rules.d/70-persistent-net.rules(文件名可能有不同,但这个风格的名字很明显),将网卡名与mac地址对应关系固定,再将这句话加到/etc/network/interfaces
  1. 修改子网2中所有机器的路由表,具体操作是:
# 删除默认网关,因为默认网关指向VPN
route del default
# 修改默认网关为双网卡机器IP,此时所有请求会被转向双网卡机器,也就是可以上Internet了,同时子网1也通了
route add default gw xxx.xxx.xxx.xxx
# 增加一条路由,对于原有的必须要走VPN的路由仍然走VPN网关
route add -net xxx.0.0.0 netmask 255.0.0.0 gw xxx.xxx.xxx.xxx
  1. 第2步操作是暂时的,重启之后没有保存,要保存,需要修改/etc/network/interfaces,将这几句加到最后去,也就是网络重启之后执行这几句脚本,注意每条命令前面需要加up,如up route del default,大约是指网络启动时执行吧,这里没仔细研究。保存之后重启网络就行了。
Top