使用Dnsmasq在Mac上搭建私有网络开发环境

对于经常移动办公的童鞋,网络环境也随之改变,开发过程中部署的本地环境也需要重新配置IP地址等,或者虚拟机(使用桥接方式,桥接好处在于局域网内其它电脑方便访问,虚拟机系统访问外网不需要额外配置)时系统IP改变。我在这样的环境下痛苦针扎了一段时间,决定在本机组建一个私有网络不随连接Internet网络的改变而变动。

先说说我的想法:在电脑上模拟新的一张网卡,用此网卡组建一个网络,此网卡IP使用静态配置。如果想在同一局域网中共享该私有网络要使用dnsmasq,只是本机使用可以不使用dnsmasq。我使用的Mac电脑,由于mac不支持创建虚拟网卡,我只能使用虚拟IP来实现。

环境

Mac: 宿主机 (通常使用wifi的网卡)
CentOS7 1: 虚拟机(VMware Fusion) (双网卡 桥接模式)
CentOS7 2: 虚拟机(VMware Fusion) (双网卡 桥接模式)
CentOS7 3: 虚拟机(VMware Fusion) (双网卡 桥接模式)

配置宿主机网络

由于Mac不支持创建虚拟网卡,使用虚拟IP。给en0网卡添加虚拟IP

1
2
sudo ifconfig en0 alias 10.0.100.1
sudo ifconfig en0 -alias 10.0.100.1

linux系统命令:

1
2
ifconfig eth0:1 10.0.100.2 netmask 255.255.255.0
ip addr del 10.0.100.2/24 dev eth0

配置虚拟机网络

1
2
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
uuidgen eth1

配置eth1网卡 vi /etc/sysconfig/network-scripts/ifcfg-eth1 (uuid使用uuidgen命令生成)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth1
UUID=123a9032-c938-4404-bc95-7103accbdcc3
DEVICE=eth1
IPADDR=10.0.100.2
NETMASK=255.255.255.0
GATEWAY=10.0.100.1
ONBOOT=yes

其他虚拟机的IP10.0.100.3 10.0.100.4

测试网络

宿主机: ping 10.0.100.2
虚拟机: ping 10.0.100.1

安装dnsmasq

1
brew install dnsmasq

配置 vim /usr/local/etc/dnsmasq.conf

1
2
3
strict-order
listen-address=10.0.100.1,127.0.0.1
conf-dir=/usr/local/etc/dnsmasq.d/,*.conf

添加/usr/local/etc/dnsmasq.d/k8s.conf

1
2
3
address=/k8s-master.lan/10.0.100.2
address=/k8s-node1.lan/10.0.100.3
address=/k8s-node2.lan/10.0.100.4

启动:

1
sudo brew services start dnsmasq

开机启动

1
sudo launchctl start homebrew.mxcl.dnsmasq

清除DNS缓存

1
sudo killall -HUP mDNSResponder

如果使用该dns服务,修改dns
vi /etc/rsyslog.conf

1
nameserver 10.0.100.1

测试
宿主机中修改/etc/rsyslog.conf
ping k8s-master.lan