web-dev-qa-db-ja.com

VirtualBox-インターネットを使用した「ホストのみ」

大丈夫友達!今回は本当に助けていただければ幸いです! = |

VirtualBoxバーチャライザーを使用しており、[を使用してゲストマシンがインターネットにアクセスできるようにしようとしています。 〜#〜] only [〜#〜]「ホストのみ」のネットワークインターフェース(VirtualBox)。

https://www.virtualbox.org/manual/ch06.html の公式ドキュメントによると、「ホスト専用」ネットワークインターフェイスを使用すると、次の「ネットワークモード」(アクセス)があります。 。

VM  <-> Host     | YES
VM1 <-> VM2      | YES
VM   -> Internet | NO

しかし、インターネット上にはたくさんののドキュメントがありますホストマシンで次の「トリック」/「回避策」(例)を使用して、ゲストマシンからインターネットに(「ホストのみ」のインターフェイスのみを使用して)アクセスできます。

Sudo iptables -A FORWARD -o <Host_INTERFACE_WITH_INTERNET> -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
Sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Sudo iptables -A POSTROUTING -t nat -j MASQUERADE
Sudo sysctl -w net.ipv4.ip_forward=1

私は多くの例をテストしました。 iptables.serviceは私のホストマシンで正しく実行されています。 私は何を間違っていますか?

私のホストはLinuxManjaro(Linux Archベース)です。

どうもありがとう!

以下は、私が言及した「トリック」/「回避策」に関する情報を含むいくつかの情報源です...

http://archlinux.org.ru/forum/topic/2219/http://nerdbynature.de/s9y/2015/06/09/VirtualBox-switching-to-Host -only-networkinghttps://askubuntu.com/questions/293816/in-virtualbox-how-do-i-set-up-Host-only-virtual-machines-that-c​​an-access -the-inhttps://cuckoo.sh/docs/installation/Host/routing.htmlhttps://downloads.cuckoosandbox.org/docs/installation/guest /network.htmlhttps://github.com/cuckoosandbox/cuckoo/issues/1376https://jackal777.wordpress.com/2012/02/13/internet -access-in-virtualbox-Host-only-networking /https://kyrofa.com/posts/virtualbox-internet-access-with-Host-only-networkhttps://precisionsec.com/virtualbox-Host-only-network-cuckoo-sandbox-0-4-2/Virtualbox NATおよびホストのみの接続https://unix.stackexchange.com/questions/74663/virtualbox-nat-Host-only-adapterhttps://www.howtogeek.com/howto/4922/ week-in-geek-the-fixing-slow-internet-in-virtualbox-xp-guest-edition /https:/ /www.rffuste.com/tag/cuckoo/https://www.virtualbox.org/manual/ch06.html

以下は、私がテストした[〜#〜]多くの[〜#〜]の例の一部です...

 > --------------------------------------------
Sudo iptables -t nat -I POSTROUTING -s 192.168.56.0/24 -j MASQUERADE
Sudo sysctl net.ipv4.ip_forward=1
Sudo iptables -P FORWARD ACCEPT
Sudo iptables -t nat -P POSTROUTING ACCEPT
 < --------------------------------------------
 > --------------------------------------------
Sudo iptables -A FORWARD -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
Sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Sudo iptables -A POSTROUTING -t nat -j MASQUERADE
Sudo sysctl -w net.ipv4.ip_forward=1
 < --------------------------------------------
 > --------------------------------------------
Sudo iptables -A FORWARD -o <Host_INTERFACE_WITH_INTERNET> -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
Sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Sudo iptables -A POSTROUTING -t nat -j MASQUERADE
Sudo sysctl -w net.ipv4.ip_forward=1
 < --------------------------------------------
 > --------------------------------------------
Sudo iptables -A FORWARD -o <Host_INTERFACE_WITH_INTERNET> -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
Sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Sudo iptables -t nat -F POSTROUTING
Sudo iptables -t nat -A POSTROUTING -o <Host_INTERFACE_WITH_INTERNET> -j MASQUERADE
Sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
 < --------------------------------------------
 > --------------------------------------------
Sudo iptables -A FORWARD -o <Host_INTERFACE_WITH_INTERNET> -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
Sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Sudo iptables -A POSTROUTING -t nat -j MASQUERADE
Sudo sysctl -w net.ipv4.ip_forward=1
Sudo sysctl -w net.ipv4.conf.all.proxy_arp=1
 < --------------------------------------------
 > --------------------------------------------
Sudo sysctl -w net.ipv4.ip_forward=1
Sudo iptables -F
Sudo iptables -t nat -A POSTROUTING -o <Host_INTERFACE_WITH_INTERNET> -j MASQUERADE
Sudo iptables -A FORWARD -i <Host_INTERFACE_WITH_INTERNET> -o vboxnet0 -j ACCEPT
Sudo iptables -A FORWARD -i vboxnet0 -o <Host_INTERFACE_WITH_INTERNET> -j ACCEPT
 < --------------------------------------------
 > --------------------------------------------
Sudo iptables -A FORWARD -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
Sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Sudo iptables -A POSTROUTING -t nat -j MASQUERADE
Sudo sysctl -w net.ipv4.ip_forward=1
 < --------------------------------------------
 > --------------------------------------------
Sudo bash -c "printf \"net.ipv4.ip_forward = 1\nnet.ipv4.conf.all.proxy_arp = 1\n\" >> /etc/sysctl.conf"
Sudo sysctl -p
Sudo iptables -t filter -I FORWARD --in-interface vboxnet0 --out-interface <Host_INTERFACE_WITH_INTERNET> --source 192.168.56.0/24 -j ACCEPT
Sudo iptables -t filter -I FORWARD --in-interface <Host_INTERFACE_WITH_INTERNET> --out-interface vboxnet0 --destination 192.168.56.0/24 -j ACCEPT
Sudo iptables -t nat -I POSTROUTING -o <Host_INTERFACE_WITH_INTERNET> -j MASQUERADE
 < --------------------------------------------
 > --------------------------------------------
Sudo iptables -A POSTROUTING -o enp+ -t nat -j MASQUERADE
Sudo iptables -A POSTROUTING -o wlp+ -t nat -j MASQUERADE
 < --------------------------------------------
 > --------------------------------------------
Sudo iptables -A PREROUTING -t mangle -i vboxnet+ -j MARK --set-mark 1
Sudo iptables -A POSTROUTING -o enp+ -t nat -m mark --mark 1 -j MASQUERADE
Sudo iptables -A POSTROUTING -o wlp+ -t nat -m mark --mark 1 -j MASQUERADE
 < --------------------------------------------
 > --------------------------------------------
Sudo iptables -t nat -A POSTROUTING -o <Host_INTERFACE_WITH_INTERNET> -s 192.168.56.0/24 -j MASQUERADE
Sudo iptables -P FORWARD DROP
Sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
Sudo iptables -A FORWARD -s 192.168.56.0/24 -j ACCEPT
Sudo iptables -A FORWARD -s 192.168.56.0/24 -d 192.168.56.0/24 -j ACCEPT
 < --------------------------------------------
 > --------------------------------------------
Sudo sysctl -w net.ipv4.ip_forward=1
Sudo iptables -A FORWARD -o <Host_INTERFACE_WITH_INTERNET> -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
Sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Sudo iptables -t nat -A POSTROUTING -s 192.168.56.0/24 -o <Host_INTERFACE_WITH_INTERNET> -j MASQUERADE
Sudo iptables -I INPUT 1 -i vboxnet0 -j ACCEPT
 < --------------------------------------------
 > --------------------------------------------
echo 1 | Sudo tee /proc/sys/net/ipv4/ip_forward
Sudo sysctl -p /etc/sysctl.conf
Sudo iptables -I FORWARD -i vboxnet0 -d 192.168.56.0/255.255.255.0 -j DROP
Sudo iptables -A FORWARD -i vboxnet0 -s 192.168.56.0/255.255.255.0 -j ACCEPT
Sudo iptables -A FORWARD -i <Host_INTERFACE_WITH_INTERNET> -d 192.168.56.0/255.255.255.0 -j ACCEPT
Sudo iptables -t nat -A POSTROUTING -o <Host_INTERFACE_WITH_INTERNET> -j MASQUERADE
 < --------------------------------------------
2
Eduardo Lucio

前書き

VirtualBoxの単一のネットワークインターフェイス(「ホストのみ」)を使用して、ゲストに「VM <->ホスト」、「VM1 <-> VM2」、「VM->インターネット」にアクセスするための完全なガイドです。

重要:すべてのコマンドを「root」として実行します。

EXECUTE ONHost

注:テンプレートとしてManjaro(Archベース)ホストを使用します。他のディストリビューションの調整や変更が必要になる場合があります。

Iptablesテンプレート設定ファイルをコピーする必要があります...

$ cp /etc/iptables/empty.rules /etc/iptables/iptables.rules

...「iptables.service」を開始できます。

「iptables.service」を有効にして開始します...

$ systemctl enable --now iptables.service

IP転送を有効にする...

$ sysctl -w net.ipv4.ip_forward=1
$ printf "net.ipv4.ip_forward=1\n" >> /etc/sysctl.d/30-ipforward.conf

次のiptablesルールを追加します。これにより、パケットがホスト( "vboxnet0")を介してインターネットに転送されます...

$ iptables -t filter -I FORWARD --in-interface vboxnet0 --out-interface <Host_INTERFACE_WITH_INTERNET> --source 192.168.56.0/24 -j ACCEPT
$ iptables -t filter -I FORWARD --in-interface <Host_INTERFACE_WITH_INTERNET> --out-interface vboxnet0 --destination 192.168.56.0/24 -j ACCEPT
$ iptables -t nat -I POSTROUTING -o <Host_INTERFACE_WITH_INTERNET> -j MASQUERADE

...[〜#〜]または[〜#〜]次のiptablesルールを追加します...

$ iptables -t nat -I POSTROUTING -s 192.168.56.0/24 -j MASQUERADE
$ iptables -P FORWARD ACCEPT
$ iptables -t nat -P POSTROUTING ACCEPT

注:「テンプレートII」では、ホストインターフェイスの名前を通知する必要はありません(<Host_INTERFACE_WITH_INTERNET>)およびVirtualBoxインターフェースの名前(vboxnet0)。このようにして、インターネットを備えたホストインターフェイスはすべて機能します。つまり、インターネットを備えたインターフェイスの名前を変更するたびに調整する必要はありません。この例は、有線インターフェース(例:enp4s0f2)から無線インターフェース(例:wlp3s0)に、またはその逆に変更する場合です。

追加の質問:「テンプレートI」を使用することに利点があるかどうかわからないため、「iptables」を構成する2つの方法を紹介しました。任意のコメント?

ヒント:ネットワークインターフェイスの名前を確認するには(<Host_INTERFACE_WITH_INTERNET>)インターネットを使用している場合は、「ipa」コマンドを使用します。

ルールをiptables構成に保存し、サービスを再起動します...

$ iptables-save > /etc/iptables/iptables.rules
$ systemctl restart iptables.service

ホストで「dnsmasq」を有効にして起動します。

$ systemctl enable --now dnsmasq.service

注:「dnsmasq」は小さなキャッシュDNSプロキシおよびDHCP/TFTPサーバーです。

EXECUTE ON[〜#〜] guest [〜#〜]

注:CentOS7ゲストをテンプレートとして使用します。他のディストリビューションの調整や変更が必要になる場合があります。

モデルに従ってネットワークインターフェースを構成します...

注:ネットワーク構成ファイルは「/ etc/sysconfig/network-scripts /」フォルダーパスにあります。

BOOTPROTO=static
DEVICE=<NETWORK_INTERFACE_NAME>
DNS1=<Host-ONLY_Host_IP>
GATEWAY=<Host-ONLY_Host_IP>
IPADDR=<Host-ONLY_GUEST_IP>
IPV6INIT=NO
NETMASK=255.255.255.0
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
USERCTL=NO
ZONE=

例えば。:

BOOTPROTO=static
DEVICE=eno16777736
DNS1=192.168.56.1
GATEWAY=192.168.56.1
IPADDR=192.168.56.101
IPV6INIT=NO
NETMASK=255.255.255.0
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
USERCTL=NO
ZONE=

ネットワークサービスを再起動します...

$ systemctl restart network.service

テストする...

$ curl http://www.google.com

参照

2
Eduardo Lucio