我以前可以用 iproute2(ip 规则和 ip 路由)来做到这一点,但它已经被弃用了。
我现在找到了 tc-nat。来自手册页:
tc ... action nat DIRECTION OLD NEW
但是,使用时:
Command "nat" is unknown, try "tc actions help".
现在怎么办?全力投入 nftables 吧?
Ubuntu 18.04 LTS,内核 4.15.0-99-generic
答案1
通常的方法是使用iptables
(防火墙规则)。这是我使用的脚本(NAT作为“伪装”,使用网络接口的IP地址):
#!/bin/bash
# masquerade $1 (e.g. eth0, ppp0) as $2 (default wlan0)
INTIF="$1"
EXTIF=${2:-wlan0}
echo $INTIF $EXTIF
modprobe nf_conntrack
modprobe nf_conntrack_ipv4
modprobe nf_nat
modprobe iptable_nat
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
iptables -P INPUT ACCEPT
iptables -F INPUT
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -t nat -F
iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
一开始您可能不需要进行所有这些设置,但这并没有什么坏处。
这是“共享互联网”的常用应用,如果您需要更复杂的 NAT 设置,请编辑问题并描述详细信息。