Я пишу пакеты из пользовательской космической программы на мой беспроводной интерфейс wlan0. Я установил правило SNAT с iptables следующим образом

iptables -t nat -A POSTROUTING -o wlan0 -j SNAT --to 192.168.1.3

И это работает для всего нормального трафика, выходящего из моей машины.

Я работаю над программой, которая использует необработанные сокеты на уровне 2 (эфир). Iptables не применяет SNAT к пакетам, отправленным этой программой.

Есть ли какой-нибудь способ, которым я могу записывать пакеты в пользовательском пространстве со 2-го уровня, и к ним все еще применяется NAT?

1 ответ1

0

необработанные сокеты получают копию исходного пакета до модификации (входящего). На исходящих все наоборот.

Таким образом, в действительности iptables обходит как Raw-сокеты в значительной степени стек IP, и, следовательно, iptables, потому что именно там он живет, и передает пакет прямо в приложение. затем прямо к тому, с чем это связано.

Поэтому, отвечая на ваш вопрос, нет, вы не можете применить к ним NAT, так как они никогда не проходят через iptables для применения правила

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