Udostępnianie Internetu bez DHCP

11

Próbuję skonfigurować iMaca z systemem 10.6 jako mostek bezprzewodowy. Mam go działającego, ale muszę wyłączyć DHCP i pozwolić serwerowi DHCP mojej sieci podać adres IP podłączonych urządzeń. Nie mogę znaleźć sposobu na wyłączenie DHCP w Udostępnianiu połączenia internetowego. Czy ktoś wie, czy to jest możliwe? Zgaduję, że istnieje klucz, który można ustawić /Library/Preferences/SystemConfiguration/com.apple.nat.plist, ale nie mogę go znaleźć. Sprawdziłem stronę podręcznika dla InternetSharing i nie wspomina nic użytecznego, z wyjątkiem zmiany podsieci używanej przez serwer DHCP.

Matthew Boynes
źródło
AFAIK, OS X Udostępnianie Internetu robi tylko NAT, a nie prawdziwe mostkowanie. Tak więc urządzenia używające iMaca do łączności znajdują się we własnej sieci prywatnej, a iMac działa jak router. Z tego powodu podłączone urządzenia muszą uzyskać adres IP z iMaca. Nie będą mogli skontaktować się z twoim istniejącym serwerem DHCP. Nie jestem wystarczająco zaznajomiony z odwagą Udostępniania Internetu, aby się upewnić, ale to moja najlepsza quasi-oparta domysł.
robmathers,

Odpowiedzi:

2

Ze strony podręcznika bootpd:

Dla każdej właściwości dhcp_enabled, bootp_enabled, old_netboot_enabled, netboot_enabled i przekaźnik_enabled, odpowiednią usługę można włączyć lub wyłączyć dla wszystkich interfejsów lub tylko dla określonego zestawu interfejsów. Aby włączyć lub wyłączyć globalnie, użyj odpowiednio wartości logicznej true lub false. Aby włączyć tylko dla określonego zestawu interfejsów, użyj albo ciągu, dla pojedynczego interfejsu, albo tablicy ciągów, jednego elementu dla każdego interfejsu.

 For example, to enable DHCP on interfaces en0 and en1, disable BOOTP on all
 interfaces, enable NetBoot on en1, and enable relay agent on interface en1,
 /etc/bootpd.plist could contain:
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
         <key>bootp_enabled</key>
         <false/>
         <key>dhcp_enabled</key>
         <array>
                 <string>en0</string>
                 <string>en1</string>
         </array>
         <key>netboot_enabled</key>
         <string>en1</string>
         <key>relay_enabled</key>
         <array>
                 <string>en1</string>
         </array>
 </dict>
 </plist>

Aby globalnie wyłączyć dhcp, użyj:

    <key>dhcp_enabled</key>
    <false/>

Nie zapomnij wysłać SIGHUP (kill -1)do bootpdpo dokonaniu zmian w pliku konfiguracyjnym.

dcow
źródło
1

InternetSharing wykonuje 2 zadania:

  • dynamiczne dostarczanie adresu IP urządzeniom podłączonym do wtórnego interfejsu sieciowego ( bootpd)
  • zarządzanie tłumaczeniem adresów IP (NAT) dla tych dynamicznie przypisywanych adresów ( natdw systemie Snow Leopard i natpmpdLion)

Udostępnianie Internetu nie pozwala skonfigurować MacOS X jako mostu IP. Zobacz man InternetSharing(dostępne w Snow Leopard, ale nie w Lion).

Byłby to zły pomysł: przede wszystkim ze względu na ryzyko związane z prostym, odważnym, przezroczystym mostem: wewnętrznie InternetSharingwykonuje:

sysctl -w 'net.inet.ip.forwarding=1'

co pozwala na przejście dowolnego ruchu IP. Aby złagodzić ten problem, tylko adresy IP przypisane do interfejsu dodatkowego przez bootpdi przetłumaczone przez natdlub natpmpdsą poprawnie przetłumaczone na zewnątrz.

dan
źródło
Dzięki za odpowiedź, Daniel. Dwa pytania: (1) Jaki jest Twój poziom pewności, że InternetSharing nie pozwala na wyłączenie DHCP (i czy możesz przedstawić jakieś dowody / zasoby)? (2) Czy możesz wyjaśnić, dlaczego uważasz, że byłby to zły pomysł? Jakie jest ryzyko, o którym mówisz? Znów docenione zostaną dowody i referencje. Dzięki
Matthew Boynes
Próbowałem poprawić wyjaśnienia dzięki twoim pytaniom.
dan
Strona podręcznika w szczególności mówi: „Szczegóły com.apple.nat.plist ... nie są tu w pełni udokumentowane”, więc jest całkiem możliwe, że istnieje ustawienie, które wyłączałoby DHCP. Niestety wciąż nie mamy twardych dowodów na to, czy można to zrobić. Dzięki za dodanie szczegółów mimo wszystko
Matthew Boynes
W rzeczywistości poszedłem dalej niż tylko przeczytanie zrzeczenia się odpowiedzialności na stronie podręcznika;). Jestem pewien, że nie ma backdoora do debugowania bez rozwidlenia bootpd. Ale przynajmniej możesz wypróbować -dopcję na liście.
dan
com.apple.natto nie to, co konfiguruje bootpd. /etc/bootpd.plistjest.
moskwa