我正在尝试按照以下教程设置KVM虚拟机: https : //sandilands.info/sgordon/linux-servers-as-kvm-virtual-machines
我无法正确configuration防火墙/ NAT。 如果我正确理解教程,IP 192.168.1.100应该被转发到192.168.122.100。 但是我得到“连接被拒绝”的错误。 你能告诉我我做错了什么吗?
边注:
我的界面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