(Перенесено с https://serverfault.com/questions/895250/setting-up-ubuntu-linux-16-04-as-a-router-within-a-vm)

Я хочу настроить виртуальную машину Ubuntu в качестве маршрутизатора, на котором работает atcd, чтобы я мог проводить целевое тестирование одного устройства в различных условиях сети. Я получил работу частей, но застрял с получением шлюза для маршрутизации моих пакетов.

Суть того, что я пробовал:

  • Создайте виртуальную машину Ubuntu 16.04 ("router") на хосте Ubuntu 16.04 ("laptop")
  • Создано два сетевых адаптера для виртуальной машины, оба подключены к одному адаптеру WiFi хоста.
  • Установите первый сетевой адаптер (enp0s3), который будет статически настроен, чтобы быть шлюзом, в 192.168.0.199
  • Установите второй сетевой адаптер (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 в качестве шлюза.

Теперь я могу подключиться к HTTP-серверу, работающему на router через 192.168.0.199 и 192.168.0.100 с других компьютеров в локальной сети, которые настроены на использование маршрутизатора Wifi в качестве шлюза (192.168.0.1). ,

test-device может пинговать хосты в Интернете, но не может настроить 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 ответ1

-1

Вы не активировали переадресацию IP в sysctl ...

Чтобы выполнить IP-маршрутизацию в Ubuntu Linux:

sudo nano sysctl.conf

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

sudo sysctl -p

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .