如何正确configuration防火墙/ NAT

我正在尝试按照以下教程设置KVM虚拟机: https : //sandilands.info/sgordon/linux-servers-as-kvm-virtual-machines

我无法正确configuration防火墙/ NAT。 如果我正确理解教程,IP 192.168.1.100应该被转发到192.168.122.100。 但是我得到“连接被拒绝”的错误。 你能告诉我我做错了什么吗?

边注:

  • 192.168.1.10和教程中的192.168.1.2是一样的
  • 192.168.1.100与教程中的192.168.1.10相同

我的界面configuration(ifconfig输出):

enp1s0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/xx Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:xxxxxx errors:0 dropped:0 overruns:0 frame:0 TX packets:yyyyyy errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:569834067 (569.8 MB) TX bytes:33729447 (33.7 MB) enp1s0:0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 

我申请的iptable规则:

 sudo iptables -t nat -I PREROUTING -d 192.168.1.100 -j DNAT --to-destination 192.168.122.100 sudo iptables -t nat -I POSTROUTING -s 192.168.122.100 -j SNAT --to-source 192.168.1.100 sudo iptables -I FORWARD -p tcp -d 192.168.122.100 --dport 22 -j ACCEPT sudo iptables -I FORWARD -p tcp -d 192.168.122.100 --dport 80 -j ACCEPT 

testing连接。 连接被拒绝。

 $ telnet 192.168.1.100 80 Trying 192.168.1.100... telnet: Unable to connect to remote host: Connection refused 

当从同一台机器连接时, PREROUTING链中的DNAT规则不会被执行。 作为路由器时,会影响通过主机的stream量。 您需要在OUTPUT链中添加DNAT规则。

您可以尝试添加如下的规则并重新执行testing:

 sudo iptables -t nat -I OUTPUT -d 192.168.1.100 -j DNAT --to-destination 192.168.122.100