[freebsd] Завернуть запросы по номеру порта в туннел.
Mykola Dzham
i at levsha.me
Wed May 6 18:21:16 EEST 2020
> 6 трав. 2020 р. о 15:02 Nick Kostirya <nikolay.kostirya at i11.co> написав(ла):
>
> Привет.
>
> Возникла дома задачка.
> Есть сервера, на которых висят по два сервера.
> На один нужно ходить на прямую, на второй только через туннель.
> Решил звернуть в туннуль по номеру порта.
>
> Для ipfw прописал.
> port="9898"
> ${fwcmd} nat 1 config if tap0 reset same_ports
> ${fwcmd} add nat 1 ip from any ${port} to me via tap0
Cоветую всегда указывать in/out в правилах, чтобы понимать, что в случае транзита правило может проверяться дважды.
Поэтому это правило лучше записать как
${fwcmd} add nat 1 ip from any ${port} to me in recv tap0
> ${fwcmd} add nat 1 ip from me to any ${port} via tap0
Это правило тоже лучше применять только в одном направлении. И понимать, что пока не не сработало fwd правило, исходящий интерфейс будет тот, куда указывает роутинг, а это не обязательно tap0. Поэтому
${fwcmd} add nat 1 ip from me to any ${port} out
> ${fwcmd} add fwd 10.1.4.1 all from me to any ${port}
И тут тоже направление:
${fwcmd} add fwd 10.1.4.1 all from me to any ${port} out
>
>
> 10.1.4.1 - это tap0:
> inet 10.1.4.6 netmask 0xffffff00 broadcast 10.1.4.255
>
>
> sysctl net.inet.ip.forwarding=1
> sysctl net.inet.ip.fw.one_pass=1
И чтобы fwd правило сработало после nat правила как они описаны выше, one_pass нужно выключить.
> В /etc/rc.conf есть
> firewall_enable="YES"
> firewall_nat_enable="YES"
> firewall_script="/etc/ipfw.rules"
>
> Но работает как-то через раз.
Подозреваю что работает для транзитных пакетов, но не работает с самого сервера?
Потому что транзитные пакеты проходят через эти правила два раза.
> Может что-то не так прописал?
> _______________________________________________
> freebsd mailing list
> freebsd at uafug.org.ua
> http://mailman.uafug.org.ua/mailman/listinfo/freebsd
More information about the freebsd
mailing list