
マイコンピュータが新しくインストールされましたUbuntu 20.04.3 LTS
。
kvmをインストールしました。
sudo apt -y install bridge-utils cpu-checker libvirt-clients libvirt-daemon qemu qemu-kvm
virt-managerを使って「ubuntu20.04」という新しい仮想マシンを作成しました。
Id Name State
-----------------------------
7 ubuntu20.04 running
うまくいきます。デフォルトのネットワーク設定があります。
Name State Autostart Persistent
--------------------------------------------
default active yes yes
次のコマンドを使用して、仮想マシンの静的IPアドレスを設定するようにネットワークファイルを編集しました。
> virsh net-edit default
<network>
<name>default</name>
<uuid>57bd2ef8-5ef9-405e-b631-efdd10a12ca8</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:7c:ae:96'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
<host mac='52:54:00:21:02:54' name='ubuntu20.04' ip='192.168.122.101'/>
</dhcp>
</ip>
</network>
何の問題もなく仮想マシンにSSHで接続できます。ssh 192.168.122.101
私のホストにはパブリックIP 192.168.1.85があります。
ifconfig
enp3s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.85 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::9e0a:64e6:7542:cdc4 prefixlen 64 scopeid 0x20<link>
ether 0c:4d:e9:d4:35:20 txqueuelen 1000 (Ethernet)
RX packets 306030 bytes 451106893 (451.1 MB)
RX errors 0 dropped 3303 overruns 0 frame 0
TX packets 19624 bytes 2100797 (2.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 19
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 1792 bytes 176567 (176.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1792 bytes 176567 (176.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:7c:ae:96 txqueuelen 1000 (Ethernet)
RX packets 13458 bytes 837489 (837.4 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 68353 bytes 428375346 (428.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::fc54:ff:fe21:254 prefixlen 64 scopeid 0x20<link>
ether fe:54:00:21:02:54 txqueuelen 1000 (Ethernet)
RX packets 152 bytes 15868 (15.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 718 bytes 44209 (44.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ターゲット:今私の目標は、ローカルネットワーク上の他のマシンから仮想マシンのSSHにアクセスすることです。ホストポート2222(192.168.1.85:2222)に入ってくるすべてのトラフィックを仮想マシン(192.168.122.101:22)にリダイレクトしてこれを達成したいと思います。
私は(Ubuntuのインストール後のデフォルト値)以下を持っています:
net.ipv4.ip_forward = 1
複数のウェブサイトの指示に従おうとしましたが、成功しませんでした。たとえば、私はフォローしましたこのチュートリアルこれは、Ubuntuでデフォルトで有効になっているUFWの使用に基づいているためです。既定では、この方法は以下に基づいています。
- フックファイル(qemu)を追加します。
/etc/libvirt/hooks/qemu
次のコンテンツが含まれています。
v=$(/sbin/iptables -L FORWARD -n -v | /usr/bin/grep 192.168.122.0/24 | /usr/bin/wc -l)
# avoid duplicate as this hook get called for each VM
#[ $v -le 2 ] &&
if [ $v -le 2]
then
/sbin/iptables -I FORWARD 1 -o virbr0 -m state -s 192.168.1.0/24 -d 192.168.122.0/24 --state N>
fi
- ファイルを編集して
/etc/ufw/before.rules
(上部に)以下を追加します。
:PREROUTING ACCEPT [0:0]
-A PREROUTING -d 192.168.1.85 -p tcp --dport 2222 -j DNAT --to-destination 192.168.122.101:22 -m comment --comment "VM2/OpenBSD SSH port forwarding"
COMMIT
最後に、このガイドラインに従って以下のiptablesを入手しました。
sudo iptables-save -t nat
# Generated by iptables-save v1.8.4 on Sat Jan 29 16:20:08 2022
*nat
:PREROUTING ACCEPT [268:56889]
:INPUT ACCEPT [129:22767]
:OUTPUT ACCEPT [1213:187394]
:POSTROUTING ACCEPT [1213:187394]
:LIBVIRT_PRT - [0:0]
-A PREROUTING -d 192.168.1.85/32 -p tcp -m tcp --dport 2222 -m comment --comment "VM2/OpenBSD SSH port forwarding" -j DNAT --to-destination 192.168.122.101:22
-A PREROUTING -d 192.168.1.85/32 -p tcp -m tcp --dport 2222 -m comment --comment "VM2/OpenBSD SSH port forwarding" -j DNAT --to-destination 192.168.122.101:22
-A PREROUTING -d 192.168.1.85/32 -p tcp -m tcp --dport 2222 -m comment --comment "VM2/OpenBSD SSH port forwarding" -j DNAT --to-destination 192.168.122.101:22
-A PREROUTING -d 192.168.1.85/32 -p tcp -m tcp --dport 2222 -m comment --comment "VM2/OpenBSD SSH port forwarding" -j DNAT --to-destination 192.168.122.101:22
-A POSTROUTING -j LIBVIRT_PRT
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
COMMIT
これはチュートリアルで得たものと互換性があるようです。ただし、転送されたポートを使用してVM-shhにログインしようとすると、次のエラーが発生します。
ssh 192.168.1.85 -p 2222
ssh: connect to host 192.168.1.85 port 2222: Connection refused
助けてくれてありがとう!