OSX: Imitação de IP do Ubuntu Masquerading via iptables com ipfw

2

Bom dia,

Eu estou tentando replicar uma configuração que tenho entre um roteador e um PC Ubuntu, e tenho a mesma configuração trabalhando no meu MacBook (10.6, Snow Leopard).

Primeiro, eu tenho um roteador que tem uma porta USB. Quando eu conecto no meu PC Ubuntu, ele cria uma conexão RNDIS, permitindo que eu conecte ao roteador através do cabo USB através de uma conexão IP. Quando eu conecto em meu computador via USB, é atribuído um endereço IP de 172.16.84.1 e um novo adaptador aparece quando digito ifconfig . Eu posso então usar SSH no dispositivo via ssh [email protected] .

Quando eu faço login no dispositivo, libero as rotas e, em seguida, crie a rota padrão:

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

Agora, na minha máquina Ubuntu, eu uso o iptables para habilitar o mascaramento de IP:

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

Quando tudo isso for feito, o roteador terá acesso à Internet pela conexão USB ao meu PC.

Estou tentando replicar essa configuração exata no meu MacBook agora (Snow Leopard), mas o iptables não existe para o OSX, nem mesmo uma versão Macports existe. Eu vasculhei outras perguntas no StackOverflow que cobrem o uso do comando ipfw , que aparentemente funciona como um substituto direto para iptables . No entanto, a sintaxe é significativamente diferente e estou praticamente perdida.

Alguém com alguma experiência com ipfw tem algumas sugestões sobre como eu poderia realizar isso e criar uma conexão NAT via IP mascarada como eu poderia com meu PC Ubuntu?

Obrigado pela sua ajuda.

    
por DevNull 10.12.2012 / 23:19

2 respostas

1

bem, a maneira mais fácil de usar o OSX é simplesmente usar System Preferences - > Sharing - > Internet Sharing . Você verifica Internet Sharing e configura para que ele indique Share your connection from Ethernet 2 (como suponho que seu dispositivo de rede USB apareça como), To computers using Ethernet (como suponho que você queira que sua rede local esteja na Ethernet, caso contrário, escolha aeroporto ou qualquer coisa relevante ).

O jeito barbado de fazer isso é realmente usar ipfw e route. Uma simples pesquisa no google oferece um bom tutorial sobre os dois métodos no seguinte URL:

link (a forma de linha de comando é depois do modo GUI)

HTH

    
por 13.12.2012 / 20:06
1

por que você simplesmente não usa o compartilhamento de internet simples em você macosx? Preferências do Sistema > Compartilhamento > Compartilhamento de Internet

para regras do ipfw nat são (lats dizem que sua internet é en0 e interface local en1)

  1. sysctl -w net.inet.ip.fw.one_pass = 1 (você precisa ser root)
  2. sysctl -w net.inet.ip.forwarding = 1
  3. / sbin / ipfw add 1040 permite ip de qualquer para qualquer via en1 (permite tudo o que vai passar via interface local)
  4. / sbin / ipfw add desviar natd tudo de qualquer para qualquer via en0
  5. / sbin / ipfw add pass all from any para qualquer natd -interface en0 (onde en0 sua interface de saída)
  6. / usr / sbin / natd -interface en0 (próprio nat)
por 13.12.2012 / 20:06