NAT(网络地址转换)网关允许局域网内的多台设备通过一个公共IP地址访问互联网。以下是在Linux系统上配置NAT网关的详细步骤:
编辑/etc/sysctl.conf
文件:
sudo nano /etc/sysctl.conf
找到并取消注释或添加以下行:
net.ipv4.ip_forward=1
应用更改:
sudo sysctl -p
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
保存iptables规则(根据发行版不同):
- Debian/Ubuntu:
bash
sudo apt install iptables-persistent
sudo netfilter-persistent save
- CentOS/RHEL:
bash
sudo service iptables save
sudo nft add table ip nat
sudo nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
sudo nft add rule ip nat postrouting oifname "eth0" masquerade
保存nftables规则:
sudo nft list ruleset > /etc/nftables.conf
局域网内的客户端需要: 1. 将网关设置为NAT服务器的内部IP地址 2. DNS可以设置为公共DNS如8.8.8.8或使用ISP提供的DNS
如果要自动分配IP给客户端,可以安装DHCP服务器:
sudo apt install isc-dhcp-server # Debian/Ubuntu
sudo yum install dhcp # CentOS/RHEL
编辑/etc/dhcp/dhcpd.conf
:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
启动DHCP服务:
sudo systemctl start isc-dhcp-server
sudo systemctl enable isc-dhcp-server
sudo iptables -t nat -L -v -n
或sudo nft list ruleset
查看规则tcpdump
监控流量:sudo tcpdump -i eth0
无法访问互联网:
cat /proc/sys/net/ipv4/ip_forward
部分服务无法使用:
性能问题:
net.ipv4.tcp_window_scaling
通过以上步骤,您应该能够在Linux系统上成功配置NAT网关,使局域网内的设备共享一个公共IP地址访问互联网。