场景:ubuntu宿主机(192.168.0.10)通过kvm NAT模式创建了虚拟机A(192.168.122.114),需要通过宿主机用端口转换方式访问虚拟机A的3389端口和9000端口
iptables -t nat -F #删除指定链或所有链的规则,
iptables -t nat -X #删除指定的用户自定义链
iptables -L
#添加允许入站流量的规则
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -L
#iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -L --line-numbers
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#把10:3306映射到114:3306
iptables -t nat -I PREROUTING -p tcp -d 192.168.0.10 --dport 3306 -j DNAT --to-destination 192.168.122.114:3306
#将数据转发到本机的虚拟机网卡设备上。 192.168.122.0/24 是kvm虚拟机网卡地址
iptables -I FORWARD -m state -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -L --line-numbers
telnet 192.168.0.10 3306
#把10:9000映射到114:9000
iptables -t nat -I PREROUTING -p tcp -d 192.168.0.10 --dport 9000 -j DNAT --to-destination 192.168.122.114:9000
iptables -t nat -I PREROUTING -p tcp -d 192.168.0.10 --dport 80 -j DNAT --to-destination 192.168.122.114:80
iptables -t nat -I PREROUTING -p tcp -d 192.168.0.10 --dport 3389 -j DNAT --to-destination 192.168.122.114:3389
#保存和恢复规则
#重新启动云服务器,所有这些 iptables 配置都将被擦除。为防止出现这种情况,需要将规则保存到文件中。
sudo iptables-save > /etc/iptables/rules.v4
# 覆盖当前规则 如果开机没加载iptables规则,可执行下一行命令恢复以前保存的规则
sudo iptables-restore < /etc/iptables/rules.v4
# 添加新规则,保留当前规则
sudo iptables-restore -n < /etc/iptables/rules.v4
#设置iptables开机自启,不知道为什么没起作用
#pre-up iptables-restore < /etc/iptables/rules.v4
#关闭防火墙 禁用iptables
sudo ufw disable
# 开启防火墙
sudo ufw enable