利用iodine为Ocserv提供本地DNS服务

起因

尝试在同一台Linux上同时安装Ocserv和Dnsmasq,并将Ocserv的DNS配置指向Dnsmasq,然而不管是走内网IP还是外网IP都完全不工作.发邮件询问Ocserv作者本人收到的回复也是建议我检查Dnsmasq的配置.鬼都知道Dnsmasq配置不可能有问题啦!

后来猜测是虚拟网卡的原因,于是尝试自己建立内网DNS隧道来搞定它.

安装及配置

# 安装
apt-get install iodine
# 启动
nohup iodined -f 10.10.10.10 gov.com &

启动后通过ifconfig能查看到已经生成了名为dnsx的虚拟网卡,地址为10.10.10.10.

dns0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1130
        inet 10.10.10.10  netmask 255.255.255.224  destination 10.10.10.10
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

配置Dnsmasq

配置好DNS隧道以后就可以将Dnsmasq的监听地址修改为相应的地址

# vi /etc/dnsmasq.conf

....
listen-address=127.0.0.1,10.10.10.10
....

切记先建立DNS隧道再restart/reload Dnsmasq

配置Ocserv

现在编辑ocserv.conf将dns设定为相应地址然后重启Ocserv即可.

其他

  • Ocserv需要将对应IP走代理
  • 如果所处的Wifi环境IP段和DNS隧道相同的话23333