首页 > 其他分享 >KVM的NAT 映射篇

KVM的NAT 映射篇

时间:2023-06-16 10:47:17浏览次数:33  
标签:iptables 映射 -- 0.0 KVM ACCEPT NAT FORWARD virbr0

需求如下,kvm安装后默认的NAT是192.168.122.0 ,此时假如物理网卡为专线地址10.0.0.1,此时需要将192.168.122.0段的虚拟机的ssh端口映射到10.0.0.1的10022端口上,可以执行下面2条命令

firewall-cmd --add-port=10022/tcp
firewall-cmd --add-forward-port=port=10022:proto=tcp:toport=22:toaddr=192.168.122.x
但是,执行后会发现并没有生效,此时执行iptables -F 发现可以达到目的,但是会清理掉其他的iptables规则  。

通过多次排查后发现问题的症结是因为firewall-cmd 在每次重启firewalld服务或者执行firewall-cmd --reload后都会形成一系列规则,这其中的某一条规则阻止了映射行为

iptables -vnL FORWARD
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0
0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 FORWARD_direct all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 FORWARD_IN_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 FORWARD_IN_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 FORWARD_OUT_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 FORWARD_OUT_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

就是这条规则导致外面的数据无法流转到br0网桥上

此时可以在他前面增加一条规则,去放行相应的流量

iptables -I FORWARD 4 -i eth0 -o virbr0 -p tcp --dport 22 -j ACCEPT。

然后会遇到下一个问题,如何保存iptables 

iptables-save > /etc/sysconfig/iptables

然后写一个脚本 在每次重启后把iptables还原

脚本内容如下

#!/bin/bash

# Wait for firewalld service to be loaded

while ! systemctl is-active firewalld >/dev/null 2>&1; do
sleep 1
done

# Wait for additional time to ensure that the firewall has been initialized
sleep 10

# Restore iptables rules from file
/usr/sbin/iptables-restore < /etc/sysconfig/iptables

然后再rclocal文件中调用脚本即可

cat /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

#touch /var/lock/subsys/local
#iptables-restore < /etc/sysconfig/iptables
/root/11.sh

记得要给rcloca赋予执行权限

chmod +x /etc/rc.d/rc.local

此时重启后NAT可实现

 

标签:iptables,映射,--,0.0,KVM,ACCEPT,NAT,FORWARD,virbr0
From: https://www.cnblogs.com/ruiruiblog/p/17484968.html

相关文章

  • Hibernate学习笔记
    大小写不敏感持久化类一般被定义为JavaBean,这是推荐的设计,但是并不是必须的。Hibernate也可以直接访问这些field。所有的持久化类(persistentclasses)都要求有无参的构造器,因为Hibernate必须使用Java反射机制来为你创建对象。映射文件一个映射文件看起来像这样<hibernate-mapping>......
  • 实时渲染常用纹理技术总结:视差映射
    【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!一、概述视差映射(ParallaxMapping)是一种类似于法线贴图的纹理技术,它们都能显著增强模型/纹理表面细节并赋予其凹凸感,但法线贴图所带来的凹凸感不会......
  • kvm 与 vmware 镜像互相转化
    将qcow2转换为OVF:qemu-imgconvert-Ovmdk要转换的qcow2镜像.qcow2转换后的.vmdk镜像将OVF转换为qcow2:qemu-imgconvert-fvmdk要转换的.vmdk镜像转换后的qcow2镜像.qcow2举个例子:将kvm镜像test.qcow2转换为vmware的test.vmdk镜像:qemu-imgconvert-Ovmdktest.......
  • (转)主题:Hibernate的检索策略
    立即检索  类级别的立即加载关联对象 关联级别的立即加载指定对象的关联对象可以设定批量检索数量延时检索  类级别的延时加载关联对象 关联级别的延时加载指定对象的关联对象可以设定批量检索数量  迫切左外连接检索 类级别不适用......
  • 如何在Spring Boot中使用Hibernate Natural ID
    首先,让我们关注所需类的实现。完成所有这些后,我们将能够为具有自然ID的实体提供存储库。用自然ID编写实体让我们考虑以下具有自动生成ID和自然ID(code列)的实体。这只是一个使用一个自然ID的典型实体@NaturalId:@实体publicclassProductimplementsSerializable{priva......
  • CAM(类激活映射),卷积可视化,神经网络可视化,一个库搞定,真的简单的不能再简单
    文章目录前言1.`pytorch-grad-cam`这个库可以做什么?2.安装`pytorch-grad-cam`3.具体使用案例3.1选择目标层(TargetLayer)3.2单个图像CAM热力图3.3批处理图像3.4一个CAM计算模板前言18年,我刚入门的时候,写了这样一篇文章,想要看之前那一篇的点击这里现在都还有很多朋友在看,但我......
  • Hibernate @Transient
    @Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性.如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic示例: //根据birth计算出age属性 @TransientpublicintgetAge(){<spanstyle="font-fa......
  • 浅聊一下 C#程序的 内存映射文件 玩法
    一:背景1.讲故事前段时间训练营里有朋友问内存映射文件是怎么玩的?说实话这东西理论我相信很多朋友都知道,就是将文件映射到进程的虚拟地址,说起来很容易,那如何让大家眼见为实呢?可能会难倒很多人,所以这篇我以自己的认知尝试让大家眼见为实。二:如何眼见为实1.我想象的文件映射......
  • React Native In Action中的demo的运行
     我用了最新的xcode和新的reactnative。Chapter6: Navigation这一章中的事例跑不起来,应该是程序用了就的版本的reactnavigation("react-navigation":"^2.0.1"),同时关于Navigation的用法也做了不小的改动,因此需要重新看相关文档改写。参考:https://reactnavigation.org/docs......
  • 【pyqt】报错TypeError: decorated slot has no signature compatible with RecorderP
    一、场景  运行pyqt报错TypeError:decoratedslothasnosignaturecompatiblewithRecorderPlayerProxy.sig_mode_update[object] 二、代码@Slot(int)defupdate_mode(self,mode):...... 三、解决方法  将int去除即可  参考链接:p......