linuxlinux创建仅主机,桥接,nat网卡
TheStoneFishlinux创建仅主机,桥接,nat网卡
一、创建仅主机网卡
1、创建一个网桥连接名和设备名均为onlylocal
1
| nmcli con add type bridge con-name onlylocal ifname onlylocal
|
2、给网桥设置一个IP(用于和连接网桥的虚拟机通信,如果不需要通信可以不设置)
1
| nmcli con mod onlylocal ipv4.addresses 192.168.0.100/24 ipv4.method manual
|
仅主机网卡的工作就相当于一个二层交换机,只进行局域网之间的通信
二、创建桥接网卡
1、创建一个网桥连接名和设备名均为br0
1
| nmcli con add type bridge con-name br0 ifname br0
|
2、设置设备名为eth0的网卡为br0的从网卡
1
| nmcli con add type bridge-slave ifname eth0 master br0
|
使用这个命令后,br0网卡会变为主网卡,导致无法上网,因为现在上网使用的是br0网卡,需要给br0分配一个ip地址用于上网
3、给br0网卡分配ip地址,根据自己的网络分配即可
手动分配
1
| nmcli con mod br0 ipv4.addresses 192.168.0.100/24 ipv4.method manual
|
使用dhcp分配
1
| nmcli con mod br0 ipv4.method auto
|
桥接网卡通过从网卡实时的接入到网络中,当虚拟机和外部通信的时候会直接将数据包从从网卡中发送出去(通过mac地址表实现)
三、创建nat网卡
1、创建一个网桥连接名和设备名均为nat0
1
| nmcli con add type bridge con-name nat0 ifname nat0
|
2、开启数据包转发
添加
生效配置
允许将nat0上发往外网的数据包转发给eth0
3、添加iptables规则
添加规则,用于将从eth0发出的数据包中的源地址修改为eth0网卡的地址(源地址伪装)
1
| iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
-t nat:选择 nat 表。NAT 表用于处理地址转换。
-A POSTROUTING:将规则追加到 POSTROUTING 链。这个链在数据包即将离开主机时处理数据包。
-o eth0:适用于从 eth0 接口发出的数据包。
-j MASQUERADE:执行源地址伪装。这意味着所有通过 eth0 离开主机的数据包都会被更改,使其源地址看起来像是来自主机的 eth0 接口。
添加规则,允许nat0预期发送给eth0的数据包通过
1
| iptables -A FORWARD -i nat0 -o eth0 -j ACCEPT
|
-A FORWARD:将规则追加到 FORWARD 链。这个链用于处理通过主机转发的数据包。
-i nat0:适用于从 nat0 接口进入的数据包。
-o eth0:指定这些数据包的目的地是 eth0 接口。
-j ACCEPT:接受(允许)这些数据包通过。
1
| iptables -A FORWARD -i eth0 -o nat0 -m state --state RELATED,ESTABLISHED -j ACCEPT
|
-i eth0:适用于从 eth0 接口进入的数据包。
-o nat0:指定这些数据包的目的地是 nat0 接口。
-m state:使用 state 模块匹配数据包的连接状态。
–state RELATED,ESTABLISHED:只接受那些处于“RELATED”(相关的,例如FTP数据连接)或“ESTABLISHED”(已建立的连接)状态的数据包。
-j ACCEPT:接受这些数据包通过。