前言
本文介绍了如何使用 Linux iptalbes 来使其他内网主机进行上网。

解释说明:一般情况下,VMware安装好后会出现两张网卡,vmnet1 与 vmnet8 。其中vmnet1 为仅主机模式(虚拟机之间可通信,虚拟机与宿主机可通信,不能上网);vmnet8 为 NAT 模式(虚拟机之间可通信,虚拟机与宿主机可通信,可上网)。
其实k8s的三台主机也可以设置为NAT模式,直接具有上网的能力,但为什么要多一台主机出来呢?
多余的这一台主机就是k8s三台主机的网关,所有内网的流量都经过这台主机,所以可以配置一些其他的内容(代理、监控、ssr等等)。本文只演示如何上网,其他的请自行研究。
一、基本环境准备
- OS:Windows 10
- VMware: 16
- Linux 发行版:CentOS Linux 7.9 x86_64
二、虚拟机准备
4台虚拟机(2台亦可)。
| 主机名 | 规格 | 网络通讯模式 | ip地址 |
| k8s-master01 |
2C4G | OnlyHost |
192.168.20.11 |
| k8s-node01 | 2C4G | OnlyHost | 192.168.20.12 |
| k8s-node02 | 2C4G | OnlyHost | 192.168.20.13 |
| netshare | 1C1G |
网卡1: OnlyHost 网卡2: NAT |
网卡1:192.168.20.1 网卡2:DHCP |


三、VMnet1 网络配置
1. 打开 VMware,菜单栏【编辑】->【虚拟网络编辑器】更改设置

将 仅主机模式 的 “使用本地DHCP服务将P地址分配给虚拟机” 取消勾选,确认即可。

2. Win+r ncpa.cpl 进入 网络连接 面板
修改 VMnet1 的 IPv4 地址为 192.168.20.100,子网掩码 255.255.255.0 ,默认网关不需要填写,确认退出。


四、配置netshare主机
netshare主机预览并开启虚拟机

1. 配置IP地址
ip a

因为NAT网卡默认开启的DHCP,所以自动获取到了IP地址。
即 ens32 为 仅主机网卡,ens33为NAT网卡。
vi /etc/sysconfig/network-scripts/ifcfg-ens32
修改及添加

重启网卡,查看ip,联网测试(能否联网与仅主机网卡无关)
systemctl restart network
ip a
ping baidu.com
2. 配置 yum 源
xshell连接

cd /etc/yum.repos.d/
mkdir bak && mv *.repo bak
curl -O http://mirrors.aliyun.com/repo/Centos-7.repo && mv Centos-7.repo CentOS-Base.repo

yum clean all && yum makecache
3. 禁用防火墙
systemctl disable firewalld --now
4. 配置iptables服务
yum -y install iptables-services net-tools

启用IP转发
echo "net.ipv4.ip_forward = 1 " >> /etc/sysctl.conf
sudo sysctl -p

创建iptabables规则
sudo systemctl enable iptables --now
# 清空默认iptables规则
sudo iptables -F
# 放通全部
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
# ens33 为NAT网卡名称
sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
sudo sh -c 'iptables-save > /etc/sysconfig/iptables'
systemctl reload iptables
iptables -t nat -L


五、内网其他主机配置
打开k8s-master01
ping baidu.com
ip a

1. 配置网络
vi /etc/sysconfig/network-scripts/ifcfg-ens32
将网关指向 netshare 即可。DNS要用公共DNS。保存退出

2. 重启网卡测试
systemctl restart network
ping baidu.com
yum -y install net-tools

netstat -nr

3. 另外两台主机配置相同


至此,内网主机可以上网了。
说明:这里我们的DNS1和DNS2都设置为了公共DNS。如果不想使用公共DNS,那么可以在netshare主机上,安装bind,启用named(DNS服务)。然后内网的主机DNS1就可以与网关地址一致了(192.168.20.1)。
结语
鼓捣了几个小时,因为之前配置过,感觉这次应该很简单。
果然还是遇到问题了,能ping通baidu.com的ip,就是ping不通域名,DNS也设置了,一直以为写错了,后来发现是iptables拦住了。清空iptables规则后,就好了。
192.168.20.1 > 192.168.20.11: ICMP host 114.114.114.114 unreachable - admin prohibited, length 63
IP (tos 0x0, ttl 63, id 6114, offset 0, flags [DF], proto UDP (17), length 55)
192.168.20.11.58190 > 114.114.114.114.53: [udp sum ok] 49312+ A? baidu.com. (27)
希望可以帮到你!

文章详细介绍了如何在Kubernetes集群中,通过Linux的iptables配置,让VMware中的虚拟机通过NAT模式上网,以及如何设置网关和DNS。作者还分享了解决DNS问题和iptables拦截的经验。




557

被折叠的 条评论
为什么被折叠?



