Сетевая установка пространства имен; Различные результаты между сценарием и руководством

Я испытываю затруднения при получении старого сценария, работающего снова в 16,04 после того, как dist-обновление, предыдущая установка была 14.04. Этот сценарий настраивает сетевое пространство имен для изоляции программ от основного сетевого интерфейса.

Быстрая схема какой, как предполагается, происходит:

  • Создайте сетевое пространство имен, названное как ns1.
  • Создайте пару интерфейсов veth, названных как veth1 и vpeer1
  • Интерфейс Move vpeer1 к сетевому пространству имен ns1
  • Присвойте IP-адрес для взаимодействия через интерфейс veth1 и поднимите его
  • Присвойте IP-адрес для взаимодействия через интерфейс vpeer1, поднимите его.
  • Поднимите интерфейс lo на сетевом пространстве имен ns1
  • Создайте маршрут по умолчанию между veth парами.
  • Изменение ip_forwarding к 1
  • Изменение iptables FORWARD кому: DROP и сброс, сброс iptables туземный.
  • Создайте запись для постмаршрутизации (ПОДМЕНЫ) и два ВПЕРЕД, записи создаются, это позволяет передавать трафика между внутренней и внешней частью сетевое пространство имен.

#!/usr/bin/env bash
set -x

NS="ns1"
VETH="veth1"
VPEER="vpeer1"
VETH_ADDR="10.200.1.1"
VPEER_ADDR="10.200.1.2"

if [[ $EUID -ne 0 ]]; then
echo "You must be root to run this script"
exit 1
fi

# Remove namespace if it exists.
ip netns del $NS &>/dev/null

# Create namespace
ip netns add $NS

# Create veth link.
ip link add ${VETH} type veth peer name ${VPEER}

# Add peer-1 to NS.
ip link set ${VPEER} netns $NS

# Setup IP address of ${VETH}.
ip addr add ${VETH_ADDR}/24 dev ${VETH}
ip link set ${VETH} up

# Setup IP ${VPEER}.
ip netns exec $NS ip addr add ${VPEER_ADDR}/24 dev ${VPEER}
ip netns exec $NS ip link set ${VPEER} up
ip netns exec $NS ip link set lo up
ip netns exec $NS ip route add default via ${VETH_ADDR}

# Enable IP-forwarding.
echo 1 > /proc/sys/net/ipv4/ip_forward

# Flush forward rules.
iptables -P FORWARD DROP
iptables -F FORWARD

# Flush nat rules.
iptables -t nat -F

# Enable masquerading of 10.200.1.0.
iptables -t nat -A POSTROUTING -s ${VPEER_ADDR} -o p119p1 -j MASQUERADE
iptables -A FORWARD -i p119p1 -o ${VETH} -j ACCEPT
iptables -A FORWARD -o p119p1 -i ${VETH} -j ACCEPT

p119p1 является моим адаптером Ethernet, изменением в любом, Ваш для тестирования.

Протестировать это соединение, когда операционный, ip netns exec ns1 ping 8.8.8.8 если это проверяет с помощью ping-запросов, это работает.

Когда выполнено как сценарий с yourscript.sh как корень, это не работает над 16,04. В 14,04 это действительно работало. При ручном вводе, строка для строки как корень (замена $ {переменные} при необходимости), это действительно работает над 16,04.

Я уверен, что не наткнулся на главный системный дефект, и я делаю что-то не так по сравнению со старым дистрибутивом. Моя ошибка, когда выполнено как сценарий, в основном это жалуется "Узел назначения, Недостижимый", по некоторым причинам это пропускает присвоение IP к veth1, когда выполнено как сценарий. Рассуждайте неизвестный мне.

Когда рабочие программы могут быть запущены в пространстве имен. Используя ip netns exec ns1 <command>. Разрешение того разделить отдельные программы на их собственную сеть VPN, также с помощью VPN в пространстве имен.

1
задан 3 February 2017 в 00:33

0 ответов

Другие вопросы по тегам:

Похожие вопросы: