用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

以上都没问题后打开浏览器 一定能解析出来页面

posted @   Linux大魔王  阅读(1400)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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 热点速览」
点击右上角即可分享
微信分享提示