Ubuntu Linux 16.04 を VM 内のルーターとして設定する

Ubuntu Linux 16.04 を VM 内のルーターとして設定する

(移行元:https://serverfault.com/questions/895250/setting-up-ubuntu-linux-16-04-as-a-router-within-a-vm

Ubuntu VMをルーターとしてセットアップして、アットCDさまざまなネットワーク条件下で単一のデバイスを対象にしたテストを実行できます。一部は動作していますが、ゲートウェイでパケットをルーティングする方法がわかりません。

私が試したことの要点:

  • "router"Ubuntu 16.04 ホスト ( "laptop")上にUbuntu 16.04 VM ( ) を作成します。
  • VM用に2つのNICを作成し、両方をホストの単一のWiFiアダプタにブリッジしました。
  • 最初のNIC(enp0s3)をゲートウェイとして静的に構成し、192.168.0.199に設定します。
  • 2番目のNIC(enp0s8)をDHCP経由で自動構成するように設定します(192.168.0.100など)。
  • 以下のiptablesルールを使用しました(ここそしてここ) の上router iptables -t nat -A POSTROUTING -o enp0s8 -j MASQUERADE iptables -A FORWARD -i enp0s8 -o enp0s3 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i enp0s3 -o enp0s8 -j ACCEPT
  • テスト対象のデバイス/ホスト ( "test-device") は、静的 IP 192.168.0.77 に設定され、ゲートウェイとして 192.168.0.199 を使用するように構成されています。

routerこの時点で、 Wifi ルーターをゲートウェイ (192.168.0.1) として引き続き使用するように構成されている LAN 上の他のマシンから、192.168.0.199 と 192.168.0.100 の両方を介して実行されている HTTP サーバーにアクセスできます。

test-deviceインターネット上のホストに ping することはできますが、それらのホストへの TCP 接続を確立することはできません (たとえば、curl www.google.com「宛先に到達できません」というエラーで失敗します)。

他にも共有する価値のあるものがいくつかあります:

iptables設定router:

root# iptables -L -v
Chain INPUT (policy ACCEPT 12012 packets, 5058K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  enp0s8 enp0s3  anywhere             anywhere             state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  enp0s3 enp0s8  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT 3220 packets, 271K bytes)
 pkts bytes target     prot opt in     out     source               destination         

ip routeエントリー

root# ip route
default via 192.168.0.1 dev enp0s3 onlink 
169.254.0.0/16 dev enp0s3  scope link  metric 1000 
192.168.0.0/24 dev enp0s3  proto kernel  scope link  src 192.168.0.199 
192.168.0.0/24 dev enp0s8  proto kernel  scope link  src 192.168.0.121 

次に何をしたらよいか分からず困っています。助けていただければ幸いです。

答え1

あなたIP転送を有効にしていないsysctl 内...

IPルーティングを実行するUbuntu Linuxの場合:

sudo nano sysctl.conf

net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1

sudo sysctl -p

関連情報