OSX: Mimic Ubuntu IP маскируется через iptables с помощью ipfw

3387
DevNull

Добрый день,

Я пытаюсь повторить настройку между маршрутизатором и ПК с Ubuntu, и на моем MacBook работает такая же настройка (10.6, Snow Leopard).

Во-первых, у меня есть маршрутизатор с портом USB. Когда я подключаю его к своему компьютеру Ubuntu, он создает RNDIS-соединение, позволяющее мне подключаться к маршрутизатору через USB-кабель через IP-соединение. Когда я подключаю его к компьютеру через USB, ему присваивается IP-адрес 172.16.84.1, и при наборе текста появляется новый адаптер ifconfig. Я могу тогда SSH в устройство через ssh admin@172.16.84.1.

Когда я вхожу в устройство, я сбрасываю маршруты, затем создаю маршрут по умолчанию:

admin@localhost> route -f admin@localhost> route add default 172.16.84.2 

Теперь на моей машине с Ubuntu я использую iptables для включения маскировки IP:

root@Valhalla> sudo iptables -t nat -A POSTROUTING -s 172.16.84.2 -j MASQUERADE 

После того, как все это будет сделано, маршрутизатор имеет доступ в Интернет через USB-соединение с моим ПК.

Я пытаюсь повторить эту точную настройку на моем MacBook (Snow Leopard), но iptablesне существует для OSX, даже нет версии для Macports. Я рассмотрел другие вопросы о StackOverflow, которые касаются использования ipfwкоманды, которая, очевидно, работает в качестве замены для замены iptables. Тем не менее, синтаксис значительно отличается, и я в значительной степени потерян.

Есть ли у кого-нибудь опыт работы с ipfwнекоторыми предложениями о том, как я могу сделать это и создать NAT-соединение через IP-маскарадинг, как я мог бы с моим компьютером Ubuntu?

Спасибо за помощь.

2

2 ответа на вопрос

1
NauT

почему вы просто не пользуетесь простым доступом в интернет на вашем macosx? Системные настройки> Общий доступ> Общий Интернет

для ipfw nat есть правила (латы говорят, что ваш интернет en0 и локальный интерфейс en1)

  1. sysctl -w net.inet.ip.fw.one_pass = 1 (вам нужно быть пользователем root)
  2. sysctl -w net.inet.ip.forwarding = 1
  3. / sbin / ipfw add 1040 разрешить ip от любого к любому через en1 (разрешить все, что будет проходить через локальный интерфейс)
  4. / sbin / ipfw добавить divert natd все из любого в любое через en0
  5. / sbin / ipfw add pass all из любого в любой natd -интерфейс en0 (где en0 ваш исходящий интерфейс)
  6. / usr / sbin / natd -interface en0 (сам nat)
Это близко к тому, что я пытаюсь сделать, но шаги 3 и 4 выдавали «плохая команда / файл не найден». Это команды sysctl или ipfw? DevNull 11 лет назад 0
это команды ipfw NauT 11 лет назад 0
Первые три команды работают, но у четвертой проблемы: local $> ipfw nat 1 log config, если en1 сбрасывает same_ports deny_in ipfw: плохая команда `nat ' DevNull 11 лет назад 0
хорошо, похоже, что я допустил ошибку, пытаясь использовать тот же набор правил, что и в BSD на OSX, здесь мы идем с правильной командой / sbin / ipfw add divert natd all от любого к любому через en0 / sbin / ipfw add pass all от любого к любому natd -интерфейсу en0 (где en0 ваш исходящий интерфейс) NauT 11 лет назад 0
Все, кроме шага 5, сработало:> sudo / sbin / ipfw add pass all из любого в любой natd -интерфейс en0 ipfw: нераспознанная опция [-1] -interface \ n DevNull 11 лет назад 0
без шага 5 но с шагом 6 nat, вероятно, должен работать? это сработало? NauT 11 лет назад 0
Неудачно. Маршрутизатор не может ни пропинговать определенные IP-адреса, ни имена хостов. DevNull 11 лет назад 0
давайте [продолжим обсуждение в чате] (http://chat.stackexchange.com/rooms/6730/discussion-between-naut-and-dogbert) NauT 11 лет назад 0
Ребята, можно ли опубликовать окончательное решение здесь? Спасибо sukhvir 9 лет назад 0
1
zmo

Что ж, самый простой способ сделать это с помощью OSX - просто System Preferences-> Sharing-> Internet Sharing. Вы проверяете Internet Sharingи настраиваете его так, чтобы оно указывало Share your connection from Ethernet 2(как я полагаю, ваше сетевое устройство USB выглядит так), To computers using Ethernet(как я полагаю, вы хотите, чтобы ваша локальная сеть была подключена к Ethernet, в противном случае выберите аэропорт или что-нибудь еще подходящее).

Бородатый способ сделать это - использовать ipfw и route. Простой поиск в Google дает хорошее руководство по обоим методам по следующему URL:

http://www.ibiblio.org/macsupport/ipfw/ (путь командной строки - после способа GUI)

НТН

Я не знаком с термином "бородатый путь". Что это значит? Я ищу программный подход без GUI. DevNull 11 лет назад 0
«Бородатый» - это шутка, чтобы сказать «для настоящих мужчин, у которых есть борода» :-) для подхода без использования GUI, вы можете использовать ссылку, которую я вам дал. В этой ссылке они даже показывают, как вы можете настроить вещи с помощью пользовательского интерфейса, а затем распечатать правила, чтобы иметь возможность их воспроизвести позже. zmo 11 лет назад 0