用linux做网关服务器
服务端IP:
eth0 192.168.0.223 //外网
eth1 172.16.0.1 //内网
注:因为我是用的虚机做的,自定义的IP,生产环境中按需配置IP
[root@bogon network-scripts]# uname -a
Linux bogon 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@bogon network-scripts]# cat /etc/centos-release
CentOS release 6.8 (Final)
服务端:
cd /etc/sysconfig/network-scripts/
vim ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:20:42:6C
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.0.223
NETMASK=255.255.255.0
cp ifcfg-eth0 ifcfg-eth1
vim ifcfg-eth1
DEVICE=eth1
HWADDR=00:0C:29:20:42:76 //这里的MAC执行ip a或ifconfig可获取 {这是虚机的获取方式}
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=172.16.0.1
NETMASK=255.255.255.0
ifup eth1
配置网关:
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=gateway //改个主机名
GATEWAY=192.168.0.1 //新添加
配置DNS:
vim /etc/resolv.conf
nameserver 219.141.xxx.xx //这里是公网上的DNS
nameserver 219.141.xxx.xx //上面是主,这个备
#####################################################################################
// 按需创建挂载点和挂载 //
mkdir /mnt/usb{1..3} //建立挂载点
cd /etc/yum.repos.d/
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak
vim CentOS-Media.repo
name=CentOS-$releasever - Media
baseurl=file:///mnt/usb1 //改为自己定义的光盘挂载点
# file:///media/cdrom/
# file:///media/cdrecorder/
gpgcheck=0
enabled=1
mount /dev/sr0 /mnt/usb1
#####################################################################################
开启转发:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 //原本是0,要改为1
sysctl -p //刷新内核,立即生效
防火墙配置:
setenforce 0
vim /etc/selinux/config //关闭selinux
SELINUX=disabled //改为disabled
实现控制方法及脚本:
[root@bogon ~]# mkdir /opop
[root@bogon ~]# cd /opop
[root@bogon opop]# vim gateway.sh
##########################################################################################
#!/bin/bash
FILE=/opop/mac_new.txt
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F
iptables -X
iptables -A INPUT -p tcp -s 192.168.0.49/24 --dport 1082 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
cat $FILE | while read ipad mac
do
iptables -A FORWARD -s $ipad -m mac --mac-source $mac -j ACCEPT
arp -s $ipad $mac
done
iptables -A FORWARD -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT #eth1 is local area network
iptables -t nat -A POSTROUTING -o eth0 -m iprange --src-range 172.16.0.1-172.16.0.254 -j SNAT --to 192.168.0.223
iptables -t nat -I POSTROUTING -s 172.16.0.0/24 -j SNAT --to-source 192.168.0.223
iptables -P INPUT DROP
iptables -P FORWARD DROP
service iptables save
chkconfig iptables on
#############################################################################################
[root@bogon opop]# chmod +x gateway.sh
[root@bogon opop]# vim mac_new.txt //这里的txt文件是和gateway.sh在同一个目录下
格式:172.16.0.15 00:0c:29:93:70:dd
写完之后再刷新一下gateway.sh脚本即可
************************************************************************************************************************
附加iptables的部分规则: 该部分是另外的部分,执行完上面的添加IP和mac后可以跳过该部分。继续执行下面的vim /etc/rc.local 命令
多个端口
iptables -A Filter -p tcp -m multiport --destination-port 22,53,80,110 -s 192.168.20.3 -j REJECT
指定时间上网
iptables -A Filter -s 10.10.10.253 -m time --timestart 6:00 --timestop 11:00 --days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j DROP
iptables -A Filter -m time --timestart 12:00 --timestop 13:00 --days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j ACCEPT
iptables -A Filter -m time --timestart 17:30 --timestop 8:30 --days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j ACCEPT
*************************************************************************************************************************
[root@bogon ~]# vim /etc/rc.local
modprobe nf_conntrack
modprobe ip_commtrack
设置和Windows网络时间同步:
[root@gateway ~]# service ntpd start
vi /etc/crontab
加上一句:
0 0 6 * * root ntpdate -s time.windows.com //按需定时间
[root@gateway ~]# service ntpd restart //!!!记得重启服务
设置ulimit值:
[root@gateway ~]# vim /etc/security/limits.conf
* soft nofile 32768
* hard nofile 65536
[root@gateway ~]# shutdown -r now //重启生效
[root@gateway ~]# ulimit -n //查看软
[root@gateway ~]# ulimit -a //查看所有
日志切割:
vim /etc/logrotate.conf
# keep 4 weeks worth of backlogs
rotate 4
加入下面一行(错误信息发送给root)
# send errors to root
errors root
compress选项去星号(表示用gzip打包)
//日志这块没细去整理,如果需要,屏幕前的您就自己找下相关的东西吧
######################################################################################
开始测试:
开一台centos6测试:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:D3:9F:8E
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=172.16.0.20 //和eth1网卡在同一个网段即可
NETMASK=255.255.255.0
GATEWAY=172.16.0.1
vim /etc/resolv.conf
nameserver 219.141.xxx.xx
nameserver 219.141.xxx.xx
service network restart
ping 172.16.0.1
ping 192.168.0.223
ping 192.168.0.1
ping www.baidu.com
dig www.baidu.com
curl www.baidu.com
等域名或IP进行测试
开一台win10系统测试:
桌面右击“网络”---“属性”---“更改是配置设置”---右击“Ethernet0”---“属性”---双击“Internet协议版本4(TCP/IPV4)”---选中“使用下面的IP地址”--->|
IP地址:172.16.0.30 //主机位设哪个都行
子网掩码:255.255.255.0
默认网关:172.16.0.1 //也就是服务端eth1网卡的地址
首选DNS服务器:219.141.xxx.xx //这里注意,是公司或个人从运营商那里拿到的公网上的DNS
备用DNS服务器:219.141.xxx.xx
打开cmd命令窗
ping 172.16.0.1
ping 192.168.0.1
ping www.baidu.com
nslookup www.baidu.com
以上都没问题后打开浏览器 一定能解析出来页面
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」